diff-tree -r -t: include added/removed directories in the output
We used to include only the modified and typechanged directories in the ouptut, but for consistency's sake, we should also include added and removed ones as well. This makes the output more consistent, but it may break existing scripts that expect to see the current output which has long been the established behaviour. Signed-off-by: Nick Edelen <sirnot@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c97038d1cf
commit
df533f34a3
53
t/t4037-diff-r-t-dirs.sh
Executable file
53
t/t4037-diff-r-t-dirs.sh
Executable file
@ -0,0 +1,53 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='diff -r -t shows directory additions and deletions'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success setup '
|
||||
mkdir dc dr dt &&
|
||||
>dc/1 &&
|
||||
>dr/2 &&
|
||||
>dt/3 &&
|
||||
>fc &&
|
||||
>fr &&
|
||||
>ft &&
|
||||
git add . &&
|
||||
test_tick &&
|
||||
git commit -m initial &&
|
||||
|
||||
rm -fr dt dr ft fr &&
|
||||
mkdir da ft &&
|
||||
for p in dc/1 da/4 dt ft/5 fc
|
||||
do
|
||||
echo hello >$p || exit
|
||||
done &&
|
||||
git add -u &&
|
||||
git add . &&
|
||||
test_tick &&
|
||||
git commit -m second
|
||||
'
|
||||
|
||||
cat >expect <<\EOF
|
||||
A da
|
||||
A da/4
|
||||
M dc
|
||||
M dc/1
|
||||
D dr
|
||||
D dr/2
|
||||
A dt
|
||||
D dt
|
||||
D dt/3
|
||||
M fc
|
||||
D fr
|
||||
D ft
|
||||
A ft
|
||||
A ft/5
|
||||
EOF
|
||||
|
||||
test_expect_success verify '
|
||||
git diff-tree -r -t --name-status HEAD^ HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
@ -233,6 +233,12 @@ static void show_entry(struct diff_options *opt, const char *prefix, struct tree
|
||||
if (!tree || type != OBJ_TREE)
|
||||
die("corrupt tree sha %s", sha1_to_hex(sha1));
|
||||
|
||||
if (DIFF_OPT_TST(opt, TREE_IN_RECURSIVE)) {
|
||||
newbase[baselen + pathlen] = 0;
|
||||
opt->add_remove(opt, *prefix, mode, sha1, newbase);
|
||||
newbase[baselen + pathlen] = '/';
|
||||
}
|
||||
|
||||
init_tree_desc(&inner, tree, size);
|
||||
show_tree(opt, prefix, &inner, newbase, baselen + 1 + pathlen);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user