Hi, On Sat, May 11, 2024 at 10:08:47PM GMT, Alejandro Colomar wrote: > Hi Phillip, > > On Sat, May 11, 2024 at 04:01:18PM GMT, Phillip Wood wrote: > > sequencer.c. If we go for the "write new trees and use those in the merge" > > approach then we'd need to change do_pick_commit() to create the trees and > > we'd probably want to change do_recursive_merge() to take trees rather than > > commits. We'd also need to add a new pathspec member to struct replay_opts > > to pass the pathspec around. > > I've been thinking this evening that since > `git format-patch ... | git am -3` works so well, and since the behavior > of cherry-pick -- path isn't so obvious (we're discussing different > strategies), maybe we should just not do it. I fell in love with am -3. In the end, I'm using the following: $ git log --oneline 2024a..tz/main -- tzfile.5 tzselect.8 zic.8 zdump.8 \ | awk '{print $1}' \ | tac \ | while read c; do git format-patch --stdout -1 $c -- tzfile.5 tzselect.8 z*.8 \ | sed '/^---$/s/^/\n/' \ | sed "/^---$/i Cherry-picked-from: tz.git $( \ git log -1 --oneline --abbrev=12 $c \ | awk '{print $1}' \ ) (\"$( \ git log -1 --oneline $c \ | sed 's/[^ ]* //' \ )\")"; done \ | git am -3 -s; And it works like a charm. If I had to spell that as a git-cherry-pick(1) command, I'd say `git cherry-pick -x -s 2024a..tz/main -- tzfile.5 tzselect.8 zic.8 zdump.8` BTW, there's something I noticed when I had an accident (forgot to tac(1) the commit list): the git-am(1) conflicts session isn't as good as a cherry-pick one: it doesn't show which commits are being applied. If you're in the middle of a 50-commit cherry-pick, it's hard to see where it's going wrong. So maybe adding this functionallity to git-cherry-pick(1) could be a good thing. Have a lovely day! Alex -- <https://www.alejandro-colomar.es/>
Attachment:
signature.asc
Description: PGP signature