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

Re: [PATCH v5 00/14] New remote-hg helper

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Oct 30, 2012, 18:29 UTC
Message-ID
<CAMP44s3LY0m14LkuRHhbMTqsgD=t1Xw+KLsac9e=tgpnhGc+NA@mail.gmail.com>
In-Reply-To
<20121030180021.GX26850@arachsys.com>
On Tue, Oct 30, 2012 at 7:00 PM, Chris Webb <chris@arachsys.com> wrote:
Show 35 quoted lines
> Felipe Contreras <felipe.contreras@gmail.com> writes:
>
>> Yes, it seems this is an API issue; repo.branchtip doesn't exist in
>> python 2.2.
>
> Hi. Presumably this is a problem with old mercurial not a problem with old
> python as mentioned in the commit?
>
>> Both issues should be fixed now :)
>
> They are indeed, and it now works nicely on all the repos I've tested it
> with, including http://selenic.com/hg: very impressive!
>
> I wonder whether it's worth ignoring heads with bookmarks pointing to them
> when it comes to considering heads of branches, or at least allowing the
> hg branch tracking to be easily disabled?
>
> A common idiom when working with hg bookmarks is to completely ignore the
> (not very useful) hg branches (i.e. all commits are on the default hg
> branch) and have a bookmark for each line of development used exactly as a
> git branch would be.
>
> On such a repository, at the moment you will always get a warning about
> multiple heads on branches/default, even though you actually don't care
> about branches/default (and would prefer it not to exist) and just want the
> branches coming from the bookmarks.
>
> I've also seen repositories with no hg branches, but with a single
> unbookmarked tip and bookmarks on some other heads to mark non-mainline
> development. It would be nice for branches/default to track the unbookmarked
> tip in this case, without warning about the other, bookmarked heads.
>
> Finally, on a simple repo with no branches and where there's no clash with a
> bookmark called master, I'd love to be able to a get a more idiomatic
> origin/master rather than origin/branches/default.

Sounds like you might want to try this: % git config --global remote-hg.hg-git-compat true

This would match the behavior of hg-git, which seems to be what you are looking for: branches will be ignored. But additionally there will be other obtrusive changes:

 1) Extra information will be stored in the commit message: branch,
renames, extra info.

Personally I don't like this, which is why it's only enabled with the hg-git compat mode. Eventually there will be support for this in the normal mode through git notes, and eventually (hopefully), hg-git will use notes as well.

 2) Authors will be fixed trying to preserve as much information as possible

The problem with this mode is what happens when there are no bookmarks, and what I decided to do is create a fake bookmark to the current branch (e.g. default), so you would get 'origin/default', but you will be warned if there are multiple heads. We could try to create a 'master' ref to the 'tip', but that might not be what the user wants: (s)he might switch to a certain branch, and clone the repository in git; currently the result working directory would be the same as in hg, but if we point to 'tip', then it would not.

Maybe we should have a branch pointing to 'tip' either way.

The reason I decided on having 'branches/default' on the normal mode is that users unfamiliar with mercurial might expect to see all the branches somewhere. But perhaps that should happen only for other branches, while 'default' gets a special treatment and gets promoted to 'origin/master' but only if there's no 'master' bookmark, as you say. Now the tricky part would be handling the case where there was no 'master' bookmark, and suddenly one gets created, but it might be overkill to think about that right now.

Either way, try the hg-git-compat mode, should be close :)
Cheers.
-- 
Felipe Contreras
Previous: Chris WebbNext: Felipe Contreras
Message 21 of 26 in “New remote-hg helper”
  1. 00/14 New remote-hg helperFelipe Contreras, Oct 30, 2012
  2. 01/14 Add new remote-hg transport helperFelipe Contreras, Oct 30, 2012
  3. 02/14 remote-hg: add support for bookmarksFelipe Contreras, Oct 30, 2012
  4. 03/14 remote-hg: add support for pushingFelipe Contreras, Oct 30, 2012
  5. 04/14 remote-hg: add support for remote pushingFelipe Contreras, Oct 30, 2012
  6. 05/14 remote-hg: add support to push URLsFelipe Contreras, Oct 30, 2012
  7. 06/14 remote-hg: make sure the encoding is correctFelipe Contreras, Oct 30, 2012
  8. 07/14 remote-hg: match hg merge behaviorFelipe Contreras, Oct 30, 2012
  9. 08/14 remote-hg: add support for hg-git compat modeFelipe Contreras, Oct 30, 2012
  10. 09/14 remote-hg: add compat for hg-git author fixesFelipe Contreras, Oct 30, 2012
  11. 10/14 remote-hg: fake bookmark when there's noneFelipe Contreras, Oct 30, 2012
  12. 11/14 remote-hg: add support for fake remoteFelipe Contreras, Oct 30, 2012
  13. 12/14 remote-hg: add biridectional testsFelipe Contreras, Oct 30, 2012
  14. 13/14 remote-hg: add tests to compare with hg-gitFelipe Contreras, Oct 30, 2012
  15. 14/14 remote-hg: add extra author testFelipe Contreras, Oct 30, 2012
  16. Chris WebbOct 30, 2012
  17. Chris WebbOct 30, 2012
  18. Felipe ContrerasOct 30, 2012
  19. Chris WebbOct 30, 2012
  20. Chris WebbOct 30, 2012
  21. Felipe ContrerasOct 30, 2012
  22. Felipe ContrerasNov 1, 2012
  23. Chris WebbNov 11, 2012
  24. Felipe ContrerasNov 13, 2012
  25. Johannes SchindelinOct 30, 2012
  26. Felipe ContrerasOct 30, 2012

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.