git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC/PATCH 0/6] Graceful handling of missing remote helpers

From
Johan Herland <johan@herland.net>
Date
Aug 11, 2009, 10:10 UTC
Message-ID
<1249985426-13726-1-git-send-email-johan@herland.net>
In-Reply-To
<alpine.LNX.2.00.0908101205120.27553@iabervon.org>
On Mon, 10 Aug 2009, Daniel Barkalow wrote:
Show 15 quoted lines
> > > In order to support this, there just needs to be a call to check whether
> > > "remote-<something>" is an available git command (without running it or
> > > giving an error), and the helper code should be used if it is. This is
> > > actually required so that people with workstations whose domain is
> > > .kernel.org and who have cloned "master:/home/linus/something.git" don't
> > > start getting "remote-master isn't a git command" errors (that is,
> > > misinterpreting ssh-format location hostnames as helper names. Johan,
> > > perhaps you could write that for your CVS helper?
> >
> > Sorry, not following you here. Write exactly what?
> >
> > - The code in the transport layer for checking if "remote-<something>"
> >   is an available git command?
>
> That's what I was thinking.

Ok, I've spent way too much time on this, so if this doesn't cut it, I leave it up to someone else to pick up the pieces.

The following patch series implements what I understand to be the current consensus (or at least a good compromise) in this thread:

- There are two ways to indicate that a remote helper should be used:
  1. remote.foo.vcs = <something>
  2. remote.foo.url starts with "<something>:"
  If both are present, remote.foo.vcs is preferred.
- Teach transport_helper_init() to check if "remote-<something>" is an
  available git command. If so, use it. If not, gracefully abort the
  transport-helper setup, and fall back to the "native" transport code.
- Skip the transport-helper code is the remote is obviously "native" (i.e.
  URL starts with "git:"/"file:"/"ssh:"/"rsync:")
AFAICS this should make Daniel happy because his P4 setup will still work, and
it should also make Dscho happy, since he can tell people to
  "git clone cvs::pserver:anonymous@cool.haxx.se:/cvsroot/curl#curl"
(of course, this depends on the CVS helper supporting remote.foo.url, which it
will, in a future iteration)
The non-trivial part of the series is in patch #5.

Implementing the rsync handling as another remote helper program is left as an exercise for the reader...

Have fun! :)
...Johan
Johan Herland (6):
  Minor unrelated fixes
  transport_get(): Don't SEGFAULT on missing url
  Move setup of curl remote helper from transport.c to transport-helper.c
  Add is_git_command_or_alias() for checking availability of a given git command
  Let transport_helper_init() decide if a remote helper program can be used
  Add testcase to verify handling of missing remote helper programs
 help.c                           |   23 ++++++++++++-
 help.h                           |    2 +
 t/t5590-remote-helper-missing.sh |   56 +++++++++++++++++++++++++++++++
 transport-helper.c               |   67 +++++++++++++++++++++++++++++++++++--
 transport.c                      |   56 ++++++-------------------------
 5 files changed, 154 insertions(+), 50 deletions(-)
 create mode 100755 t/t5590-remote-helper-missing.sh
Previous: Daniel BarkalowNext: Johan Herland
Message 7 of 35 in “Add a config option for remotes to specify a foreign vcs”
  1. 5/8 Add a config option for remotes to specify a foreign vcsDaniel Barkalow, Aug 9, 2009
  2. Johannes SchindelinAug 9, 2009
  3. Junio C HamanoAug 10, 2009
  4. Daniel BarkalowAug 10, 2009
  5. Johan HerlandAug 10, 2009
  6. Daniel BarkalowAug 10, 2009
  7. 0/6 Graceful handling of missing remote helpersJohan Herland, Aug 11, 2009
  8. 1/6 Minor unrelated fixesJohan Herland, Aug 11, 2009
  9. 2/6 transport_get(): Don't SEGFAULT on missing urlJohan Herland, Aug 11, 2009
  10. Junio C HamanoAug 12, 2009
  11. Johan HerlandAug 12, 2009
  12. 3/6 Move setup of curl remote helper from transport.c to transport-helper.cJohan Herland, Aug 11, 2009
  13. Johannes SchindelinAug 11, 2009
  14. 4/6 Add is_git_command_or_alias() for checking availability of a given git commandJohan Herland, Aug 11, 2009
  15. Johannes SchindelinAug 11, 2009
  16. 5/6 Let transport_helper_init() decide if a remote helper program can be usedJohan Herland, Aug 11, 2009
  17. Johannes SchindelinAug 11, 2009
  18. Daniel BarkalowAug 11, 2009
  19. Jeff KingAug 12, 2009
  20. Daniel BarkalowAug 12, 2009
  21. 6/6 Add testcase to verify handling of missing remote helper programsJohan Herland, Aug 11, 2009
  22. Junio C HamanoAug 11, 2009
  23. Johannes SchindelinAug 11, 2009
  24. Junio C HamanoAug 10, 2009
  25. Bert WesargAug 11, 2009
  26. Johannes SchindelinAug 11, 2009
  27. Jeff KingAug 11, 2009
  28. Johannes SchindelinAug 11, 2009
  29. Jeff KingAug 12, 2009
  30. Jakub NarebskiAug 12, 2009
  31. Junio C HamanoAug 12, 2009
  32. Jakub NarebskiAug 13, 2009
  33. Jeff KingAug 11, 2009
  34. Johannes SchindelinAug 12, 2009
  35. Junio C HamanoAug 12, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.