Mercurial > hg > hg-git
changeset 600:e0089655caa6
Fixes #54 | option branch_bookmark_suffix doesn't move bookmarks along
Test case based on the one proposed by David Carr at
https://bitbucket.org/durin42/hg-git/issue/54/with-option-branch_bookmark_suffix-set
author | André Felipe Dias <andref.dias@pronus.eng.br> |
---|---|
date | Mon, 01 Jul 2013 16:04:53 -0300 |
parents | 792955be68dd |
children | ca86479dd2d9 |
files | .hgignore hggit/git_handler.py tests/test-branch-bookmark-suffix.t |
diffstat | 3 files changed, 144 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/hggit/git_handler.py +++ b/hggit/git_handler.py @@ -1109,6 +1109,7 @@ heads = dict([(ref[11:],refs[ref]) for ref in refs if ref.startswith('refs/heads/')]) + suffix = self.branch_bookmark_suffix or '' for head, sha in heads.iteritems(): # refs contains all the refs in the server, not just # the ones we are pulling @@ -1117,28 +1118,13 @@ hgsha = bin(self.map_hg_get(sha)) if not head in bms: # new branch - bms[head] = hgsha + bms[head + suffix] = hgsha else: bm = self.repo[bms[head]] if bm.ancestor(self.repo[hgsha]) == bm: # fast forward - bms[head] = hgsha + bms[head + suffix] = hgsha - # if there's a branch bookmark suffix, - # then add it on to all bookmark names - # that would otherwise conflict with a branch - # name - if self.branch_bookmark_suffix: - real_branch_names = self.repo.branchmap() - bms = dict( - ( - bm_name + self.branch_bookmark_suffix - if bm_name in real_branch_names - else bm_name, - bms[bm_name] - ) - for bm_name in bms - ) if heads: if oldbm: bookmarks.write(self.repo, bms)
new file mode 100644 --- /dev/null +++ b/tests/test-branch-bookmark-suffix.t @@ -0,0 +1,139 @@ +bail if the user does not have dulwich + $ python -c 'import dulwich, dulwich.repo' || exit 80 + + $ echo "[extensions]" >> $HGRCPATH + $ echo "hggit=$(echo $(dirname $TESTDIR))/hggit" >> $HGRCPATH + $ echo 'hgext.graphlog =' >> $HGRCPATH + $ echo "[git]" >> $HGRCPATH + $ echo "branch_bookmark_suffix=_bookmark" >> $HGRCPATH + + $ GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME + $ GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL + $ GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE + $ GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME + $ GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL + $ GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE + + $ count=10 + $ commit() + > { + > GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000" + > GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" + > git commit "$@" >/dev/null 2>/dev/null || echo "git commit error" + > count=`expr $count + 1` + > } + $ hgcommit() + > { + > HGDATE="2007-01-01 00:00:$count +0000" + > hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error" + > count=`expr $count + 1` + > } + + $ git config --global push.default matching + $ git init --bare gitrepo1 + Initialized empty Git repository in $TESTTMP/gitrepo1/ + + $ hg init hgrepo + $ cd hgrepo + $ hg branch -q branch1 + $ hg bookmark branch1_bookmark + $ echo f1 > f1 + $ hg add f1 + $ hgcommit -m "add f1" + $ hg branch -q branch2 + $ hg bookmark branch2_bookmark + $ echo f2 > f2 + $ hg add f2 + $ hgcommit -m "add f2" + $ hg log --graph + @ changeset: 1:600de9b6d498 + | branch: branch2 + | bookmark: branch2_bookmark + | tag: tip + | user: test + | date: Mon Jan 01 00:00:11 2007 +0000 + | summary: add f2 + | + o changeset: 0:40a840c1f8ae + branch: branch1 + bookmark: branch1_bookmark + user: test + date: Mon Jan 01 00:00:10 2007 +0000 + summary: add f1 + + + + $ hg push ../gitrepo1 + pushing to ../gitrepo1 + searching for changes + adding objects + added 2 commits with 2 trees and 2 blobs + + $ cd .. + + $ cd gitrepo1 + $ git symbolic-ref HEAD refs/heads/branch1 + $ git branch + * branch1 + branch2 + $ cd .. + + $ git clone gitrepo1 gitrepo2 + Cloning into 'gitrepo2'... + done. + $ cd gitrepo2 + $ git checkout branch1 + Already on 'branch1' + $ echo g1 >> f1 + $ git add f1 + $ commit -m "append f1" + $ git checkout branch2 + Switched to a new branch 'branch2' + Branch branch2 set up to track remote branch branch2 from origin. + $ echo g2 >> f2 + $ git add f2 + $ commit -m "append f2" + $ git push origin + To $TESTTMP/gitrepo1 + bbfe79a..d8aef79 branch1 -> branch1 + 288e92b..f8f8de5 branch2 -> branch2 + $ cd .. + + $ cd hgrepo + $ hg pull ../gitrepo1 + pulling from ../gitrepo1 + importing git objects into hg + (run 'hg heads' to see heads) + $ hg log --graph + o changeset: 3:0a696ec0f478 + | bookmark: branch2_bookmark + | tag: default/branch2 + | tag: tip + | parent: 1:600de9b6d498 + | user: test <test@example.org> + | date: Mon Jan 01 00:00:13 2007 +0000 + | summary: append f2 + | + | o changeset: 2:49db35e15e81 + | | bookmark: branch1_bookmark + | | tag: default/branch1 + | | parent: 0:40a840c1f8ae + | | user: test <test@example.org> + | | date: Mon Jan 01 00:00:12 2007 +0000 + | | summary: append f1 + | | + @ | changeset: 1:600de9b6d498 + |/ branch: branch2 + | user: test + | date: Mon Jan 01 00:00:11 2007 +0000 + | summary: add f2 + | + o changeset: 0:40a840c1f8ae + branch: branch1 + user: test + date: Mon Jan 01 00:00:10 2007 +0000 + summary: add f1 + + + + $ cd ..