Browse Source

Merge branch 'rs/format-patch-pathspec-fix'

"git format-patch <args> -- <pathspec>" lost the pathspec when
showing the second and subsequent commits, which has been
corrected.

* rs/format-patch-pathspec-fix:
  2.36 format-patch regression fix
maint
Junio C Hamano 3 years ago
parent
commit
5048b20d1c
  1. 9
      builtin/log.c
  2. 33
      t/t4014-format-patch.sh

9
builtin/log.c

@ -1896,6 +1896,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) @@ -1896,6 +1896,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
rev.diff = 1;
rev.max_parents = 1;
rev.diffopt.flags.recursive = 1;
rev.diffopt.no_free = 1;
rev.subject_prefix = fmt_patch_subject_prefix;
memset(&s_r_opt, 0, sizeof(s_r_opt));
s_r_opt.def = "HEAD";
@ -2021,13 +2022,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) @@ -2021,13 +2022,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)

if (use_stdout) {
setup_pager();
} else if (rev.diffopt.close_file) {
/*
* The diff code parsed --output; it has already opened the
* file, but we must instruct it not to close after each diff.
*/
rev.diffopt.no_free = 1;
} else {
} else if (!rev.diffopt.close_file) {
int saved;

if (!output_directory)

33
t/t4014-format-patch.sh

@ -926,11 +926,40 @@ test_expect_success 'format-patch --numstat should produce a patch' ' @@ -926,11 +926,40 @@ test_expect_success 'format-patch --numstat should produce a patch' '
'

test_expect_success 'format-patch -- <path>' '
git format-patch main..side -- file 2>error &&
! grep "Use .--" error
rm -f *.patch &&
git checkout -b pathspec main &&

echo file_a 1 >file_a &&
echo file_b 1 >file_b &&
git add file_a file_b &&
git commit -m pathspec_initial &&

echo file_a 2 >>file_a &&
git add file_a &&
git commit -m pathspec_a &&

echo file_b 2 >>file_b &&
git add file_b &&
git commit -m pathspec_b &&

echo file_a 3 >>file_a &&
echo file_b 3 >>file_b &&
git add file_a file_b &&
git commit -m pathspec_ab &&

cat >expect <<-\EOF &&
0001-pathspec_initial.patch
0002-pathspec_a.patch
0003-pathspec_ab.patch
EOF

git format-patch main..pathspec -- file_a >output &&
test_cmp expect output &&
! grep file_b *.patch
'

test_expect_success 'format-patch --ignore-if-in-upstream HEAD' '
git checkout side &&
git format-patch --ignore-if-in-upstream HEAD
'


Loading…
Cancel
Save