Mercurial > hg-stable
diff mercurial/hg.py @ 14073:72c84f24b420
discovery: drop findoutgoing and simplify findcommonincoming's api
This is a long desired cleanup and paves the way for new discovery.
To specify subsets for bundling changes, all code should use the heads
of the desired subset ("heads") and the heads of the common subset
("common") to be excluded from the bundled set. These can be used
revlog.findmissing instead of revlog.nodesbetween.
This fixes an actual bug exposed by the change in test-bundle-r.t
where we try to bundle a changeset while specifying that said changeset
is to be assumed already present in the target. This used to still
bundle the changeset. It no longer does. This is similar to the bugs
fixed by the recent switch to heads/common for incoming/pull.
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Sat, 30 Apr 2011 17:21:37 +0200 |
parents | e4bfb9c337f3 |
children | 924c82157d46 |
line wrap: on
line diff
--- a/mercurial/hg.py Sat Apr 30 18:25:45 2011 +0200 +++ b/mercurial/hg.py Sat Apr 30 17:21:37 2011 +0200 @@ -426,19 +426,14 @@ if revs: revs = [other.lookup(rev) for rev in revs] - usecommon = other.capable('getbundle') - other, common, incoming, bundle = bundlerepo.getremotechanges(ui, repo, other, - revs, opts["bundle"], opts["force"], - usecommon=usecommon) - if not incoming: + other, common, anyinc, bundle = bundlerepo.getremotechanges(ui, repo, other, + revs, opts["bundle"], opts["force"]) + if not anyinc: ui.status(_("no changes found\n")) return subreporecurse() try: - if usecommon: - chlist = other.changelog.findmissing(common, revs) - else: - chlist = other.changelog.nodesbetween(incoming, revs)[0] + chlist = other.changelog.findmissing(common, revs) displayer = cmdutil.show_changeset(ui, other, opts, buffered) # XXX once graphlog extension makes it into core, @@ -488,12 +483,13 @@ revs = [repo.lookup(rev) for rev in revs] other = repository(remoteui(repo, opts), dest) - o = discovery.findoutgoing(repo, other, force=opts.get('force')) + inc = discovery.findcommonincoming(repo, other, force=opts.get('force')) + common, _anyinc, _heads = inc + o = repo.changelog.findmissing(common, revs) if not o: ui.status(_("no changes found\n")) return None - - return repo.changelog.nodesbetween(o, revs)[0] + return o def outgoing(ui, repo, dest, opts): def recurse():