Mercurial > hg
changeset 51609:fc317bd5b637 stable
fold-or-prune-me: update proposal
This does the same things but with a narrower wrapping.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 02 May 2024 08:46:58 +0200 |
parents | 3e0f86f09f26 |
children | 6c39edd1d348 |
files | mercurial/hg.py |
diffstat | 1 files changed, 44 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/hg.py Sun Mar 31 17:57:46 2024 -0300 +++ b/mercurial/hg.py Thu May 02 08:46:58 2024 +0200 @@ -1420,44 +1420,58 @@ ) +_no_subtoppath = object() + + def _outgoing(ui, repo, dests, opts, subpath=None): out = set() others = [] for path in urlutil.get_push_paths(repo, ui, dests): dest = path.loc - repo._subtoppath = dest - if subpath is not None: - subpath = urlutil.url(subpath) - if subpath.isabs(): - dest = bytes(subpath) - else: - p = urlutil.url(dest) - if p.islocal(): - normpath = os.path.normpath + prev_subtopath = getattr(repo, "_subtoppath", _no_subtoppath) + try: + repo._subtoppath = dest + if subpath is not None: + subpath = urlutil.url(subpath) + if subpath.isabs(): + dest = bytes(subpath) else: - normpath = posixpath.normpath - p.path = normpath(b'%s/%s' % (p.path, subpath)) - dest = bytes(p) - branches = path.branch, opts.get(b'branch') or [] + p = urlutil.url(dest) + if p.islocal(): + normpath = os.path.normpath + else: + normpath = posixpath.normpath + p.path = normpath(b'%s/%s' % (p.path, subpath)) + dest = bytes(p) + branches = path.branch, opts.get(b'branch') or [] - ui.status(_(b'comparing with %s\n') % urlutil.hidepassword(dest)) - revs, checkout = addbranchrevs(repo, repo, branches, opts.get(b'rev')) - if revs: - revs = [repo[rev].node() for rev in logcmdutil.revrange(repo, revs)] + ui.status(_(b'comparing with %s\n') % urlutil.hidepassword(dest)) + revs, checkout = addbranchrevs( + repo, repo, branches, opts.get(b'rev') + ) + if revs: + revs = [ + repo[rev].node() for rev in logcmdutil.revrange(repo, revs) + ] - other = peer(repo, opts, dest) - try: - outgoing = discovery.findcommonoutgoing( - repo, other, revs, force=opts.get(b'force') - ) - o = outgoing.missing - out.update(o) - if not o: - scmutil.nochangesfound(repo.ui, repo, outgoing.excluded) - others.append(other) - except: # re-raises - other.close() - raise + other = peer(repo, opts, dest) + try: + outgoing = discovery.findcommonoutgoing( + repo, other, revs, force=opts.get(b'force') + ) + o = outgoing.missing + out.update(o) + if not o: + scmutil.nochangesfound(repo.ui, repo, outgoing.excluded) + others.append(other) + except: # re-raises + other.close() + raise + finally: + if prev_subtopath is _no_subtoppath: + del repo._subtoppath + else: + repo._subtoppath = prev_subtopath # make sure this is ordered by revision number outgoing_revs = list(out) cl = repo.changelog @@ -1529,7 +1543,6 @@ finally: for oth in others: oth.close() - del repo._subtoppath def verify(repo, level=None):