From: Jonas Bernoulli <jonas@bernoul.li>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: Emacs developers <emacs-devel@gnu.org>, Dmitry Gutov <dgutov@yandex.ru>
Subject: Re: git-handler.el
Date: Sat, 12 Aug 2017 12:48:22 +0200 [thread overview]
Message-ID: <877ey9cb9l.fsf@bernoul.li> (raw)
In-Reply-To: <87o9rmiems.fsf@detlef>
Michael Albinus <michael.albinus@gmx.de> writes:
> As a warmup, I have written vc-handler.el and vc-git-handler.el. They
> are far from being complete, but they'll show what's possible.
Great! I didn't have a change to look at this much yet, hope to get to
it in a week or so.
> A revisioned filename is something like "/path/to/file@@revision".
> "revision" could be a revision like "81656add81", a branch like
> "scratch/kqueue", or a tag like "emacs-19.34". Of course, the syntax
> could be changed.
I would prefer /path/to/repo/@git:REVISION:path/to/file. I don't have
a strong opinion about what the magic cookie should look like, but I
think it should be inserted at the root of the working tree.
> vc-handler.el is the common part. There is the alist
> `vc-file-name-handler-alist', which lists for every magic file name
> function the responsible handler function. The majority of them is also
> implemented in vc-handler.el, because they don't need any vcs specific
> handling.
>
> For every different backend, there could be a respective backend
> package. I've implemented vc-git-handler.el, because I know more about
> vc-git than magit. But there's no problem to implement vc-magit.el, for
> example. I plan also to write at least vc-cvs.el.
As I said I haven't looked at the code much yet, so I don't know what
the implications of having alternative handlers for the same vc would
be. But I fear that it would reduce interoperability. But packages
other than VC should be able to customize the behavior to some extend
and that could probably be implemented using a few hooks and *-function
variables.
> You might play a little bit to see how it looks like. Maybe the most
> simple start is to enter dired, because it uses many of the magic file
> name operations. Just do "C-x d ~/src/emacs/src/emacs.c@@" (supposed
> your Emacs git is located at ~/src/emacs, as in my case).
Speaking of Dired, trees (directories) should be supported in addition
to blobs (files), among other things that would allow visiting them in
Dired.
> Both packages are far from being complete. Performance is terrible (a
> proper cache mechanism is needed),
In what way is performance terrible? I would have expected that asking
git for information about one blob would not be that much more expensive
than asking the file-system for the same information about one file.
(I.e. the the difference would only become relevant if you needed
information about many files.)
> my git skill is restricted so I might
> not use the best commands, and you will see many TODO comments.
I will try to help with that, but I am a little busy right now.
> It's
> just a proof of concept. And I hope it is useful for both magit and vc.
I am sure we can get it there. Some more thoughts:
What happens when you visit say HEAD:file and then HEAD is updated? I
think this should behave much the same as for files that are modified on
disk. The user could then use `revert-buffer' to update the buffer.
You mentioned in another message that this is read-only. While that's a
good default, I think it should be possible for Magit or something else
to provide a `modified-p' and a `save-file' function by setting some
`*-function' variables.
It would help me and others that are not very familiar with VC's
internals to understand the file-handler parts if you could create one
commit that implements those parts without taking advantage of any
caching provided by VC and then add that caching in a separate commit.
Cheers,
Jonas
Ps: I'll probably be unavailable for a few days.
next prev parent reply other threads:[~2017-08-12 10:48 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-05 15:29 In support of Jonas Bernoulli's Magit (was: comparing code on different branches) John Yates
2017-07-05 16:15 ` Kaushal Modi
2017-07-05 16:22 ` In support of Jonas Bernoulli's Magit Óscar Fuentes
2017-07-05 16:27 ` Kaushal Modi
2017-07-05 16:38 ` Stefan Monnier
2017-07-05 18:15 ` Óscar Fuentes
2017-07-05 23:03 ` Richard Stallman
2017-07-06 0:24 ` Clément Pit-Claudel
2017-07-06 1:46 ` Glenn Morris
2017-07-06 2:17 ` Clément Pit-Claudel
2017-07-10 9:26 ` Richard Stallman
2017-07-06 2:29 ` Jean-Christophe Helary
2017-07-14 14:34 ` Philippe Vaucher
2017-07-16 1:51 ` Richard Stallman
2017-07-06 1:50 ` Glenn Morris
2017-07-06 14:12 ` Ted Zlatanov
2017-07-06 14:47 ` Kaushal Modi
2017-07-06 17:11 ` Óscar Fuentes
2017-07-06 16:02 ` Richard Stallman
2017-07-06 16:52 ` Ken Manheimer
2017-07-07 18:23 ` Richard Stallman
2017-07-07 18:49 ` Stefan Monnier
2017-07-07 22:08 ` Phillip Lord
2017-07-07 22:22 ` Stefan Monnier
2017-07-08 6:58 ` Eli Zaretskii
2017-07-08 6:57 ` Eli Zaretskii
2017-07-08 9:05 ` Phillip Lord
2017-07-08 10:20 ` Eli Zaretskii
2017-07-08 20:34 ` Phillip Lord
2017-07-09 2:33 ` Eli Zaretskii
2017-07-10 9:28 ` Richard Stallman
2017-07-10 13:15 ` Phillip Lord
2017-07-11 11:45 ` Richard Stallman
2017-07-08 17:04 ` Richard Stallman
2017-07-08 20:52 ` Phillip Lord
2017-07-10 9:30 ` Richard Stallman
2017-07-08 17:02 ` Richard Stallman
2017-07-10 9:26 ` Richard Stallman
2017-07-10 12:47 ` Phillip Lord
2017-07-10 23:26 ` Richard Stallman
2017-07-11 9:40 ` Phillip Lord
2017-07-11 22:56 ` Richard Stallman
2017-07-10 23:27 ` Richard Stallman
2017-07-10 16:31 ` Marcin Borkowski
2017-07-10 23:30 ` Richard Stallman
2017-07-11 4:20 ` Marcin Borkowski
2017-07-11 11:48 ` Richard Stallman
2017-07-06 23:01 ` Dmitry Gutov
2017-07-07 18:27 ` Richard Stallman
2017-07-07 18:52 ` Stefan Monnier
2017-07-08 17:01 ` Richard Stallman
2017-07-08 17:42 ` raman
2017-07-08 18:58 ` Eli Zaretskii
2017-07-08 20:57 ` Phillip Lord
2017-07-08 22:57 ` John Yates
2017-07-09 0:04 ` raman
2017-07-09 9:25 ` Marcin Borkowski
2017-07-09 14:19 ` Eli Zaretskii
2017-07-10 1:01 ` In defense of VC [was: In support of Jonas Bernoulli's Magit] Juliusz Chroboczek
2017-07-10 7:09 ` Michael Albinus
2017-07-10 8:34 ` Lars Ingebrigtsen
2017-07-10 8:47 ` Juliusz Chroboczek
2017-07-10 8:59 ` Yuri Khan
2017-07-10 16:28 ` Marcin Borkowski
2017-07-10 17:12 ` Eli Zaretskii
2017-07-16 18:01 ` Dmitry Gutov
2017-07-16 19:09 ` Marcin Borkowski
2017-07-16 19:17 ` Dmitry Gutov
2017-07-10 23:26 ` Richard Stallman
2017-07-11 4:15 ` Marcin Borkowski
2017-07-11 11:48 ` Richard Stallman
2017-07-11 14:10 ` Marcin Borkowski
2017-07-11 14:27 ` Juliusz Chroboczek
2017-07-11 22:56 ` Richard Stallman
2017-07-11 14:37 ` Eli Zaretskii
2017-07-11 16:03 ` Dmitry Gutov
2017-07-11 7:10 ` Andreas Schwab
2017-07-11 7:26 ` Michael Albinus
2017-07-11 22:55 ` Richard Stallman
2017-07-10 9:29 ` In support of Jonas Bernoulli's Magit Richard Stallman
2017-07-10 16:32 ` Marcin Borkowski
2017-07-10 23:30 ` Richard Stallman
2017-07-11 4:14 ` Marcin Borkowski
2017-07-06 15:24 ` Phillip Lord
2017-07-10 9:26 ` Richard Stallman
2017-07-10 13:09 ` Phillip Lord
2017-07-11 11:45 ` Richard Stallman
2017-07-05 16:29 ` Stefan Monnier
2017-07-05 18:37 ` Ingo Lohmar
2017-07-05 18:14 ` In support of Jonas Bernoulli's Magit (was: comparing code on different branches) Noam Postavsky
2017-07-06 5:06 ` Paul Michael Reilly
2017-07-06 8:46 ` In support of Jonas Bernoulli's Magit Toon Claes
2017-07-07 1:38 ` Mike Gerwitz
2017-07-07 8:16 ` Trying out GitLab (was Re: In support of Jonas Bernoulli's Magit) Nicolas Petton
2017-07-07 8:27 ` Tino Calancha
2017-07-07 8:29 ` Nicolas Petton
2017-07-07 12:08 ` Ted Zlatanov
2017-07-08 11:02 ` Ævar Arnfjörð Bjarmason
2017-07-08 11:13 ` Dmitry Gutov
2017-07-08 11:53 ` Eli Zaretskii
2017-07-08 12:04 ` Dmitry Gutov
2017-07-08 21:02 ` Phillip Lord
2017-07-08 23:19 ` Tim Cross
2017-07-08 12:43 ` Ævar Arnfjörð Bjarmason
2017-07-08 12:54 ` Eli Zaretskii
2017-07-08 11:29 ` Jean-Christophe Helary
2017-07-07 16:55 ` Mike Gerwitz
2017-07-07 18:23 ` In support of Jonas Bernoulli's Magit Richard Stallman
2017-07-07 18:23 ` In support of Jonas Bernoulli's Magit (was: comparing code on different branches) Richard Stallman
2017-07-13 16:13 ` Jonas Bernoulli
2017-07-14 1:20 ` Richard Stallman
2017-07-14 18:24 ` Jonas Bernoulli
2017-07-14 3:31 ` In support of Jonas Bernoulli's Magit Stefan Monnier
2017-07-14 18:09 ` Jonas Bernoulli
2017-07-14 7:14 ` git-handler.el (was: In support of Jonas Bernoulli's Magit) Michael Albinus
2017-07-14 17:57 ` Jonas Bernoulli
2017-08-11 10:26 ` git-handler.el Michael Albinus
2017-08-12 10:48 ` Jonas Bernoulli [this message]
2017-08-12 12:01 ` git-handler.el Eli Zaretskii
2017-08-12 17:26 ` git-handler.el Jonas Bernoulli
2017-08-12 17:43 ` git-handler.el Eli Zaretskii
2017-08-12 19:32 ` git-handler.el Michael Albinus
2017-08-12 18:22 ` git-handler.el John Wiegley
2017-08-12 18:28 ` git-handler.el Michael Albinus
2017-08-12 19:52 ` git-handler.el Jonas Bernoulli
2017-08-13 9:26 ` git-handler.el Michael Albinus
2017-08-12 19:17 ` git-handler.el Michael Albinus
2017-08-12 19:46 ` git-handler.el Yuri Khan
2017-08-13 9:14 ` git-handler.el Michael Albinus
2017-08-13 10:08 ` git-handler.el Yuri Khan
2017-08-13 14:31 ` git-handler.el Eli Zaretskii
2017-08-13 15:08 ` git-handler.el Yuri Khan
2017-08-13 15:26 ` git-handler.el Eli Zaretskii
2017-08-14 16:42 ` git-handler.el Michael Albinus
2017-08-14 16:40 ` git-handler.el Michael Albinus
2017-07-10 16:16 ` In support of Jonas Bernoulli's Magit (was: comparing code on different branches) Filipe Silva
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877ey9cb9l.fsf@bernoul.li \
--to=jonas@bernoul.li \
--cc=dgutov@yandex.ru \
--cc=emacs-devel@gnu.org \
--cc=michael.albinus@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.