# HG changeset patch # User Simon Law # Date 1188924003 14400 # Node ID 6dd6e6b166b2c9fb0a1e1f7bfd49817b503c728d # Parent 1c916e260ececfe9bd668ada259ecf3e668a2c39 fpull should work when remote repositories don't support Forest. diff -r 1c916e260ece -r 6dd6e6b166b2 forest.py --- 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: