[PATCH 4 of 4 accept-scripts] land: fix logic so that reviewers work as intended

Augie Fackler raf at durin42.com
Wed Jun 12 00:52:25 EDT 2019


# HG changeset patch
# User Augie Fackler <raf at durin42.com>
# Date 1560313366 14400
#      Wed Jun 12 00:22:46 2019 -0400
# Node ID e696629f153d7fcfa11f7046c43dff1fb1a79373
# Parent  eca3ad69186b71aceb657be4e884f2a199fa784c
land: fix logic so that reviewers work as intended

The intent was for 1 accepter + 1 reviewer _or_ two accepters to be
able to land things. Somehow, the reviewer-and-accepter case was never
implemented, and mysteriously went unnoticed until now.

diff --git a/accept.py b/accept.py
--- a/accept.py
+++ b/accept.py
@@ -124,6 +124,10 @@ class commitqueue(object):
     def accepted(self, commit):
         al = self.accepters(commit)
         if len(al) >= 2:
+            # Two valid accept stamps
+            return True
+        if al and len(set(self.reviewers(commit) + al)) >= 2:
+            # pushed by a reviewer, stamped by a committer
             return True
         return False
 
diff --git a/accepted b/accepted
--- a/accepted
+++ b/accepted
@@ -9,4 +9,4 @@ cq = accept.commitqueue(config.load().so
 for n in cq.commits():
     a = cq.accepted(n)
     if a:
-        print n, " ".join(cq.accepters(n))
+        print n, " ".join(sorted(set(cq.reviewers(n) + cq.accepters(n))))
diff --git a/land b/land
--- a/land
+++ b/land
@@ -128,7 +128,8 @@ if take:
                 f.write('%(node)s %(author)s %(accepters)s\n' % {
                     'node': node,
                     'author': cq.author(node),
-                    'accepters': ' '.join(cq.accepted(node)),
+                    'accepters': ' '.join(
+                        sorted(set(cq.reviewers(node) + cq.accepters(node)))),
                 })
 else:
     logging.debug("not landing any changes")
diff --git a/tests/test-land.t b/tests/test-land.t
--- a/tests/test-land.t
+++ b/tests/test-land.t
@@ -170,17 +170,26 @@ pushed by a reviewer, not a full accepte
   o  0:1ea7 default
   
   $ accepted
+  01241442b3c2bf3211e593b549c655ea65b295e3 bob fred
   ad9193bbd7242c2bb6df4bb3cf71d0ce2e68457c alice bob
   0d90bd0be154baaf1b9e9eb4906e031d2874ece2 alice bob
   a500f39c86e6e58d237748a861d3a5567101bd48 alice bob
   eefd39cebb36c0cbc653ebf033972850e44801fd alice bob
-BUG: we don't accept 1 reviewer and one accepter as being accepted.
   $ blocker
-  01241442b3c2bf3211e593b549c655ea65b295e3 bob
   $ land
   $ hg log -G -T'{rev}:{node|shortest} {branch} {tags}\n' -R ../complextgt
-  o  2:0acc stable tip
+  o  7:eefd default tip
   |
+  o    6:a500 default
+  |\
+  | o  5:0d90 stable
+  | |
+  o |  4:ad91 default
+  |\|
+  o |  3:0124 default
+  | |
+  | o  2:0acc stable
+  |/
   o  1:66f7 default
   |
   o  0:1ea7 default


More information about the Mercurial-devel mailing list