mrlib.py: add comments2mrs
authorFrantisek Hrbata <frantisek@hrbata.com>
Thu, 10 Dec 2020 17:34:26 +0000 (18:34 +0100)
committerFrantisek Hrbata <frantisek@hrbata.com>
Fri, 11 Dec 2020 08:21:07 +0000 (09:21 +0100)
Signed-off-by: Frantisek Hrbata <frantisek@hrbata.com>
mrlib.py

index 1ade76cdc7cca3dee6e77939ce65119407563bc2..8ba886d45b1e59d199e38c00bf6aeae7269f22b5 100755 (executable)
--- a/mrlib.py
+++ b/mrlib.py
@@ -147,9 +147,12 @@ def verify_comments(comments, refs):
 
     mboxes = filter_revs(refs, types=["mbox"])
     stdin = "\n".join(mboxes)
-    rv, out, err = run(["git", "rev-list", "--stdin"], stdin=stdin)
+    if stdin:
+        rv, out, err = run(["git", "rev-list", "--stdin"], stdin=stdin)
+        valid = set(out.strip().split("\n"))
+    else:
+        valid = set()
 
-    valid = set(out.strip().split("\n"))
     diff = revs - valid
     if diff:
         sys.exit("Invalid or non-existing comment: {}".format(" ".join(diff)))
@@ -171,6 +174,21 @@ def verify_commits(mrcommits, commits):
 
     return list(revs)
 
+def comments2mrs(refs, mrs=None):
+    mb_refs = filter_refs(refs, mrs=mrs, types=["mbox"])
+
+    stdin = "\n".join(ref for rev, ref in mb_refs)
+    rv, out, err = run(["git", "log", "--format=%S %H", "--stdin"],
+            stdin=stdin)
+
+    m = dict()
+    for line in out.strip().split("\n"):
+        ref, rev = line.split()
+        mr = ref.split('/')[2]
+        m[rev] = mr
+
+    return m
+
 def add_tag(tags, mr, commit, tag, user, value):
     if mr not in tags:
         tags[mr] = dict()