Merge branch 'ap/remote-hg-skip-null-bookmarks'
authorJunio C Hamano <gitster@pobox.com>
Wed, 2 Apr 2014 21:18:23 +0000 (14:18 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Apr 2014 21:18:23 +0000 (14:18 -0700)
* ap/remote-hg-skip-null-bookmarks:
remote-hg: do not fail on invalid bookmarks

contrib/remote-helpers/git-remote-hg
contrib/remote-helpers/test-hg.sh
index eb89ef67798e70fd77eff341e3dda5385d3cde48..36b526106ba7b3c61b70549770c1ec82f45e1baf 100755 (executable)
@@ -643,7 +643,10 @@ def do_list(parser):
             print "? refs/heads/branches/%s" % gitref(branch)
 
     for bmark in bmarks:
-        print "? refs/heads/%s" % gitref(bmark)
+        if  bmarks[bmark].hex() == '0000000000000000000000000000000000000000':
+            warn("Ignoring invalid bookmark '%s'", bmark)
+        else:
+            print "? refs/heads/%s" % gitref(bmark)
 
     for tag, node in repo.tagslist():
         if tag == 'tip':
index a933b1e30c6fe82393f3df1446333386d9795b12..7d90056cf346e69891ec455e44ba16e88f32af90 100755 (executable)
@@ -772,4 +772,77 @@ test_expect_success 'remote double failed push' '
        )
 '
 
+test_expect_success 'clone remote with master null bookmark, then push to the bookmark' '
+       test_when_finished "rm -rf gitrepo* hgrepo*" &&
+
+       hg init hgrepo &&
+       (
+               cd hgrepo &&
+               echo a >a &&
+               hg add a &&
+               hg commit -m a &&
+               hg bookmark -r null master
+       ) &&
+
+       git clone "hg::hgrepo" gitrepo &&
+       check gitrepo HEAD a &&
+       (
+               cd gitrepo &&
+               git checkout --quiet -b master &&
+               echo b >b &&
+               git add b &&
+               git commit -m b &&
+               git push origin master
+       )
+'
+
+test_expect_success 'clone remote with default null bookmark, then push to the bookmark' '
+       test_when_finished "rm -rf gitrepo* hgrepo*" &&
+
+       hg init hgrepo &&
+       (
+               cd hgrepo &&
+               echo a >a &&
+               hg add a &&
+               hg commit -m a &&
+               hg bookmark -r null -f default
+       ) &&
+
+       git clone "hg::hgrepo" gitrepo &&
+       check gitrepo HEAD a &&
+       (
+               cd gitrepo &&
+               git checkout --quiet -b default &&
+               echo b >b &&
+               git add b &&
+               git commit -m b &&
+               git push origin default
+       )
+'
+
+test_expect_success 'clone remote with generic null bookmark, then push to the bookmark' '
+       test_when_finished "rm -rf gitrepo* hgrepo*" &&
+
+       hg init hgrepo &&
+       (
+               cd hgrepo &&
+               echo a >a &&
+               hg add a &&
+               hg commit -m a &&
+               hg bookmark -r null bmark
+       ) &&
+
+       git clone "hg::hgrepo" gitrepo &&
+       check gitrepo HEAD a &&
+       (
+               cd gitrepo &&
+               git checkout --quiet -b bmark &&
+               git remote -v &&
+               echo b >b &&
+               git add b &&
+               git commit -m b &&
+               git push origin bmark
+       )
+'
+
 test_done