diff mbox series

am: Fix broken guessbranch handling

Message ID 20220331195346.1384515-1-robh@kernel.org (mailing list archive)
State Accepted, archived
Headers show
Series am: Fix broken guessbranch handling | expand

Commit Message

Rob Herring (Arm) March 31, 2022, 7:53 p.m. UTC
b4's usage of git-log '--branches' option is broken. The option takes a
glob pattern *only* and must have an '=', but b4 ends up passing
'--branches <guessbranch>' to git-log. This will kind of work, but is
not checking only 'guessbranch'. For example, these 3 commands all do
something different:

git log -1 --branches=master

git log -1 --branches master

git log -1 --branches=*aster

A maintainer wanting to apply a patch or series likely has a small set of
known branches they apply patches to. Using a glob pattern is not a good
fit for that. Instead, allow --guess-branch to be repeated and to take
fixed refs.

Signed-off-by: Rob Herring <robh@kernel.org>
---
 b4/__init__.py | 4 ++--
 b4/command.py  | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

Comments

Konstantin Ryabitsev June 14, 2022, 8:25 p.m. UTC | #1
On Thu, 31 Mar 2022 14:53:46 -0500, Rob Herring wrote:
> b4's usage of git-log '--branches' option is broken. The option takes a
> glob pattern *only* and must have an '=', but b4 ends up passing
> '--branches <guessbranch>' to git-log. This will kind of work, but is
> not checking only 'guessbranch'. For example, these 3 commands all do
> something different:
> 
> git log -1 --branches=master
> 
> [...]

Applied, thanks!

[1/1] am: Fix broken guessbranch handling
      commit: c95e4d16d87c7c71589c64b1ac94973b354d0820

Best regards,
diff mbox series

Patch

diff --git a/b4/__init__.py b/b4/__init__.py
index ec1a6da44144..be934e53ca0d 100644
--- a/b4/__init__.py
+++ b/b4/__init__.py
@@ -643,7 +643,7 @@  class LoreSeries:
 
         return len(self.indexes), mismatches
 
-    def find_base(self, gitdir: str, branches: Optional[str] = None, maxdays: int = 30) -> Tuple[str, len, len]:
+    def find_base(self, gitdir: str, branches: Optional[list] = None, maxdays: int = 30) -> Tuple[str, len, len]:
         # Find the date of the first patch we have
         pdate = datetime.datetime.now()
         for lmsg in self.patches:
@@ -655,7 +655,7 @@  class LoreSeries:
         # Find latest commit on that date
         guntil = pdate.strftime('%Y-%m-%d')
         if branches:
-            where = ['--branches', branches]
+            where = branches
         else:
             where = ['--all']
 
diff --git a/b4/command.py b/b4/command.py
index 3a2d58f364e5..6d3c899480ec 100644
--- a/b4/command.py
+++ b/b4/command.py
@@ -133,7 +133,7 @@  def cmd():
                        help='Save patches in a quilt-ready folder')
     sp_am.add_argument('-g', '--guess-base', dest='guessbase', action='store_true', default=False,
                        help='Try to guess the base of the series (if not specified)')
-    sp_am.add_argument('-b', '--guess-branch', dest='guessbranch', default=None,
+    sp_am.add_argument('-b', '--guess-branch', dest='guessbranch', nargs='+', action='extend', type=str, default=None,
                        help='When guessing base, restrict to this branch (use with -g)')
     sp_am.add_argument('--guess-lookback', dest='guessdays', type=int, default=21,
                        help='When guessing base, go back this many days from the patch date (default: 2 weeks)')