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

Revision resolution for remote-helpers?

From
Mike Hommey <mh@glandium.org>
Date
Aug 18, 2017, 06:42 UTC
Message-ID
<20170818064208.plkppke7efpucuwm@glandium.org>
Hi,

As you might remember, I'm maintaining a remote helper that allows to talk directly to mercurial servers with git: git-cinnabar.

When dealing with "foreign (non-git) repositories", it is often necessary to refer to revisions with their native name. With mercurial, that's a sha1, with svn it's a revision number, etc.

Git-cinnabar does provide a helper command that gives back the git commit from the mercurial revision (and vice versa), but that's cumbersome to use in commands.

I was thinking it could be useful to have a special syntax for revisions that would query a helper program. The helper program could use a similar protocol to that of the remote helpers.

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.

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.

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.

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.

Thoughts?
Mike
Next: Jeff King
Message 1 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.