All of lore.kernel.org
 help / color / mirror / Atom feed
* Plugin mechanism(s) for Git?
@ 2016-07-15  6:46 Christian Couder
  2016-07-15  7:37 ` Lars Schneider
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Christian Couder @ 2016-07-15  6:46 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Jeff King, Nguyen Thai Ngoc Duy,
	Michael Haggerty, Johannes Schindelin, David Turner, Ben Peart,
	Joey Hess, Lars Schneider, Ronnie Sahlberg,
	Ævar Arnfjörð Bjarmason

Hi,

It seems to me that there are many current topics/patch series in
flight that are about making Git interact with external code/processes
and that it could be interesting to step back a bit and see if we
could find a common approach/mechanism for at least some of these
current topics.

(This is also inspired by private discussions with AEvar, thanks to
him, and by the fact that I am now also working for GitLab on the long
run on external ODB for large file support.)

The current topics/work I can think of are:

- the ref backend work by Michael based on Ronnie Sahlberg's and others' work,
- the smudge/clean filters work by Joey and Lars,
- the watchman/index helper work by David, Duy and Ben,
- the external ODB work by Peff and myself.

They all have a need to talk to potentially different
backends/external processes and this need is potentially not well
satisfied by the usual mechanism that Git has traditionally used which
is to have one or a few commands configured and to just launch the
command(s) for each file or object, like what "git difftool" and "git
mergetool" do.

One reason that the traditional mechanism might not work well is of
course performance. This traditional mechanism still is very
interesting because it is very easy to setup and experiment with.

One way to extend it for better performance is to require that the
configured command should be able to deal with a number or a stream of
files or objects (instead of just one objec/file) that are passed to
it. It looks like that is what Lars wants for smudge/clean filters.

Another way is to have the external command run as a daemon, like what
Duy and David implemented for the index-helper.

And a more integrated way is to require the external code to implement
an API and to be compiled along with Git which looks like the approach
taken by the ref backend work.

If people think that evolution is better than intelligent design, and
want each current topic/work to just implement what is best for it,
then that's ok for me. If on the other hand standardizing on some ways
to interact with external processes could be helpful to avoid
duplicating mechanisms/code in slightly different and incompatible
ways, then I would be happy to discuss it in a thread that is not
specific to one of the current work.

Thanks,
Christian.

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-07-16  8:07 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-15  6:46 Plugin mechanism(s) for Git? Christian Couder
2016-07-15  7:37 ` Lars Schneider
2016-07-15 16:18   ` Ben Peart
2016-07-15 16:47     ` Konstantin Khomoutov
2016-07-15 21:28       ` Eric Wong
2016-07-16  5:31         ` Duy Nguyen
2016-07-16  8:06           ` Jeff King
2016-07-15  8:04 ` Mike Hommey
2016-07-15  8:28 ` Junio C Hamano
2016-07-15 12:18 ` Jeff King
2016-07-15 12:46   ` Ævar Arnfjörð Bjarmason
2016-07-15 13:32     ` Jeff King
2016-07-15 15:52       ` Ben Peart

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.