mirror of
https://github.com/git/git
synced 2024-08-25 10:45:59 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
When the command line has "--" disambiguator, we take the remainder of argv[] as "prune_data", but when --stdin is given at the same time, we need to append to the existing prune_data and end up attempting to realloc(3) it. That would not work. Fix it by consistently using append_prune_data() throughout the input processing. Also avoid counting the number of existing paths in the function over and over again. Signed-off-by: Junio C Hamano <gitster@pobox.com>
79 lines
1.3 KiB
Bash
Executable file
79 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2009, Junio C Hamano
|
|
#
|
|
|
|
test_description='log family learns --stdin'
|
|
|
|
. ./test-lib.sh
|
|
|
|
check () {
|
|
for cmd in rev-list "log --stat"
|
|
do
|
|
for i in "$@"
|
|
do
|
|
printf "%s\n" $i
|
|
done >input &&
|
|
test_expect_success "check $cmd $*" '
|
|
git $cmd $(cat input) >expect &&
|
|
git $cmd --stdin <input >actual &&
|
|
sed -e "s/^/input /" input &&
|
|
sed -e "s/^/output /" expect &&
|
|
test_cmp expect actual
|
|
'
|
|
done
|
|
}
|
|
|
|
them='1 2 3 4 5 6 7'
|
|
|
|
test_expect_success setup '
|
|
(
|
|
for i in 0 $them
|
|
do
|
|
for j in $them
|
|
do
|
|
echo $i.$j >file-$j &&
|
|
git add file-$j || exit
|
|
done &&
|
|
test_tick &&
|
|
git commit -m $i || exit
|
|
done &&
|
|
for i in $them
|
|
do
|
|
git checkout -b side-$i master~$i &&
|
|
echo updated $i >file-$i &&
|
|
git add file-$i &&
|
|
test_tick &&
|
|
git commit -m side-$i || exit
|
|
done
|
|
)
|
|
'
|
|
|
|
check master
|
|
check side-1 ^side-4
|
|
check side-1 ^side-7 --
|
|
check side-1 ^side-7 -- file-1
|
|
check side-1 ^side-7 -- file-2
|
|
check side-3 ^side-4 -- file-3
|
|
check side-3 ^side-2
|
|
check side-3 ^side-2 -- file-1
|
|
|
|
test_expect_success 'not only --stdin' '
|
|
cat >expect <<-EOF &&
|
|
7
|
|
|
|
file-1
|
|
file-2
|
|
EOF
|
|
cat >input <<-EOF &&
|
|
^master^
|
|
--
|
|
file-2
|
|
EOF
|
|
git log --pretty=tformat:%s --name-only --stdin master -- file-1 \
|
|
<input >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|