From: Junio C Hamano Date: Tue, 14 Oct 2025 19:56:08 +0000 (-0700) Subject: Merge branch 'pw/add-p-hunk-splitting-fix' X-Git-Tag: v2.52.0-rc0~58 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=243a61d2cffe790ba811f5a7922a7e6a365b2922;p=thirdparty%2Fgit.git Merge branch 'pw/add-p-hunk-splitting-fix' Marking a hunk 'selected' in "git add -p" and then splitting made all the split pieces 'selected'; this has been changed to make them all 'undecided', which gives better end-user experience. * pw/add-p-hunk-splitting-fix: add-patch: update hunk splitability after editing add -p: mark split hunks as undecided --- 243a61d2cffe790ba811f5a7922a7e6a365b2922 diff --cc t/t3701-add-interactive.sh index d9fe289a7a,13739a4582..b3cc152cc4 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@@ -1343,15 -1299,37 +1343,46 @@@ d test_must_fail git $cmd --inter-hunk-context 2 2>actual && test_grep -E ".--inter-hunk-context. requires .(--interactive/)?--patch." actual ' + + test_expect_success "$cmd falls back to color.ui" ' + git reset --hard patch-base && + echo working-tree >file && + test_write_lines y | + force_color git -c color.ui=false $cmd -p >output.raw 2>&1 && + test_decode_color output && + test_cmp output.raw output + ' done + test_expect_success 'splitting previous hunk marks split hunks as undecided' ' + test_write_lines a " " b c d e f g h i j k >file && + git add file && + test_write_lines x " " b y d e f g h i j x >file && + test_write_lines n K s n y q | git add -p file && + git cat-file blob :file >actual && + test_write_lines a " " b y d e f g h i j k >expect && + test_cmp expect actual + ' + + test_expect_success 'splitting edited hunk' ' + # Before the first hunk is edited it can be split into two + # hunks, after editing it can be split into three hunks. + + write_script fake-editor.sh <<-\EOF && + sed "s/^ c/-c/" "$1" >"$1.tmp" && + mv "$1.tmp" "$1" + EOF + + test_write_lines a b c d e f g h i j k l m n >file && + git add file && + test_write_lines A b c d E f g h i j k l M n >file && + ( + test_set_editor "$(pwd)/fake-editor.sh" && + test_write_lines e K s j y n y q | git add -p file + ) && + git cat-file blob :file >actual && + test_write_lines a b d e f g h i j k l M n >expect && + test_cmp expect actual + ' + test_done