[Request] [+- ] D10382: outgoing: move filtering logic in its own function

marmoute (Pierre-Yves David) phabricator at mercurial-scm.org
Tue Apr 13 14:52:41 UTC 2021


marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This move code dedicated to a single purpose together and make the main code
  simpler. Right when we are getting ready to make it more complex :-D

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D10382

AFFECTED FILES
  mercurial/hg.py

CHANGE DETAILS

diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -1358,27 +1358,40 @@
     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 != nullid]
+        if no_merges and len(parents) == 2:
+            continue
+        count += 1
+        yield n
+
+
 def outgoing(ui, repo, dest, opts):
 
-    limit = logcmdutil.getlimit(opts)
     o, other = _outgoing(ui, repo, dest, opts)
     ret = 1
     try:
         if o:
             ret = 0
 
-            if opts.get(b'newest_first'):
-                o.reverse()
             ui.pager(b'outgoing')
             displayer = logcmdutil.changesetdisplayer(ui, repo, opts)
-            count = 0
-            for n in o:
-                if limit is not None and count >= limit:
-                    break
-                parents = [p for p in repo.changelog.parents(n) if p != nullid]
-                if opts.get(b'no_merges') and len(parents) == 2:
-                    continue
-                count += 1
+            for n in _outgoing_filter(repo, o, opts):
                 displayer.show(repo[n])
             displayer.close()
         cmdutil.outgoinghooks(ui, repo, other, opts, o)



To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20210413/480eb614/attachment-0001.html>


More information about the Mercurial-patches mailing list