From: Christian Brauner <brauner@kernel.org>
To: "Kernel.org Tools" <tools@kernel.org>
Cc: Christian Brauner <christian@amutable.com>,
Konstantin Ryabitsev <konstantin@linuxfoundation.org>,
Christian Brauner <brauner@kernel.org>,
"Claude Opus 4.6" <noreply@anthropic.com>
Subject: [PATCH b4 0/3] shazam: conflict resolution support for b4 shazam -H
Date: Fri, 06 Mar 2026 12:52:23 +0100 [thread overview]
Message-ID: <20260306-master-v1-0-5a4b9cbe11d7@kernel.org> (raw)
When b4 shazam -H applies patches via git-am in a sparse worktree,
conflicts cause the worktree to be destroyed before the user can act.
Additionally, three-way merge was never enabled, so even
auto-resolvable conflicts would fail.
This series fixes both problems and adds a conflict resolution
workflow:
Patch 1 refactors git_fetch_am_into_repo to use a deterministic
worktree path and a structured AmConflictError exception, laying the
groundwork for the worktree to survive a failed git-am.
Patch 2 passes -3 to git-am so three-way merge is attempted
automatically, and adds a shazam-am-flags config option for further
customization.
Patch 3 adds --resolve, --continue, and --abort flags. With
--resolve, a conflict triggers a workflow where successfully applied
patches are fetched into FETCH_HEAD, a no-ff no-commit merge is
started in the user's working tree, and remaining patches are applied
one at a time with git apply --3way. The user resolves conflicts with
their normal tools in their full working tree rather than in the
sparse worktree.
Sample output:
brauner@so61 ⊼οѕ ~/src/git/linux/vfs/vfs-7.1.casefolding|vfs-7.1.casefolding $%=
> b4 shazam -H --merge-base=HEAD --sloppy-trailers --resolve 20260217214741.1928576-1-cel@kernel.org
Looking up https://lore.kernel.org/20260217214741.1928576-1-cel@kernel.org/
Grabbing thread from lore.kernel.org/all/20260217214741.1928576-1-cel@kernel.org/t.mbox.gz
Checking for newer revisions
Grabbing search results from lore.kernel.org
Analyzing 22 messages in the thread
Analyzing 49 code-review messages
Checking attestation on all messages, may take a moment...
---
✓ [PATCH v8 1/17] fs: Move file_kattr initialization to callers
+ Link: https://patch.msgid.link/20260217214741.1928576-2-cel@kernel.org
+ Reviewed-by: Jan Kara <jack@suse.cz> (✓ DKIM/suse.cz)
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 2/17] fs: Add case sensitivity flags to file_kattr
+ Link: https://patch.msgid.link/20260217214741.1928576-3-cel@kernel.org
+ Reviewed-by: Jan Kara <jack@suse.cz> (✓ DKIM/suse.cz)
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 3/17] fat: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-4-cel@kernel.org
+ Reviewed-by: Jan Kara <jack@suse.cz> (✓ DKIM/suse.cz)
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 4/17] exfat: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-5-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 5/17] ntfs3: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-6-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 6/17] hfs: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-7-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 7/17] hfsplus: Report case sensitivity in fileattr_get
+ Link: https://patch.msgid.link/20260217214741.1928576-8-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 8/17] ext4: Report case sensitivity in fileattr_get
+ Link: https://patch.msgid.link/20260217214741.1928576-9-cel@kernel.org
+ Acked-by: Theodore Ts'o <tytso@mit.edu> (✓ DKIM/mit.edu)
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 9/17] xfs: Report case sensitivity in fileattr_get
+ Link: https://patch.msgid.link/20260217214741.1928576-10-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 10/17] cifs: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-11-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 11/17] nfs: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-12-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 12/17] f2fs: Add case sensitivity reporting to fileattr_get
+ Link: https://patch.msgid.link/20260217214741.1928576-13-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 13/17] vboxsf: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-14-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 14/17] isofs: Implement fileattr_get for case sensitivity
+ Link: https://patch.msgid.link/20260217214741.1928576-15-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 15/17] nfsd: Report export case-folding via NFSv3 PATHCONF
+ Link: https://patch.msgid.link/20260217214741.1928576-16-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 16/17] nfsd: Implement NFSv4 FATTR4_CASE_INSENSITIVE and FATTR4_CASE_PRESERVING
+ Link: https://patch.msgid.link/20260217214741.1928576-17-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
✓ [PATCH v8 17/17] ksmbd: Report filesystem case sensitivity via FS_ATTRIBUTE_INFORMATION
+ Link: https://patch.msgid.link/20260217214741.1928576-18-cel@kernel.org
+ Signed-off-by: Christian Brauner <brauner@kernel.org>
---
✓ Signed: DKIM/kernel.org
---
Total patches: 17
---
Base: HEAD
Magic: Preparing a sparse worktree
---
Applying: fs: Move file_kattr initialization to callers
Applying: fs: Add case sensitivity flags to file_kattr
Applying: fat: Implement fileattr_get for case sensitivity
Applying: exfat: Implement fileattr_get for case sensitivity
Applying: ntfs3: Implement fileattr_get for case sensitivity
Applying: hfs: Implement fileattr_get for case sensitivity
Applying: hfsplus: Report case sensitivity in fileattr_get
Applying: ext4: Report case sensitivity in fileattr_get
Applying: xfs: Report case sensitivity in fileattr_get
Applying: cifs: Implement fileattr_get for case sensitivity
Applying: nfs: Implement fileattr_get for case sensitivity
Applying: f2fs: Add case sensitivity reporting to fileattr_get
Applying: vboxsf: Implement fileattr_get for case sensitivity
Applying: isofs: Implement fileattr_get for case sensitivity
Applying: nfsd: Report export case-folding via NFSv3 PATHCONF
Applying: nfsd: Implement NFSv4 FATTR4_CASE_INSENSITIVE and FATTR4_CASE_PRESERVING
Using index info to reconstruct a base tree...
M fs/nfsd/nfs4xdr.c
Falling back to patching base and 3-way merge...
Patch failed at 0016 nfsd: Implement NFSv4 FATTR4_CASE_INSENSITIVE and FATTR4_CASE_PRESERVING
error: Your local changes to the following files would be overwritten by merge:
fs/nfsd/nfs4xdr.c
Please commit your changes or stash them before you merge.
Aborting
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config advice.mergeConflict false"
---
Patch series did not apply cleanly, resolving...
Fetching successfully applied patches into FETCH_HEAD
Merging successfully applied patches into your branch...
Applying remaining patch 1/2...
---
Applied patch to 'fs/nfsd/nfs4xdr.c' with conflicts.
U fs/nfsd/nfs4xdr.c
Resolved 'fs/nfsd/nfs4xdr.c' using previous resolution.
---
Remaining patch 1/2 did not apply cleanly.
Resolve conflicts in your working tree, then run: b4 shazam --continue
To abort: b4 shazam --abort
brauner@so61 ⊼οѕ ~/src/git/linux/vfs/vfs-7.1.casefolding|vfs-7.1.casefolding *+$%=|MERGING
> git add fs/nfsd/nfs4xdr.c
brauner@so61 ⊼οѕ ~/src/git/linux/vfs/vfs-7.1.casefolding|vfs-7.1.casefolding +$%=|MERGING
> b4 shazam --continue
Applying remaining patch 2/2...
Invoking: git commit -F /home/brauner/src/git/linux/vfs/master/.git/worktrees/vfs-7.1.casefolding/b4-cover --signoff --edit
[vfs-7.1.casefolding b125478aef10] Merge patch series "Subject: Exposing case folding behavior"
Signed-off-by: Christian Brauner <brauner@kernel.org>
---
Christian Brauner (3):
shazam: refactor git_fetch_am_into_repo for deterministic worktree
shazam: enable three-way merge for b4 shazam -H
shazam: enable merge conflict resolution for b4 shazam -H --resolve
src/b4/__init__.py | 51 ++++++--
src/b4/command.py | 6 +
src/b4/mbox.py | 361 +++++++++++++++++++++++++++++++++++++++++++++++++----
3 files changed, 385 insertions(+), 33 deletions(-)
---
base-commit: 5b4eaae60fd938a865dda1916885e9a1c7ddce8a
change-id: 20260306-master-89938331cc50
next reply other threads:[~2026-03-06 11:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-06 11:52 Christian Brauner [this message]
2026-03-06 11:52 ` [PATCH b4 1/3] shazam: refactor git_fetch_am_into_repo for deterministic worktree Christian Brauner
2026-03-06 16:10 ` Konstantin Ryabitsev
2026-03-24 11:33 ` Christian Brauner
2026-03-06 11:52 ` [PATCH b4 2/3] shazam: enable three-way merge for b4 shazam -H Christian Brauner
2026-03-06 11:52 ` [PATCH b4 3/3] shazam: enable merge conflict resolution for b4 shazam -H --resolve Christian Brauner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260306-master-v1-0-5a4b9cbe11d7@kernel.org \
--to=brauner@kernel.org \
--cc=christian@amutable.com \
--cc=konstantin@linuxfoundation.org \
--cc=noreply@anthropic.com \
--cc=tools@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox