{"thread":{"id":"36537","subject":"[PATCH 0/8] remote-helper: fixes","startedAt":"2014-04-29T09:04:27Z","lastAt":"2014-04-29T22:06:58Z","messageCount":10,"participants":["Felipe Contreras","Philip Oakley"],"isPatch":true,"patchVersion":1,"patchTotal":8},"messages":[{"id":"240140","messageId":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":null,"subject":"[PATCH 0/8] remote-helper: fixes","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:27Z","receivedAt":"2014-04-29T09:04:27Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"A few trivial updates, a few important fixes.\n\n\nDaniel Liew (1):\n  git-remote-hg: use internal clone's hgrc\n\nFelipe Contreras (7):\n  remote-hg: fix parsing of custom committer\n  remote-hg: update to 'public' phase when pushing\n  remote-{hg,bzr}: store marks only on success\n  remote-hg: properly detect missing contexts\n  t: remote-hg: split into setup test\n  remote-hg: make sure we omit multiple heads\n  remote-hg: trivial cleanups\n\n git-remote-bzr.py    |  8 +++---\n git-remote-hg.py     | 72 ++++++++++++++++++++++++++++++++++++++++++----------\n t/t5810-remote-hg.sh | 65 +++++++----------------------------------------\n 3 files changed, 70 insertions(+), 75 deletions(-)\n\n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240141","messageId":"1398762275-346-2-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 1/8] remote-hg: fix parsing of custom committer","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:28Z","receivedAt":"2014-04-29T09:04:28Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Other tools use the 'committer' extra field differently, so let's make\nthe parsing more reliable and don't assume it's in a certain format.\n\nReported-by: Kevin Cox <kevincox@kevincox.ca>\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n git-remote-hg.py | 8 ++++++--\n 1 file changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/git-remote-hg.py b/git-remote-hg.py\nindex 34cda02..c849abb 100755\n--- a/git-remote-hg.py\n+++ b/git-remote-hg.py\n@@ -461,8 +461,12 @@ def export_ref(repo, name, kind, head):\n \n         author = \"%s %d %s\" % (fixup_user(user), time, gittz(tz))\n         if 'committer' in extra:\n-            user, time, tz = extra['committer'].rsplit(' ', 2)\n-            committer = \"%s %s %s\" % (user, time, gittz(int(tz)))\n+            try:\n+                cuser, ctime, ctz = extra['committer'].rsplit(' ', 2)\n+                committer = \"%s %s %s\" % (cuser, ctime, gittz(int(ctz)))\n+            except ValueError:\n+                cuser = extra['committer']\n+                committer = \"%s %d %s\" % (fixup_user(cuser), time, gittz(tz))\n         else:\n             committer = author\n \n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240142","messageId":"1398762275-346-3-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 2/8] remote-hg: update to 'public' phase when pushing","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:29Z","receivedAt":"2014-04-29T09:04:29Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"This is what Mercurial does.\n\nReported-by: Nathan Palmer\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n git-remote-hg.py | 12 ++++++++++--\n 1 file changed, 10 insertions(+), 2 deletions(-)\n\ndiff --git a/git-remote-hg.py b/git-remote-hg.py\nindex c849abb..204ceeb 100755\n--- a/git-remote-hg.py\n+++ b/git-remote-hg.py\n@@ -995,9 +995,17 @@ def push_unsafe(repo, remote, parsed_refs, p_revs):\n     if unbundle:\n         if force:\n             remoteheads = ['force']\n-        return remote.unbundle(cg, remoteheads, 'push')\n+        ret = remote.unbundle(cg, remoteheads, 'push')\n     else:\n-        return remote.addchangegroup(cg, 'push', repo.url())\n+        ret = remote.addchangegroup(cg, 'push', repo.url())\n+\n+    phases = remote.listkeys('phases')\n+    if phases:\n+        for head in p_revs:\n+            # update to public\n+            remote.pushkey('phases', hghex(head), '1', '0')\n+\n+    return ret\n \n def push(repo, remote, parsed_refs, p_revs):\n     if hasattr(remote, 'canpush') and not remote.canpush():\n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240143","messageId":"1398762275-346-4-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 3/8] remote-{hg,bzr}: store marks only on success","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:30Z","receivedAt":"2014-04-29T09:04:30Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Commit 2594a79 (remote-hg: fix bad state issue) originally introduced\nthis code in order to avoid synchronization issues while pushing,\nbecause `git fast-export` might end up writing the marks before a crash\nin the remote helper occurs.\n\nHowever, the problem is in `git fast-export`; the marks should only be\nwritten after both have finished successfully.\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n git-remote-bzr.py | 8 +++-----\n git-remote-hg.py  | 8 +++-----\n 2 files changed, 6 insertions(+), 10 deletions(-)\n\ndiff --git a/git-remote-bzr.py b/git-remote-bzr.py\nindex 9abb58e..71b138e 100755\n--- a/git-remote-bzr.py\n+++ b/git-remote-bzr.py\n@@ -971,12 +971,10 @@ def main(args):\n             die('unhandled command: %s' % line)\n         sys.stdout.flush()\n \n+    marks.store()\n+\n def bye():\n-    if not marks:\n-        return\n-    if not is_tmp:\n-        marks.store()\n-    else:\n+    if is_tmp:\n         shutil.rmtree(dirname)\n \n atexit.register(bye)\ndiff --git a/git-remote-hg.py b/git-remote-hg.py\nindex 204ceeb..8aca6dd 100755\n--- a/git-remote-hg.py\n+++ b/git-remote-hg.py\n@@ -1258,12 +1258,10 @@ def main(args):\n             die('unhandled command: %s' % line)\n         sys.stdout.flush()\n \n+    marks.store()\n+\n def bye():\n-    if not marks:\n-        return\n-    if not is_tmp:\n-        marks.store()\n-    else:\n+    if is_tmp:\n         shutil.rmtree(dirname)\n \n atexit.register(bye)\n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240144","messageId":"1398762275-346-5-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 4/8] remote-hg: properly detect missing contexts","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:31Z","receivedAt":"2014-04-29T09:04:31Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"This can happen when there's a synchronization issue between marks-git\nand marks-hg; a key is missing in marks-hg, and when we receive a reset\ncommand the value of ctx basically comes from None.\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n git-remote-hg.py | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/git-remote-hg.py b/git-remote-hg.py\nindex 8aca6dd..1972f7f 100755\n--- a/git-remote-hg.py\n+++ b/git-remote-hg.py\n@@ -917,6 +917,11 @@ def checkheads_bmark(repo, ref, ctx):\n \n     ctx_old = bmarks[bmark]\n     ctx_new = ctx\n+\n+    if not ctx.rev():\n+        print \"error %s unknown\" % ref\n+        return False\n+\n     if not repo.changelog.descendant(ctx_old.rev(), ctx_new.rev()):\n         if force_push:\n             print \"ok %s forced update\" % ref\n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240145","messageId":"1398762275-346-6-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 5/8] t: remote-hg: split into setup test","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:32Z","receivedAt":"2014-04-29T09:04:32Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n t/t5810-remote-hg.sh | 9 +++++----\n 1 file changed, 5 insertions(+), 4 deletions(-)\n\ndiff --git a/t/t5810-remote-hg.sh b/t/t5810-remote-hg.sh\nindex 594a0a1..ba8b2d8 100755\n--- a/t/t5810-remote-hg.sh\n+++ b/t/t5810-remote-hg.sh\n@@ -105,17 +105,18 @@ setup () {\n \n setup\n \n-test_expect_success 'cloning' '\n-\ttest_when_finished \"rm -rf gitrepo*\" &&\n-\n+test_expect_success 'setup' '\n \t(\n \thg init hgrepo &&\n \tcd hgrepo &&\n \techo zero >content &&\n \thg add content &&\n \thg commit -m zero\n-\t) &&\n+\t)\n+'\n \n+test_expect_success 'cloning' '\n+\ttest_when_finished \"rm -rf gitrepo*\" &&\n \tgit clone \"hg::hgrepo\" gitrepo &&\n \tcheck gitrepo HEAD zero\n '\n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240147","messageId":"1398762275-346-7-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 6/8] git-remote-hg: use internal clone's hgrc","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:33Z","receivedAt":"2014-04-29T09:04:33Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"From: Daniel Liew <delcypher@gmail.com>\n\nUse the hgrc configuration file in the internal mercurial repository in\naddition to the other system wide hgrc files. This is done by using the\n'ui' object from the 'repository' object which will have loaded the\nrepository hgrc file if it exists.\n\nSigned-off-by: Dan Liew <delcypher@gmail.com>\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n git-remote-hg.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/git-remote-hg.py b/git-remote-hg.py\nindex 1972f7f..cd3d79e 100755\n--- a/git-remote-hg.py\n+++ b/git-remote-hg.py\n@@ -422,7 +422,7 @@ def get_repo(url, alias):\n \n         repo = hg.repository(myui, local_path)\n         try:\n-            peer = hg.peer(myui, {}, url)\n+            peer = hg.peer(repo.ui, {}, url)\n         except:\n             die('Repository error')\n         repo.pull(peer, heads=None, force=True)\n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240148","messageId":"1398762275-346-8-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 7/8] remote-hg: make sure we omit multiple heads","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:34Z","receivedAt":"2014-04-29T09:04:34Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"We want to ignore secondary heads, otherwise we will import revisions\nthat won't have any ref pointing to them and might eventually be pruned,\nwhich would cause problems with the synchronization of marks.\n\nThis can only be expressed properly as '::b - ::a', but that's not\nefficient, specially in older versions of Mercurial.\n'ancestor(a,b)::b - ancestor(a,b)::a' might be better, but it's not\nparticularly pretty. Mercurial v3.0 will have a new 'only(b, a)' that\ndoes the same, but that hasn't even been released yet. Either way all of\nthese require repo.revs() which is only available after Mercurial v2.1.\n\nAlso, we would need special considerations for when there's no base\nrevision (importing from root).\n\nIt's much better to implement our own function to get a range of\nrevisions.\n\nThe new gitrange() is inspired by Mercurial's revset.missingancestors().\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n git-remote-hg.py | 35 ++++++++++++++++++++++++++++++++---\n 1 file changed, 32 insertions(+), 3 deletions(-)\n\ndiff --git a/git-remote-hg.py b/git-remote-hg.py\nindex cd3d79e..402b92f 100755\n--- a/git-remote-hg.py\n+++ b/git-remote-hg.py\n@@ -437,16 +437,45 @@ def rev_to_mark(rev):\n def mark_to_rev(mark):\n     return marks.to_rev(mark)\n \n+# Get a range of revisions in the form of a..b (git committish)\n+def gitrange(repo, a, b):\n+    positive = []\n+    pending = set([int(b)])\n+    negative = set([int(a)])\n+    for cur in xrange(b, -1, -1):\n+        if not pending:\n+            break\n+\n+        parents = [p for p in repo.changelog.parentrevs(cur) if p >= 0]\n+\n+        if cur in pending:\n+            positive.append(cur)\n+            pending.remove(cur)\n+            for p in parents:\n+                if not p in negative:\n+                    pending.add(p)\n+        elif cur in negative:\n+            negative.remove(cur)\n+            for p in parents:\n+                if not p in pending:\n+                    negative.add(p)\n+                else:\n+                    pending.discard(p)\n+\n+    positive.reverse()\n+    return positive\n+\n def export_ref(repo, name, kind, head):\n     ename = '%s/%s' % (kind, name)\n     try:\n         tip = marks.get_tip(ename)\n-        tip = repo[tip].rev()\n+        tip = repo[tip]\n     except:\n-        tip = 0\n+        tip = repo[-1]\n \n-    revs = xrange(tip, head.rev() + 1)\n+    revs = gitrange(repo, tip, head)\n     total = len(revs)\n+    tip = tip.rev()\n \n     for rev in revs:\n \n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240146","messageId":"1398762275-346-9-git-send-email-felipe.contreras@gmail.com","threadId":"36537","inReplyTo":"1398762275-346-1-git-send-email-felipe.contreras@gmail.com","subject":"[PATCH 8/8] remote-hg: trivial cleanups","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2014-04-29T09:04:35Z","receivedAt":"2014-04-29T09:04:35Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Cleanup 51be46e (remote-hg: do not fail on invalid bookmarks).\n\nHaving a 40-characters string is not ideal, and having three tests for\nbasically the same relatively rare situation is overkill.\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n git-remote-hg.py     |  2 +-\n t/t5810-remote-hg.sh | 56 ++++------------------------------------------------\n 2 files changed, 5 insertions(+), 53 deletions(-)\n\ndiff --git a/git-remote-hg.py b/git-remote-hg.py\nindex 402b92f..74f2a2e 100755\n--- a/git-remote-hg.py\n+++ b/git-remote-hg.py\n@@ -677,7 +677,7 @@ def do_list(parser):\n             print \"? refs/heads/branches/%s\" % gitref(branch)\n \n     for bmark in bmarks:\n-        if  bmarks[bmark].hex() == '0000000000000000000000000000000000000000':\n+        if  bmarks[bmark].hex() == '0' * 40:\n             warn(\"Ignoring invalid bookmark '%s'\", bmark)\n         else:\n             print \"? refs/heads/%s\" % gitref(bmark)\ndiff --git a/t/t5810-remote-hg.sh b/t/t5810-remote-hg.sh\nindex ba8b2d8..9946f57 100755\n--- a/t/t5810-remote-hg.sh\n+++ b/t/t5810-remote-hg.sh\n@@ -772,7 +772,7 @@ test_expect_success 'remote double failed push' '\n \t)\n '\n \n-test_expect_success 'clone remote with master null bookmark, then push to the bookmark' '\n+test_expect_success 'clone remote with null bookmark, then push' '\n \ttest_when_finished \"rm -rf gitrepo* hgrepo*\" &&\n \n \thg init hgrepo &&\n@@ -781,67 +781,19 @@ test_expect_success 'clone remote with master null bookmark, then push to the bo\n \t\techo a >a &&\n \t\thg add a &&\n \t\thg commit -m a &&\n-\t\thg bookmark -r null master\n+\t\thg bookmark -r null bookmark\n \t) &&\n \n \tgit clone \"hg::hgrepo\" gitrepo &&\n \tcheck gitrepo HEAD a &&\n \t(\n \t\tcd gitrepo &&\n-\t\tgit checkout --quiet -b master &&\n-\t\techo b >b &&\n-\t\tgit add b &&\n-\t\tgit commit -m b &&\n-\t\tgit push origin master\n-\t)\n-'\n-\n-test_expect_success 'clone remote with default null bookmark, then push to the bookmark' '\n-\ttest_when_finished \"rm -rf gitrepo* hgrepo*\" &&\n-\n-\thg init hgrepo &&\n-\t(\n-\t\tcd hgrepo &&\n-\t\techo a >a &&\n-\t\thg add a &&\n-\t\thg commit -m a &&\n-\t\thg bookmark -r null -f default\n-\t) &&\n-\n-\tgit clone \"hg::hgrepo\" gitrepo &&\n-\tcheck gitrepo HEAD a &&\n-\t(\n-\t\tcd gitrepo &&\n-\t\tgit checkout --quiet -b default &&\n-\t\techo b >b &&\n-\t\tgit add b &&\n-\t\tgit commit -m b &&\n-\t\tgit push origin default\n-\t)\n-'\n-\n-test_expect_success 'clone remote with generic null bookmark, then push to the bookmark' '\n-\ttest_when_finished \"rm -rf gitrepo* hgrepo*\" &&\n-\n-\thg init hgrepo &&\n-\t(\n-\t\tcd hgrepo &&\n-\t\techo a >a &&\n-\t\thg add a &&\n-\t\thg commit -m a &&\n-\t\thg bookmark -r null bmark\n-\t) &&\n-\n-\tgit clone \"hg::hgrepo\" gitrepo &&\n-\tcheck gitrepo HEAD a &&\n-\t(\n-\t\tcd gitrepo &&\n-\t\tgit checkout --quiet -b bmark &&\n+\t\tgit checkout --quiet -b bookmark &&\n \t\tgit remote -v &&\n \t\techo b >b &&\n \t\tgit add b &&\n \t\tgit commit -m b &&\n-\t\tgit push origin bmark\n+\t\tgit push origin bookmark\n \t)\n '\n \n-- \n1.9.2+fc1.3.gade8541\n"},{"id":"240216","messageId":"9374D3886766421BAA17E07C62F256DB@PhilipOakley","threadId":"36537","inReplyTo":"1398762275-346-9-git-send-email-felipe.contreras@gmail.com","subject":"Re: [PATCH 8/8] remote-hg: trivial cleanups","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.org","sentAt":"2014-04-29T22:06:58Z","receivedAt":"2014-04-29T22:06:58Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"From: \"Felipe Contreras\" <felipe.contreras@gmail.com>\nSubject: [PATCH 8/8] remote-hg: trivial cleanups\n\nIt's useful, as a reader of the shortlog and email message subject \nlines, to know what sort of triviality is being tidied.\nUsually they are 'spelling' or 'variable naming' or some such that can \neasily be squeezed on the end without breaking the ~50 char guide. In \nthis case there were two types, so I ended up with this suggestion for \nthe message heading\n\n    remote-hg: cleanup 40*{0} string, and de-dup tests\n\nwhich adds just enough (for me) to get a feel for the style of what's \ninside\n\nregards\n\nPhilip\n\n> Cleanup 51be46e (remote-hg: do not fail on invalid bookmarks).\n>\n> Having a 40-characters string is not ideal, and having three tests for\n> basically the same relatively rare situation is overkill.\n>\n> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n> ---\n> git-remote-hg.py     |  2 +-\n> t/t5810-remote-hg.sh | 56 \n> ++++------------------------------------------------\n> 2 files changed, 5 insertions(+), 53 deletions(-)\n>\n> diff --git a/git-remote-hg.py b/git-remote-hg.py\n> index 402b92f..74f2a2e 100755\n> --- a/git-remote-hg.py\n> +++ b/git-remote-hg.py\n> @@ -677,7 +677,7 @@ def do_list(parser):\n>             print \"? refs/heads/branches/%s\" % gitref(branch)\n>\n>     for bmark in bmarks:\n> -        if  bmarks[bmark].hex() == \n> '0000000000000000000000000000000000000000':\n> +        if  bmarks[bmark].hex() == '0' * 40:\n>             warn(\"Ignoring invalid bookmark '%s'\", bmark)\n>         else:\n>             print \"? refs/heads/%s\" % gitref(bmark)\n> diff --git a/t/t5810-remote-hg.sh b/t/t5810-remote-hg.sh\n> index ba8b2d8..9946f57 100755\n> --- a/t/t5810-remote-hg.sh\n> +++ b/t/t5810-remote-hg.sh\n> @@ -772,7 +772,7 @@ test_expect_success 'remote double failed push' '\n>  )\n> '\n>\n> -test_expect_success 'clone remote with master null bookmark, then \n> push to the bookmark' '\n> +test_expect_success 'clone remote with null bookmark, then push' '\n>  test_when_finished \"rm -rf gitrepo* hgrepo*\" &&\n>\n>  hg init hgrepo &&\n> @@ -781,67 +781,19 @@ test_expect_success 'clone remote with master \n> null bookmark, then push to the bo\n>  echo a >a &&\n>  hg add a &&\n>  hg commit -m a &&\n> - hg bookmark -r null master\n> + hg bookmark -r null bookmark\n>  ) &&\n>\n>  git clone \"hg::hgrepo\" gitrepo &&\n>  check gitrepo HEAD a &&\n>  (\n>  cd gitrepo &&\n> - git checkout --quiet -b master &&\n> - echo b >b &&\n> - git add b &&\n> - git commit -m b &&\n> - git push origin master\n> - )\n> -'\n> -\n> -test_expect_success 'clone remote with default null bookmark, then \n> push to the bookmark' '\n> - test_when_finished \"rm -rf gitrepo* hgrepo*\" &&\n> -\n> - hg init hgrepo &&\n> - (\n> - cd hgrepo &&\n> - echo a >a &&\n> - hg add a &&\n> - hg commit -m a &&\n> - hg bookmark -r null -f default\n> - ) &&\n> -\n> - git clone \"hg::hgrepo\" gitrepo &&\n> - check gitrepo HEAD a &&\n> - (\n> - cd gitrepo &&\n> - git checkout --quiet -b default &&\n> - echo b >b &&\n> - git add b &&\n> - git commit -m b &&\n> - git push origin default\n> - )\n> -'\n> -\n> -test_expect_success 'clone remote with generic null bookmark, then \n> push to the bookmark' '\n> - test_when_finished \"rm -rf gitrepo* hgrepo*\" &&\n> -\n> - hg init hgrepo &&\n> - (\n> - cd hgrepo &&\n> - echo a >a &&\n> - hg add a &&\n> - hg commit -m a &&\n> - hg bookmark -r null bmark\n> - ) &&\n> -\n> - git clone \"hg::hgrepo\" gitrepo &&\n> - check gitrepo HEAD a &&\n> - (\n> - cd gitrepo &&\n> - git checkout --quiet -b bmark &&\n> + git checkout --quiet -b bookmark &&\n>  git remote -v &&\n>  echo b >b &&\n>  git add b &&\n>  git commit -m b &&\n> - git push origin bmark\n> + git push origin bookmark\n>  )\n> '\n>\n> -- \n> 1.9.2+fc1.3.gade8541\n>\n> --\n> To unsubscribe from this list: send the line \"unsubscribe git\" in\n> the body of a message to majordomo@vger.kernel.org\n> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n> \n"}]}