git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jon Seymour <jon.seymour@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Jonathan Nieder <jrnieder@gmail.com>,
	Joey Hess <joey@kitenet.net>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: RFC: a plugin architecture for git extensions?
Date: Thu, 28 Apr 2011 10:50:47 +1000	[thread overview]
Message-ID: <BANLkTi=w0aKH6dxu84i4DjkL-vNCWQi8pw@mail.gmail.com> (raw)
In-Reply-To: <7viptz5j82.fsf@alter.siamese.dyndns.org>

On Thu, Apr 28, 2011 at 10:10 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Jonathan Nieder <jrnieder@gmail.com> writes:
>
>> Right, my worry was based on the usual way programs find their way
>> onto my $PATH.  That is:
>>
>>  - if they are installed via a package from the distro, they are in
>>    /usr/bin.
>>
>>  - if they are installed with "make install" by the local sysadmin for
>>    all users, they are in /usr/local/bin.
>>
>>  - if I am trying them out for myself, they are in $HOME/opt/foo/bin
>>    and when it is time to remove it, "rm -fr $HOME/opt/foo".
>>
>>  - if I have adopted them, symlinks go in $HOME/bin.
>>
>> With a local gcc-4.6 in $HOME/bin, if the sysadmin upgrades gcc so
>> gcc-4.6 is to appear in /usr/bin or /usr/local/bin, my setup still
>> works without trouble.  So, barring bugs, each installation method
>> does not interfere with the other ones.
>>
>> Call it overengineering, but I would want a way for installing new git
>> commands to have the same attributes (installable by normal users in
>> multiuser systems and name conflicts not being a terrible
>> administrative burden).
>
> Ok, I wasn't thinking about folks who use repackaged /usr/bin/git together
> with their own choice of third-party enhancements.
>
> Probably we would be better off if we define a new set of paths that is
> independent from GIT_EXEC_PATH and friends.  The installed git and nothing
> else will occupy GIT_EXEC_PATH etc., but at the runtime, git would look at
> a user-writable location GIT_PLUGIN_PATH/{bin,man,...} to see if the user
> has her own customization, and add them to its vocabulary.
>
> Or something like that.  I am not all that interested, but it feels like a
> good direction.
>

I agree. Apologies for confusing things by talking too much about a
git pm install command.

I think there are 3 levels of functionality. FWIW, I am suggesting
git-core stops at #2.

0. unmanaged plugins

git doesn't provide any explicit management of plugins, but will use
them if finds them.

Without some kind of management, however, you will be forced to dump
the man pages and scripts
for the plugins in one place.

This would be very distribution manager unfriendly since there could
be conflicts galore.

I guess an unmanaged solution could use separate directories for each
plugin, but this would imply scanning all these paths each time you
invoke git. In my view, symbolic links from a dir already
GIT_EXEC_PATH to plugin directories would be a more efficient way to
do this.

1. managed plugins

git provides minimal plugin management functionality. Each plugin has
its own directory, but an activate step is required to make the plugin
available to the GIT_EXEC_PATH and GIT_MAN_PATH.

This has the advantage that conflicts between plugins would be more
readily avoided and is potentially more performant. As Pau suggests,
this option is much more package manager friendly

It probably does require a git plugin command of some kind, however,
in order to perform the activation step.

2. managed packages

A meta-package manager for plugins, that delegates plugin installation
concerns to a platform package manager.

The thing is, you may absolutely hate #2, but if approach #1 is
adopted by git-core, someone can at least attempt this by, well,
writing a plugin for it.

jon.

  reply	other threads:[~2011-04-28  0:50 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-27  3:36 RFC: a plugin architecture for git extensions? Jon Seymour
2011-04-27  3:58 ` Jonathan Nieder
2011-04-27  5:06   ` Jon Seymour
2011-04-27  5:07 ` Junio C Hamano
2011-04-27  5:10   ` Jon Seymour
2011-04-27  5:17     ` Junio C Hamano
2011-04-27  5:33       ` Jon Seymour
2011-04-27  5:37         ` Jon Seymour
2011-04-27  5:39         ` Junio C Hamano
2011-04-27  5:42           ` Jon Seymour
2011-04-27  7:15           ` Jon Seymour
2011-04-27  7:57             ` Michael J Gruber
2011-04-27  8:15               ` Jon Seymour
2011-04-27  8:40                 ` Jon Seymour
2011-04-27  9:36                   ` Motiejus Jakštys
2011-04-27  9:59                     ` Jon Seymour
2011-04-27 10:48                       ` Motiejus Jakštys
2011-04-27 10:21             ` Carlos Martín Nieto
2011-04-27 10:44               ` Jon Seymour
2011-04-27 11:38         ` Fredrik Gustafsson
2011-04-27 11:57           ` Jon Seymour
2011-04-27 22:32         ` Pau Garcia i Quiles
2011-04-27 22:47           ` Jon Seymour
2011-04-27 11:01 ` Ævar Arnfjörð Bjarmason
2011-04-27 11:42   ` Jon Seymour
2011-05-13 19:32     ` Enrico Weigelt
2011-04-27 12:08 ` Andreas Ericsson
2011-04-27 12:50   ` Jon Seymour
2011-04-27 13:07     ` Felipe Contreras
2011-04-27 13:59       ` Jon Seymour
2011-04-27 14:52     ` Andreas Ericsson
2011-04-27 15:36       ` Jon Seymour
2011-04-27 16:13         ` Jon Seymour
2011-04-27 17:07           ` A Large Angry SCM
2011-04-28  3:07             ` Jon Seymour
2011-04-28  3:26               ` Jon Seymour
2011-04-28  5:04                 ` Jon Seymour
2011-04-28  6:15                   ` Jon Seymour
2011-04-28 16:16               ` david
2011-04-29  3:35                 ` Jon Seymour
2011-04-27 19:16           ` Motiejus Jakštys
2011-04-27 19:19             ` Motiejus Jakštys
2011-04-27 17:34       ` Junio C Hamano
2011-04-27 18:28         ` Junio C Hamano
2011-04-27 18:49           ` Drew Northup
2011-04-27 19:42             ` Joey Hess
2011-04-27 20:16               ` Drew Northup
2011-04-27 21:38               ` Junio C Hamano
2011-04-27 22:08                 ` Jonathan Nieder
2011-04-27 22:32                   ` Jon Seymour
2011-04-28  9:07                     ` Andreas Ericsson
2011-04-27 23:27                   ` Junio C Hamano
2011-04-27 23:42                     ` Jonathan Nieder
2011-04-28  0:10                       ` Junio C Hamano
2011-04-28  0:50                         ` Jon Seymour [this message]
2011-04-28  0:54                           ` Jon Seymour
2011-04-28  0:55                           ` david
2011-04-28  2:08                             ` Jon Seymour
2011-04-28  2:15                               ` Jon Seymour
2011-04-28  2:49                                 ` Jon Seymour
2011-04-28  9:25                                   ` Andreas Ericsson
2011-04-28 10:56                                     ` Jon Seymour
2011-04-28 11:11                                       ` Jonathan Nieder
2011-04-28 11:20                                         ` Jon Seymour
2011-05-05 21:41                                       ` David Aguilar
2011-05-05 21:53                                         ` Junio C Hamano
2011-05-05 23:51                                           ` Jon Seymour
2011-05-06  4:47                                             ` Junio C Hamano
2011-05-06  6:20                                               ` Jon Seymour
2011-05-06  6:56                                                 ` Jonathan Nieder
2011-05-06  7:03                                                   ` Jonathan Nieder
2011-05-06 14:07                                                   ` Jon Seymour
2011-05-06 14:17                                                     ` Jonathan Nieder
2011-05-06 14:29                                                       ` Jon Seymour
2011-05-06 14:50                                                         ` Jonathan Nieder
2011-05-08  4:28                                                           ` Jon Seymour
2011-05-08  6:49                                                             ` Jonathan Nieder
2011-05-08  7:42                                                               ` Jon Seymour
2011-05-06 17:23                                                     ` Jeff King
2011-05-07  8:24                                                       ` John Szakmeister
2011-05-08  4:44                                                       ` Jon Seymour
2011-05-09  7:35                                                         ` Jeff King
2011-05-09  7:49                                                           ` Jon Seymour
2011-05-09  8:12                                                             ` Jeff King
2011-05-09  8:45                                                               ` Jon Seymour
2011-05-09 10:44                                                                 ` Jeff King
2011-05-09 11:07                                                                   ` Jon Seymour
2011-05-09 11:13                                                                     ` Jon Seymour
2011-05-09 11:24                                                                     ` Jeff King
2011-05-09 11:28                                                                       ` Jon Seymour
2011-05-09 12:21                                                                         ` Jeff King
2011-05-09 22:50                                                                           ` Jon Seymour
2011-05-08 13:13                                                   ` Jon Seymour
2011-05-09  4:36                                           ` Miles Bader
2011-05-14 12:51                                             ` David Aguilar
2011-04-28  9:11                                 ` Andreas Ericsson
2011-04-28 10:38                                   ` Jon Seymour
2011-04-28  7:40                               ` Pau Garcia i Quiles
2011-04-28  8:09                                 ` Jon Seymour
2011-04-28  9:11                                   ` Pau Garcia i Quiles
2011-04-28  9:42                                     ` Jon Seymour
2011-04-28  0:06                     ` Jon Seymour
2011-04-28  0:08                       ` Jon Seymour
2011-04-27 21:29 ` Motiejus Jakštys
2011-04-27 21:47   ` Jon Seymour

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='BANLkTi=w0aKH6dxu84i4DjkL-vNCWQi8pw@mail.gmail.com' \
    --to=jon.seymour@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=joey@kitenet.net \
    --cc=jrnieder@gmail.com \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).