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

Re: Revision resolution for remote-helpers?

From
Mike Hommey <mh@glandium.org>
Date
Aug 18, 2017, 22:17 UTC
Message-ID
<20170818221754.3rbh35aewj5xnu4z@glandium.org>
In-Reply-To
<20170818220637.GN13924@aiede.mtv.corp.google.com>
On Fri, Aug 18, 2017 at 03:06:37PM -0700, Jonathan Nieder wrote:
Show 25 quoted lines
> Hi,
> 
> Mike Hommey wrote:
> 
> > My thought is that a string like <helper>::<revision> could be used
> > wherever a committish is expected. That would call some helper
> > and request to resolve revision, and the helper would provide a git
> > commit as a response.
> 
> I like this idea.
> 
> > The reason for the <helper>:: prefix is that it matches the <helper>::
> > prefix used for remote helpers.
> >
> > Now, there are a few caveats:
> > - <revision>, for e.g. svn, pretty much would depend on the remote.
> >   OTOH, in mercurial, it doesn't. I think it would be fair for the
> >   helper to have to deal with making what appears after :: relevant
> >   to find the right revision, by possibly including a remote name.
> > - msys likes to completely fuck up command lines when they contain ::.
> >   For remote helpers, the alternative that works is
> >   <helper>://<host>/etc.
> 
> Hm --- is there a bug already open about this (e.g. in the Git for
> Windows project or in msys) where I can read more?

It's entirely an msys problem. Msys has weird rules to translate between unix paths and windows paths on the command line, and botches everything as a consequence. That's by "design".

http://www.mingw.org/wiki/Posix_path_conversion
(Particularly, see the last two entries)

That only happens when calling native Windows programs from a msys shell.

Show 26 quoted lines
> > Which leads me to think some "virtual" ref namespace could be a solution
> > to the problem. So instead of <helper>::, the prefix would be <helper>/.
> > For e.g. svn, svn/$remote/$rev would be a natural way to specify the
> > revision for a given remote. For mercurial, hg/$sha1.
> 
> I see.  My naive assumption would be that a string like r12345 would be
> the most natural way for a user to want to specify a Subversion
> revision, but you're right that those only have meaning scoped to a
> particular server.  That makes the svn/ prefix more tolerable.
> 
> > Potentially, this could be a sort of pluggable ref stores, which could
> > be used for extensions such as the currently discussed reftable.
> >
> > On the opposite end of the problem, I'm also thinking about git log
> > --decorate=<helper> displaying the mercurial revisions where branch
> > decorations would normally go.
> >
> > I have no patch to show for it. Those are ideas that I first want to
> > discuss before implementing anything.
> 
> One additional thought: unlike refs, these are not necessarily
> enumerable (and I wouldn't expect "git show-ref" to show them) and
> they do not affect "git prune"'s reachability computation.
> 
> So internally I don't think refs is the right concept to map these to.
> I think the right layer is revision syntax handling (revision.c).
Makes sense.
Mike
Previous: Jonathan NiederNext: Jonathan Nieder
Message 5 of 11 in “Revision resolution for remote-helpers?”
  1. Mike HommeyAug 18, 2017
  2. Jeff KingAug 18, 2017
  3. Mike HommeyAug 18, 2017
  4. Jonathan NiederAug 18, 2017
  5. Mike HommeyAug 18, 2017
  6. Jonathan NiederAug 18, 2017
  7. Johannes SchindelinAug 22, 2017
  8. Mike HommeyAug 24, 2017
  9. Johannes SchindelinAug 25, 2017
  10. Mike HommeyAug 25, 2017
  11. Mike HommeySep 21, 2017

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.