Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Christian Couder 2014-07-19 17:01:09 +02:00 коммит произвёл Junio C Hamano
Родитель 4228e8bc98
Коммит adf8e54238
1 изменённых файлов: 44 добавлений и 1 удалений

Просмотреть файл

@ -8,7 +8,7 @@ exec </dev/null
. ./test-lib.sh
add_and_commit_file()
add_and_commit_file ()
{
_file="$1"
_msg="$2"
@ -18,6 +18,38 @@ add_and_commit_file()
git commit --quiet -m "$_file: $_msg"
}
commit_buffer_contains_parents ()
{
git cat-file commit "$1" >payload &&
sed -n -e '/^$/q' -e '/^parent /p' <payload >actual &&
shift &&
for _parent
do
echo "parent $_parent"
done >expected &&
test_cmp expected actual
}
commit_peeling_shows_parents ()
{
_parent_number=1
_commit="$1"
shift &&
for _parent
do
_found=$(git rev-parse --verify $_commit^$_parent_number) || return 1
test "$_found" = "$_parent" || return 1
_parent_number=$(( $_parent_number + 1 ))
done &&
test_must_fail git rev-parse --verify $_commit^$_parent_number
}
commit_has_parents ()
{
commit_buffer_contains_parents "$@" &&
commit_peeling_shows_parents "$@"
}
HASH1=
HASH2=
HASH3=
@ -351,4 +383,15 @@ test_expect_success 'replace ref cleanup' '
test -z "$(git replace)"
'
test_expect_success '--graft with and without already replaced object' '
test $(git log --oneline | wc -l) = 7 &&
git replace --graft $HASH5 &&
test $(git log --oneline | wc -l) = 3 &&
commit_has_parents $HASH5 &&
test_must_fail git replace --graft $HASH5 $HASH4 $HASH3 &&
git replace --force -g $HASH5 $HASH4 $HASH3 &&
commit_has_parents $HASH5 $HASH4 $HASH3 &&
git replace -d $HASH5
'
test_done