Merge branch 'ne/maint-1.6.0-diff-tree-t-r-show-directory'
* ne/maint-1.6.0-diff-tree-t-r-show-directory: diff-tree -r -t: include added/removed directories in the output
This commit is contained in:
commit
4197195bee
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
|
@ -239,6 +239,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