public inbox for tools@linux.kernel.org
 help / color / mirror / Atom feed
* [PATCH b4 0/3] shazam: conflict resolution support for b4 shazam -H
@ 2026-03-06 11:52 Christian Brauner
  2026-03-06 11:52 ` [PATCH b4 1/3] shazam: refactor git_fetch_am_into_repo for deterministic worktree Christian Brauner
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Christian Brauner @ 2026-03-06 11:52 UTC (permalink / raw)
  To: Kernel.org Tools
  Cc: Christian Brauner, Konstantin Ryabitsev, Christian Brauner,
	Claude Opus 4.6

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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-03-24 11:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-06 11:52 [PATCH b4 0/3] shazam: conflict resolution support for b4 shazam -H Christian Brauner
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox