Mercurial > hg > hgforest
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: