Re: [PATCH v5 00/14] New remote-hg helper
- From
Chris Webb <chris@arachsys.com>
- Date
- Oct 30, 2012, 10:25 UTC
- Message-ID
- <20121030102526.GN4891@arachsys.com>
- In-Reply-To
- <1351571736-4682-1-git-send-email-felipe.contreras@gmail.com>
Hi. I routinely work with projects in both hg and git, so I'm really interested in this. Thanks for working on it! I grabbed the latest version from
https://github.com/felipec/git/blob/fc-remote-hg/contrib/remote-hg/git-remote-hg
and have been trying it out. For the most part, it seems to work very nicely for the hg repos I have access to and can test against. I've spotted a couple of issues along the way that I thought would be worth reporting.
The first is really a symptom of a general difference between hg and git: an hg repository can have multiple heads, whereas a git repo has exactly one head. To demonstrate:
$ hg init hgtest && cd hgtest
$ echo zero >foo && hg add foo && hg commit -m zero
$ echo one >foo && hg commit -m one
$ hg checkout -r 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo two >foo && hg commit -m two
created new head
$ hg log --graph
@ changeset: 2:ca09651009cb
| tag: tip
| parent: 0:9f552c53d116
| user: Chris Webb <chris@arachsys.com>
| date: Tue Oct 30 09:33:38 2012 +0000
| summary: two
|
| o changeset: 1:58fad8998339
|/ user: Chris Webb <chris@arachsys.com>
| date: Tue Oct 30 09:33:25 2012 +0000
| summary: one
|
o changeset: 0:9f552c53d116
user: Chris Webb <chris@arachsys.com>
date: Tue Oct 30 09:33:08 2012 +0000
summary: zero$ cd ..
Now if I try to convert this:
$ git clone hg::$PWD/hgtest gittest
Cloning into 'gittest'...
WARNING: Branch 'default' has more than one head, consider merging
Traceback (most recent call last):
File "/home/chris/bin/git-remote-hg", line 773, in <module>
sys.exit(main(sys.argv))
File "/home/chris/bin/git-remote-hg", line 759, in main
do_list(parser)
File "/home/chris/bin/git-remote-hg", line 463, in do_list
list_branch_head(repo, cur)
File "/home/chris/bin/git-remote-hg", line 425, in list_branch_head
tip = get_branch_tip(repo, cur)
File "/home/chris/bin/git-remote-hg", line 418, in get_branch_tip
return repo.branchtip(branch)
AttributeError: 'mqrepo' object has no attribute 'branchtip'Strip the second head and it's fine:
$ hg -R hgtest strip 2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved saved backup bundle to /tmp/hgtest/hgtest/.hg/strip-backup/ca09651009cb-backup.hg $ git clone hg::$PWD/hgtest gittest Cloning into 'gittest'... $
Not sure what the most friendly thing to do here is. Perhaps refuse to clone/pull from a repo with multiple heads unless you name the specific head you want?
The second thing I spotted is the behaviour of bookmarks on push:
$ hg init hgtest && cd hgtest $ echo zero >foo && hg add foo && hg commit -m zero $ hg bookmark development $ cd .. $ git clone hg::$PWD/hgtest gittest && cd gittest Cloning into 'gittest'... $ git checkout development Branch development set up to track remote branch development from origin. Switched to a new branch 'development' $ echo one >foo && git add foo && git commit -m one [development 9f67dc4] one 1 file changed, 1 insertion(+), 1 deletion(-) $ git status # On branch development # Your branch is ahead of 'origin/development' by 1 commit. # nothing to commit $ git push warning: helper reported unexpected status of refs/hg/origin/bookmarks/development To hg::/tmp/hgtest/hgtest * [new branch] branches/default -> branches/default * [new branch] development -> development $ hg log -R ../hgtest changeset: 1:1c0714d93864 tag: tip user: Chris Webb <chris@arachsys.com> date: Tue Oct 30 09:51:51 2012 +0000 summary: one
changeset: 0:f56c463398ea bookmark: development user: Chris Webb <chris@arachsys.com> date: Tue Oct 30 09:50:53 2012 +0000 summary: zero
i.e. the development bookmark hasn't been updated by the push. This might be connected to the warning message
warning: helper reported unexpected status of refs/hg/origin/bookmarks/development
I'm testing with hg 2.2.2 and current git master, so I expect this could be a python api change in the more recent versions of hg if you don't see the same behaviour.
Best wishes,
Chris.