You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.1 KiB
80 lines
2.1 KiB
20 years ago
|
#!/bin/sh
|
||
|
#
|
||
|
# Copyright (c) 2005 Junio C Hamano
|
||
|
#
|
||
|
|
||
|
test_description='Test pulling deltified objects
|
||
|
|
||
|
'
|
||
|
. ./test-lib.sh
|
||
|
|
||
|
locate_obj='s|\(..\)|.git/objects/\1/|'
|
||
|
|
||
|
test_expect_success \
|
||
|
setup \
|
||
|
'cat ../README >a &&
|
||
|
git-update-cache --add a &&
|
||
|
a0=`git-ls-files --stage |
|
||
|
sed -e '\''s/^[0-7]* \([0-9a-f]*\) .*/\1/'\''` &&
|
||
|
|
||
|
sed -e 's/test/TEST/g' ../README >a &&
|
||
|
git-update-cache a &&
|
||
|
a1=`git-ls-files --stage |
|
||
|
sed -e '\''s/^[0-7]* \([0-9a-f]*\) .*/\1/'\''` &&
|
||
|
tree=`git-write-tree` &&
|
||
|
commit=`git-commit-tree $tree </dev/null` &&
|
||
|
a0f=`echo "$a0" | sed -e "$locate_obj"` &&
|
||
|
a1f=`echo "$a1" | sed -e "$locate_obj"` &&
|
||
|
echo commit $commit &&
|
||
|
echo a0 $a0 &&
|
||
|
echo a1 $a1 &&
|
||
|
ls -l $a0f $a1f &&
|
||
|
echo $commit >.git/HEAD &&
|
||
|
git-mkdelta -v $a0 $a1 &&
|
||
|
ls -l $a0f $a1f'
|
||
|
|
||
|
# Now commit has a tree that records delitified "a" whose SHA1 is a1.
|
||
|
# Create a new repo and pull this commit into it.
|
||
|
|
||
|
test_expect_success \
|
||
|
'setup and cd into new repo' \
|
||
|
'mkdir dest && cd dest && rm -fr .git && git-init-db'
|
||
|
|
||
|
test_expect_success \
|
||
|
'pull from deltified repo into a new repo without -d' \
|
||
|
'rm -fr .git a && git-init-db &&
|
||
|
git-local-pull -v -a $commit ../.git/ &&
|
||
|
git-cat-file blob $a1 >a &&
|
||
|
diff -u a ../a'
|
||
|
|
||
|
test_expect_failure \
|
||
|
'pull from deltified repo into a new repo with -d' \
|
||
|
'rm -fr .git a && git-init-db &&
|
||
|
git-local-pull -v -a -d $commit ../.git/ &&
|
||
|
git-cat-file blob $a1 >a &&
|
||
|
diff -u a ../a'
|
||
|
|
||
|
test_expect_failure \
|
||
|
'pull from deltified repo after delta failure without --recover' \
|
||
|
'rm -f a &&
|
||
|
git-local-pull -v -a $commit ../.git/ &&
|
||
|
git-cat-file blob $a1 >a &&
|
||
|
diff -u a ../a'
|
||
|
|
||
|
test_expect_success \
|
||
|
'pull from deltified repo after delta failure with --recover' \
|
||
|
'rm -f a &&
|
||
|
git-local-pull -v -a --recover $commit ../.git/ &&
|
||
|
git-cat-file blob $a1 >a &&
|
||
|
diff -u a ../a'
|
||
|
|
||
|
test_expect_success \
|
||
|
'missing-tree or missing-blob should be re-fetched without --recover' \
|
||
|
'rm -f a $a0f $a1f &&
|
||
|
git-local-pull -v -a $commit ../.git/ &&
|
||
|
git-cat-file blob $a1 >a &&
|
||
|
diff -u a ../a'
|
||
|
|
||
|
test_done
|
||
|
|