# HG changeset patch # User Pierre-Yves David # Date 1718109352 -7200 # Node ID 42863c4ff80f97dd6619ed2235277f8ee6e182e9 # Parent f8c18a5a345ba50198a70aaf580aff8ef268f17a subrepo: move code around diff -r f8c18a5a345b -r 42863c4ff80f mercurial/hg.py --- a/mercurial/hg.py Wed Oct 23 14:02:28 2024 +0200 +++ b/mercurial/hg.py Tue Jun 11 14:35:52 2024 +0200 @@ -1420,6 +1420,72 @@ ) +def _outgoing_filter(repo, revs, opts): + """apply revision filtering/ordering option for outgoing""" + limit = logcmdutil.getlimit(opts) + no_merges = opts.get(b'no_merges') + if opts.get(b'newest_first'): + revs.reverse() + if limit is None and not no_merges: + for r in revs: + yield r + return + + count = 0 + cl = repo.changelog + for n in revs: + if limit is not None and count >= limit: + break + parents = [p for p in cl.parents(n) if p != repo.nullid] + if no_merges and len(parents) == 2: + continue + count += 1 + yield n + + +def _outgoing_recurse(ui, repo, dests, opts): + ret = 1 + if opts.get(b'subrepos'): + ctx = repo[None] + for subpath in sorted(ctx.substate): + sub = ctx.sub(subpath) + ret = min(ret, sub.outgoing(ui, dests, opts)) + return ret + + +def outgoing(ui, repo, dests, opts, subpath=None): + if opts.get(b'graph'): + logcmdutil.checkunsupportedgraphflags([], opts) + o, others = _outgoing(ui, repo, dests, opts, subpath=subpath) + ret = 1 + try: + if o: + ret = 0 + + if opts.get(b'graph'): + revdag = logcmdutil.graphrevs(repo, o, opts) + ui.pager(b'outgoing') + displayer = logcmdutil.changesetdisplayer( + ui, repo, opts, buffered=True + ) + logcmdutil.displaygraph( + ui, repo, revdag, displayer, graphmod.asciiedges + ) + else: + ui.pager(b'outgoing') + displayer = logcmdutil.changesetdisplayer(ui, repo, opts) + for n in _outgoing_filter(repo, o, opts): + displayer.show(repo[n]) + displayer.close() + for oth in others: + cmdutil.outgoinghooks(ui, repo, oth, opts, o) + ret = min(ret, _outgoing_recurse(ui, repo, dests, opts)) + return ret # exit code is zero since we found outgoing changes + finally: + for oth in others: + oth.close() + + def _outgoing(ui, repo, dests, opts, subpath=None): out = set() others = [] @@ -1464,72 +1530,6 @@ return outgoing_revs, others -def _outgoing_recurse(ui, repo, dests, opts): - ret = 1 - if opts.get(b'subrepos'): - ctx = repo[None] - for subpath in sorted(ctx.substate): - sub = ctx.sub(subpath) - ret = min(ret, sub.outgoing(ui, dests, opts)) - return ret - - -def _outgoing_filter(repo, revs, opts): - """apply revision filtering/ordering option for outgoing""" - limit = logcmdutil.getlimit(opts) - no_merges = opts.get(b'no_merges') - if opts.get(b'newest_first'): - revs.reverse() - if limit is None and not no_merges: - for r in revs: - yield r - return - - count = 0 - cl = repo.changelog - for n in revs: - if limit is not None and count >= limit: - break - parents = [p for p in cl.parents(n) if p != repo.nullid] - if no_merges and len(parents) == 2: - continue - count += 1 - yield n - - -def outgoing(ui, repo, dests, opts, subpath=None): - if opts.get(b'graph'): - logcmdutil.checkunsupportedgraphflags([], opts) - o, others = _outgoing(ui, repo, dests, opts, subpath=subpath) - ret = 1 - try: - if o: - ret = 0 - - if opts.get(b'graph'): - revdag = logcmdutil.graphrevs(repo, o, opts) - ui.pager(b'outgoing') - displayer = logcmdutil.changesetdisplayer( - ui, repo, opts, buffered=True - ) - logcmdutil.displaygraph( - ui, repo, revdag, displayer, graphmod.asciiedges - ) - else: - ui.pager(b'outgoing') - displayer = logcmdutil.changesetdisplayer(ui, repo, opts) - for n in _outgoing_filter(repo, o, opts): - displayer.show(repo[n]) - displayer.close() - for oth in others: - cmdutil.outgoinghooks(ui, repo, oth, opts, o) - ret = min(ret, _outgoing_recurse(ui, repo, dests, opts)) - return ret # exit code is zero since we found outgoing changes - finally: - for oth in others: - oth.close() - - def verify(repo, level=None): """verify the consistency of a repository""" ret = verifymod.verify(repo, level=level)