[PATCH] convert/bzr: ignore nested repos when listing branches (issue3254)

Patrick Mezard patrick at mezard.eu
Wed Feb 8 10:49:52 CST 2012


# HG changeset patch
# User Patrick Mezard <patrick at mezard.eu>
# Date 1328719510 -3600
# Node ID a9c61b726f76ed803aa9cf0668cf3fa0cb7ffab4
# Parent  e1d8218d733bb318605308fa8c6f261f49d0c163
convert/bzr: ignore nested repos when listing branches (issue3254)

Reported by A.S. Budden <abudden at gmail.com>

diff --git a/hgext/convert/bzr.py b/hgext/convert/bzr.py
--- a/hgext/convert/bzr.py
+++ b/hgext/convert/bzr.py
@@ -91,13 +91,16 @@
     def after(self):
         self.sourcerepo.unlock()
 
+    def _bzrbranches(self):
+        return self.sourcerepo.find_branches(using=True)
+
     def getheads(self):
         if not self.rev:
-            heads = sorted([b.last_revision()
-                            for b in self.sourcerepo.find_branches()])
+            # Set using=True to avoid nested repositories (see issue3254)
+            heads = sorted([b.last_revision() for b in self._bzrbranches()])
         else:
             revid = None
-            for branch in self.sourcerepo.find_branches():
+            for branch in self._bzrbranches():
                 try:
                     r = RevisionSpec.from_string(self.rev)
                     info = r.in_history(branch)
@@ -164,7 +167,7 @@
 
     def gettags(self):
         bytetags = {}
-        for branch in self.sourcerepo.find_branches():
+        for branch in self._bzrbranches():
             if not branch.supports_tags():
                 return {}
             tagdict = branch.tags.get_tag_dict()
diff --git a/tests/test-convert-bzr.t b/tests/test-convert-bzr.t
--- a/tests/test-convert-bzr.t
+++ b/tests/test-convert-bzr.t
@@ -261,3 +261,24 @@
   tip                                3:* (glob)
   branch-tag                         1:* (glob)
   trunk-tag                          0:* (glob)
+
+Nested repositories (issue3254)
+
+  $ bzr init-repo -q --no-trees repo/inner
+  $ bzr init -q repo/inner/trunk
+  $ bzr co repo/inner/trunk inner-trunk
+  $ cd inner-trunk
+  $ echo b > b
+  $ bzr add b
+  adding b
+  $ bzr ci -qm addb
+  $ cd ..
+  $ hg convert --datesort repo noinner-bzr
+  initializing destination noinner-bzr repository
+  scanning source...
+  sorting...
+  converting...
+  2 adda
+  1 addb
+  0 changea
+  updating tags


More information about the Mercurial-devel mailing list