Skip to contentSkip to conversation

shazam: Add the --merge-base argument

PATCH Applied Conor Dooley 3 participants 4 messages Feb 1, 2023 – Feb 3, 2023

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 shazam: Add the --merge-base argument

From: Palmer Dabbelt <[email protected]>

I was just handling a patch set where the author used English to describe the dependencies. They hadn't yet been merged at the time the patch set was posted so I don't think there's really any way to make sure the computers always understand the base, this just lets me quickly override the automatic merge base detection when I run into something non-canonical.

---
Been running this fixed up version for a bit now with no issues. Dunno if the last submission didn't end up in an inbox for some reason, but figured I'd resend with my fixes.
The changelog is the diff I attached in my response to the v1:
https://lore.kernel.org/tools/Y8199aCGNIW37YGx@spud/T/#m9fbe4c02429ec0601e5ff93fbe1aaecb368f736c

---
 b4/command.py |  2 ++
 b4/mbox.py    | 17 +++++++++++------
 man/b4.5.rst  |  2 ++
 3 files changed, 15 insertions(+), 6 deletions(-)
b4/command.py +2 -0
index 304450f..3d769ad 100644
@@ -175,6 +175,8 @@ def setup_parser() -> argparse.ArgumentParser:
     sp_sh.add_argument('--guess-lookback', dest='guessdays', type=int, default=21,
                        help=('(use with -H or -M) When guessing base, go back this many days from the patch date '
                              '(default: 3 weeks)'))
+    sp_sh.add_argument('--merge-base', dest='mergebase', type=str, default=None,
+                       help=('(use with -H or -M) Force this base when merging'))
     sp_sh.set_defaults(func=cmd_shazam)
 
     # b4 pr
b4/mbox.py +11 -6
index e0c6a0a..0b0fc40 100644
@@ -211,14 +211,17 @@ def make_am(msgs: List[email.message.Message], cmdargs: argparse.Namespace, msgi
         logger.critical(' Link: %s', linkurl)
 
     base_commit = None
-    matches = re.search(r'base-commit: .*?([\da-f]+)', first_body, re.MULTILINE)
-    if matches:
-        base_commit = matches.groups()[0]
+    if cmdargs.mergebase:
+        base_commit = cmdargs.mergebase
     else:
-        # Try a more relaxed search
-        matches = re.search(r'based on .*?([\da-f]{40})', first_body, re.MULTILINE)
+        matches = re.search(r'base-commit: .*?([\da-f]+)', first_body, re.MULTILINE)
         if matches:
             base_commit = matches.groups()[0]
+        else:
+            # Try a more relaxed search
+            matches = re.search(r'based on .*?([\da-f]{40})', first_body, re.MULTILINE)
+            if matches:
+                base_commit = matches.groups()[0]
 
     if base_commit and topdir:
         # Does it actually exist in this tree?
@@ -670,8 +673,8 @@ def refetch(dest: str) -> None:
 
 
 def main(cmdargs: argparse.Namespace) -> None:
+    # We force some settings
     if cmdargs.subcmd == 'shazam':
-        # We force some settings
         cmdargs.checknewer = True
         cmdargs.threeway = False
         cmdargs.nopartialreroll = False
@@ -683,6 +686,8 @@ def main(cmdargs: argparse.Namespace) -> None:
             cmdargs.guessbase = True
         else:
             cmdargs.guessbase = False
+    else:
+        cmdargs.mergebase = False
 
     if cmdargs.checknewer:
         # Force nocache mode
man/b4.5.rst +2 -0
index dc00ef2..31beae4 100644
@@ -230,6 +230,8 @@ options:
                         Attempt to merge series as if it were a pull request (execs git-merge)
   --guess-lookback GUESSDAYS
                         (use with -H or -M) When guessing base, go back this many days from the patch date (default: 3 weeks)
+  --merge-base COMMIT
+                        (use with -H or -M) Force this base when merging
 
 *Example*: b4 shazam -H [email protected]
 
Signature · 1 line
2.39.1
#1 lore raw
Quoted 8 lines · Conor Dooley

I was just handling a patch set where the author used English to describe the dependencies. They hadn't yet been merged at the time the patch set was posted so I don't think there's really any way to make sure the computers always understand the base, this just lets me quickly override the automatic merge base detection when I run into something non-canonical.

[...]

Applied, thanks!

[1/1] shazam: Add the --merge-base argument

      commit: 7e797fe9e052bbc97f4ee2cf14b3c444c2d01653

Best regards,

Signature · 1 line
Konstantin Ryabitsev <[email protected]>
#2 lore raw
Quoted 9 lines · Konstantin Ryabitsev
Quoted 7 lines · Conor Dooley

I was just handling a patch set where the author used English to describe the dependencies. They hadn't yet been merged at the time the patch set was posted so I don't think there's really any way to make sure the computers always understand the base, this just lets me quickly override the automatic merge base detection when I run into something non-canonical.

Quoted 6 lines
Quoted 1 line

[...]

Applied, thanks!

[1/1] shazam: Add the --merge-base argument

      commit: 7e797fe9e052bbc97f4ee2cf14b3c444c2d01653

Great, thanks Konstantin!

#3 lore raw
Quoted 10 lines · Conor Dooley
Quoted 9 lines · Konstantin Ryabitsev
Quoted 7 lines · Conor Dooley

I was just handling a patch set where the author used English to describe the dependencies. They hadn't yet been merged at the time the patch set was posted so I don't think there's really any way to make sure the computers always understand the base, this just lets me quickly override the automatic merge base detection when I run into something non-canonical.

Quoted 8 lines
Quoted 6 lines
Quoted 1 line

[...]

Applied, thanks!

[1/1] shazam: Add the --merge-base argument

      commit: 7e797fe9e052bbc97f4ee2cf14b3c444c2d01653

Great, thanks Konstantin!

Ya, thanks for sorting this out guys. I think I've got a few more patches floating around, I haven't poked my tree for a bit.