changeset 73:6dd6e6b166b2

fpull should work when remote repositories don't support Forest.
author Simon Law <simon@akoha.org>
date Tue, 04 Sep 2007 12:40:03 -0400
parents 1c916e260ece
children 5727190d5f5a
files forest.py
diffstat 1 files changed, 21 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/forest.py	Wed Aug 29 12:10:35 2007 -0400
+++ b/forest.py	Tue Sep 04 12:40:03 2007 -0400
@@ -949,22 +949,30 @@
     source = [source]
     walkhg = walkhgenabled(ui, opts['walkhg'])
     forest = Forest(top=top, snapfile=snapfile, walkhg=walkhg)
+    toproot = forest.top().root
     if not snapfile:
         # Look for new remote paths from source
         srcrepo = hg.repository(ui, forest.top().getpath(source))
-        newrepos = [util.localpath(root) for root in srcrepo.forests(walkhg)]
-        toproot = forest.top().root
-        for tree in forest.trees:
-            try:
-                newrepos.remove(relpath(toproot, tree.root))
-            except Exception, err:
-                pass
-        forest.trees.extend([Forest.Tree(root=os.path.join(toproot, new))
-                             for new in newrepos])
-        forest.trees.sort(key=(lambda tree: tree.root))
-        opts['pull'] = True
-        opts['uncompressed'] = None
-        opts['noupdate'] = not opts['update']
+        srcforests = None
+        try:
+            srcforests = srcrepo.forests(walkhg)
+        except util.Abort, err:
+            ui.note(_("skipped new forests: %s\n") % err)
+        if srcforests:
+            ui.note(_("looking for new forests\n"))
+            newrepos = [util.localpath(root) for root in srcforests]
+            for tree in forest.trees:
+                try:
+                    newrepos.remove(relpath(toproot, tree.root))
+                except Exception, err:
+                    pass
+            ui.note(_("found new forests: %s\n") % newrepos)
+            forest.trees.extend([Forest.Tree(root=os.path.join(toproot, new))
+                                 for new in newrepos])
+            forest.trees.sort(key=(lambda tree: tree.root))
+    opts['pull'] = True
+    opts['uncompressed'] = None
+    opts['noupdate'] = not opts['update']
 
     def function(tree, srcpath, opts):
         if snapfile: