diff options
author | Palmer Dabbelt <palmer@rivosinc.com> | 2023-02-01 17:33:02 +0000 |
---|---|---|
committer | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2023-02-01 15:22:12 -0500 |
commit | 7e797fe9e052bbc97f4ee2cf14b3c444c2d01653 (patch) | |
tree | cba5fd6ca69a54ae7c68328186d43488ec23e8ea | |
parent | 173e358ceef3e4e618e3f864ed34e2b200670e54 (diff) | |
download | b4-7e797fe9e052bbc97f4ee2cf14b3c444c2d01653.tar.gz |
shazam: Add the --merge-base argument
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.
Link: https://lore.kernel.org/all/20220913061817.22564-1-zong.li@sifive.com/
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Co-developed-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://msgid.link/20230201173301.54604-1-conor@kernel.org
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
-rw-r--r-- | b4/command.py | 2 | ||||
-rw-r--r-- | b4/mbox.py | 17 | ||||
-rw-r--r-- | man/b4.5.rst | 2 |
3 files changed, 15 insertions, 6 deletions
diff --git a/b4/command.py b/b4/command.py index 304450f..3d769ad 100644 --- a/b4/command.py +++ b/b4/command.py @@ -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 @@ -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 diff --git a/man/b4.5.rst b/man/b4.5.rst index dc00ef2..31beae4 100644 --- a/man/b4.5.rst +++ b/man/b4.5.rst @@ -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 20200313231252.64999-1-keescook@chromium.org |