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

[PATCH v2] remote-hg: getbundle changed in mercurial 3.0

From
William Giokas <1007380@gmail.com>
Date
May 13, 2014, 20:21 UTC
Message-ID
<1400012506-20705-1-git-send-email-1007380@gmail.com>
In-Reply-To
<1400008359-18267-1-git-send-email-1007380@gmail.com>

In mercurial 3.0, getbundle was moved to the changegroup module, and gained a new argument. Due to this we cannot simply start using getbundle(...) imported from either one unconditionally, as that would cause errors in mercurial 3.0 without changing the syntax, and errors in mercurial <3.0 if we do change it.

The try:except block at the beginning of git-remote-hg.py tries first to import mercurial.changegroup.getbundle, and if that fails we set the function 'getbundle' to work correctly with mercurial.repo.getbundle by removing the first argument.

Signed-off-by: William Giokas <1007380@gmail.com>
---

So, what I had in there before would not work at all on repo.getbundle because **kwargs only unpacks keyword args, not normal args. Sometimes my brain works.

 git-remote-hg.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/git-remote-hg.py b/git-remote-hg.py
index 34cda02..32eeffb 100755
--- a/git-remote-hg.py
+++ b/git-remote-hg.py
@@ -14,6 +14,13 @@
 
 from mercurial import hg, ui, bookmarks, context, encoding, node, error, extensions, discovery, util
 
+try:
+    from mercurial.changegroup import getbundle
+
+except ImportError:
+    def getbundle(repo, **kwargs):
+        return repo.getbundle(**kwargs)
+
 import re
 import sys
 import os
@@ -985,7 +992,8 @@ def push_unsafe(repo, remote, parsed_refs, p_revs):
     if not checkheads(repo, remote, p_revs):
         return None
 
-    cg = repo.getbundle('push', heads=list(p_revs), common=common)
+    cg = getbundle(repo=repo, source='push', heads=list(p_revs),
+                   common=common)
 
     unbundle = remote.capable('unbundle')
     if unbundle:
-- 
2.0.0.rc3
Previous: William GiokasNext: Junio C Hamano
Message 2 of 5 in “remote-hg: getbundle changed in mercurial 3.0”
  1. remote-hg: getbundle changed in mercurial 3.0William Giokas, May 13, 2014
  2. remote-hg: getbundle changed in mercurial 3.0William Giokas, May 13, 2014
  3. Junio C HamanoMay 13, 2014
  4. Junio C HamanoMay 13, 2014
  5. Felipe ContrerasMay 13, 2014

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.