mirror of
https://github.com/git/git
synced 2024-08-23 18:00:25 +00:00
Merge branch 'jc/diff-tree-stdin-fix' into maint
"diff-tree --stdin" has been broken for about a year, but 2.36 release broke it even worse by breaking running the command with <pathspec>, which in turn broke "gitk" and got noticed. This has been corrected by aligning its behaviour to that of "log". This fixes a regression in 2.36 and is slate to go to 2.36.1 source: <xmqq7d7bsu2n.fsf@gitster.g> * jc/diff-tree-stdin-fix: 2.36 gitk/diff-tree --stdin regression fix
This commit is contained in:
commit
8e5c46e315
|
@ -195,6 +195,7 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
|
||||||
int saved_dcctc = 0;
|
int saved_dcctc = 0;
|
||||||
|
|
||||||
opt->diffopt.rotate_to_strict = 0;
|
opt->diffopt.rotate_to_strict = 0;
|
||||||
|
opt->diffopt.no_free = 1;
|
||||||
if (opt->diffopt.detect_rename) {
|
if (opt->diffopt.detect_rename) {
|
||||||
if (!the_index.cache)
|
if (!the_index.cache)
|
||||||
repo_read_index(the_repository);
|
repo_read_index(the_repository);
|
||||||
|
@ -217,6 +218,8 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
|
||||||
}
|
}
|
||||||
opt->diffopt.degraded_cc_to_c = saved_dcctc;
|
opt->diffopt.degraded_cc_to_c = saved_dcctc;
|
||||||
opt->diffopt.needed_rename_limit = saved_nrl;
|
opt->diffopt.needed_rename_limit = saved_nrl;
|
||||||
|
opt->diffopt.no_free = 0;
|
||||||
|
diff_free(&opt->diffopt);
|
||||||
}
|
}
|
||||||
|
|
||||||
return diff_result_code(&opt->diffopt, 0);
|
return diff_result_code(&opt->diffopt, 0);
|
||||||
|
|
|
@ -1098,6 +1098,7 @@ int log_tree_commit(struct rev_info *opt, struct commit *commit)
|
||||||
opt->loginfo = &log;
|
opt->loginfo = &log;
|
||||||
opt->diffopt.no_free = 1;
|
opt->diffopt.no_free = 1;
|
||||||
|
|
||||||
|
/* NEEDSWORK: no restoring of no_free? Why? */
|
||||||
if (opt->line_level_traverse)
|
if (opt->line_level_traverse)
|
||||||
return line_log_print(opt, commit);
|
return line_log_print(opt, commit);
|
||||||
|
|
||||||
|
|
|
@ -542,6 +542,20 @@ test_expect_success 'diff-tree --stdin with log formatting' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'diff-tree --stdin with pathspec' '
|
||||||
|
cat >expect <<-EOF &&
|
||||||
|
Third
|
||||||
|
|
||||||
|
dir/sub
|
||||||
|
Second
|
||||||
|
|
||||||
|
dir/sub
|
||||||
|
EOF
|
||||||
|
git rev-list master^ |
|
||||||
|
git diff-tree -r --stdin --name-only --format=%s dir >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'diff -I<regex>: setup' '
|
test_expect_success 'diff -I<regex>: setup' '
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
test_seq 50 >file0 &&
|
test_seq 50 >file0 &&
|
||||||
|
|
Loading…
Reference in a new issue