Mercurial > hg
changeset 4474:08ae451148b2
merge with stable
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 01 Jun 2007 19:49:09 +0200 |
parents | f975e986b4bf (current diff) 671158f060cc (diff) |
children | e8a584067825 |
files | mercurial/commands.py tests/test-incoming-outgoing.out |
diffstat | 2 files changed, 15 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Fri Jun 01 16:02:49 2007 +0200 +++ b/mercurial/commands.py Fri Jun 01 19:49:09 2007 +0200 @@ -1593,7 +1593,14 @@ other = hg.repository(ui, source) ui.status(_('comparing with %s\n') % source) - incoming = repo.findincoming(other, force=opts["force"]) + revs = None + if opts['rev']: + if 'lookup' in other.capabilities: + revs = [other.lookup(rev) for rev in opts['rev']] + else: + error = _("Other repository doesn't support revision lookup, so a rev cannot be specified.") + raise util.Abort(error) + incoming = repo.findincoming(other, heads=revs, force=opts["force"]) if not incoming: try: os.unlink(opts["bundle"]) @@ -1607,7 +1614,12 @@ fname = opts["bundle"] if fname or not other.local(): # create a bundle (uncompressed if other repo is not local) - cg = other.changegroup(incoming, "incoming") + if revs is None: + cg = other.changegroup(incoming, "incoming") + else: + if 'changegroupsubset' not in other.capabilities: + raise util.Abort(_("Partial incoming cannot be done because other repository doesn't support changegroupsubset.")) + cg = other.changegroupsubset(incoming, revs, 'incoming') bundletype = other.local() and "HG10BZ" or "HG10UN" fname = cleanup = changegroup.writebundle(cg, fname, bundletype) # keep written bundle? @@ -1617,9 +1629,6 @@ # use the created uncompressed bundlerepo other = bundlerepo.bundlerepository(ui, repo.root, fname) - revs = None - if opts['rev']: - revs = [other.lookup(rev) for rev in opts['rev']] o = other.changelog.nodesbetween(incoming, revs)[0] if opts['newest_first']: o.reverse()