Merge branch 'bd/tests'
* bd/tests: Rename the test trash directory to contain spaces. Fix tests breaking when checkout path contains shell metacharacters Don't use the 'export NAME=value' in the test scripts. lib-git-svn.sh: Fix quoting issues with paths containing shell metacharacters test-lib.sh: Fix some missing path quoting Use test_set_editor in t9001-send-email.sh test-lib.sh: Add a test_set_editor function to safely set $VISUAL git-send-email.perl: Handle shell metacharacters in $EDITOR properly config.c: Escape backslashes in section names properly git-rebase.sh: Fix --merge --abort failures when path contains whitespace Conflicts: t/t9115-git-svn-dcommit-funky-renames.sh
This commit is contained in:
commit
761adeb4db
2
config.c
2
config.c
@ -698,7 +698,7 @@ static int store_write_section(int fd, const char* key)
|
||||
if (dot) {
|
||||
strbuf_addf(&sb, "[%.*s \"", (int)(dot - key), key);
|
||||
for (i = dot - key + 1; i < store.baselen; i++) {
|
||||
if (key[i] == '"')
|
||||
if (key[i] == '"' || key[i] == '\\')
|
||||
strbuf_addch(&sb, '\\');
|
||||
strbuf_addch(&sb, key[i]);
|
||||
}
|
||||
|
@ -214,7 +214,7 @@ do
|
||||
else
|
||||
die "No rebase in progress?"
|
||||
fi
|
||||
git reset --hard $(cat $dotest/orig-head)
|
||||
git reset --hard $(cat "$dotest/orig-head")
|
||||
rm -r "$dotest"
|
||||
exit
|
||||
;;
|
||||
|
@ -513,7 +513,7 @@ EOT
|
||||
close(C);
|
||||
|
||||
my $editor = $ENV{GIT_EDITOR} || Git::config(@repo, "core.editor") || $ENV{VISUAL} || $ENV{EDITOR} || "vi";
|
||||
system('sh', '-c', '$0 $@', $editor, $compose_filename);
|
||||
system('sh', '-c', $editor.' "$@"', $editor, $compose_filename);
|
||||
|
||||
open(C2,">",$compose_filename . ".final")
|
||||
or die "Failed to open $compose_filename.final : " . $!;
|
||||
|
2
t/.gitignore
vendored
2
t/.gitignore
vendored
@ -1 +1 @@
|
||||
trash
|
||||
/trash directory
|
||||
|
@ -20,12 +20,13 @@ then
|
||||
fi
|
||||
|
||||
svnrepo=$PWD/svnrepo
|
||||
export svnrepo
|
||||
|
||||
perl -w -e "
|
||||
use SVN::Core;
|
||||
use SVN::Repos;
|
||||
\$SVN::Core::VERSION gt '1.1.0' or exit(42);
|
||||
system(qw/svnadmin create --fs-type fsfs/, '$svnrepo') == 0 or exit(41);
|
||||
system(qw/svnadmin create --fs-type fsfs/, \$ENV{svnrepo}) == 0 or exit(41);
|
||||
" >&3 2>&4
|
||||
x=$?
|
||||
if test $x -ne 0
|
||||
|
@ -61,7 +61,8 @@ prepare_httpd() {
|
||||
-new -x509 -nodes \
|
||||
-out $HTTPD_ROOT_PATH/httpd.pem \
|
||||
-keyout $HTTPD_ROOT_PATH/httpd.pem
|
||||
export GIT_SSL_NO_VERIFY=t
|
||||
GIT_SSL_NO_VERIFY=t
|
||||
export GIT_SSL_NO_VERIFY
|
||||
HTTPD_PARA="$HTTPD_PARA -DSSL"
|
||||
else
|
||||
HTTPD_URL=http://127.0.0.1:$LIB_HTTPD_PORT
|
||||
|
@ -305,10 +305,10 @@ test_expect_success 'absolute path works as expected' '
|
||||
file="$dir"/index &&
|
||||
test "$file" = "$(test-absolute-path $dir2/index)" &&
|
||||
basename=blub &&
|
||||
test "$dir/$basename" = $(cd .git && test-absolute-path $basename) &&
|
||||
test "$dir/$basename" = "$(cd .git && test-absolute-path "$basename")" &&
|
||||
ln -s ../first/file .git/syml &&
|
||||
sym="$(cd first; pwd -P)"/file &&
|
||||
test "$sym" = "$(test-absolute-path $dir2/syml)"
|
||||
test "$sym" = "$(test-absolute-path "$dir2/syml")"
|
||||
'
|
||||
|
||||
test_expect_success 'very long name in the index handled sanely' '
|
||||
|
@ -21,7 +21,7 @@ LF='
|
||||
'
|
||||
|
||||
test_expect_success 'update-index and ls-files' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
git update-index --add one &&
|
||||
case "`git ls-files`" in
|
||||
one) echo ok one ;;
|
||||
@ -41,7 +41,7 @@ test_expect_success 'update-index and ls-files' '
|
||||
'
|
||||
|
||||
test_expect_success 'cat-file' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
two=`git ls-files -s dir/two` &&
|
||||
two=`expr "$two" : "[0-7]* \\([0-9a-f]*\\)"` &&
|
||||
echo "$two" &&
|
||||
@ -54,7 +54,7 @@ test_expect_success 'cat-file' '
|
||||
rm -f actual dir/actual
|
||||
|
||||
test_expect_success 'diff-files' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
echo a >>one &&
|
||||
echo d >>dir/two &&
|
||||
case "`git diff-files --name-only`" in
|
||||
@ -74,7 +74,7 @@ test_expect_success 'diff-files' '
|
||||
'
|
||||
|
||||
test_expect_success 'write-tree' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
top=`git write-tree` &&
|
||||
echo $top &&
|
||||
cd dir &&
|
||||
@ -84,7 +84,7 @@ test_expect_success 'write-tree' '
|
||||
'
|
||||
|
||||
test_expect_success 'checkout-index' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
git checkout-index -f -u one &&
|
||||
cmp one original.one &&
|
||||
cd dir &&
|
||||
@ -93,7 +93,7 @@ test_expect_success 'checkout-index' '
|
||||
'
|
||||
|
||||
test_expect_success 'read-tree' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
rm -f one dir/two &&
|
||||
tree=`git write-tree` &&
|
||||
git read-tree --reset -u "$tree" &&
|
||||
@ -107,27 +107,27 @@ test_expect_success 'read-tree' '
|
||||
'
|
||||
|
||||
test_expect_success 'no file/rev ambiguity check inside .git' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
git commit -a -m 1 &&
|
||||
cd $HERE/.git &&
|
||||
cd "$HERE"/.git &&
|
||||
git show -s HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'no file/rev ambiguity check inside a bare repo' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
git clone -s --bare .git foo.git &&
|
||||
cd foo.git && GIT_DIR=. git show -s HEAD
|
||||
'
|
||||
|
||||
# This still does not work as it should...
|
||||
: test_expect_success 'no file/rev ambiguity check inside a bare repo' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
git clone -s --bare .git foo.git &&
|
||||
cd foo.git && git show -s HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'detection should not be fooled by a symlink' '
|
||||
cd $HERE &&
|
||||
cd "$HERE" &&
|
||||
rm -fr foo.git &&
|
||||
git clone -s .git another &&
|
||||
ln -s another yetanother &&
|
||||
|
@ -34,4 +34,10 @@ test_expect_success 'add key in different section' '
|
||||
check section2.key bar
|
||||
'
|
||||
|
||||
SECTION="test.q\"s\\sq'sp e.key"
|
||||
test_expect_success 'make sure git-config escapes section names properly' '
|
||||
git config "$SECTION" bar &&
|
||||
check "$SECTION" bar
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -51,8 +51,9 @@ test_rev_parse 'core.bare undefined' false false true
|
||||
|
||||
mkdir work || exit 1
|
||||
cd work || exit 1
|
||||
export GIT_DIR=../.git
|
||||
export GIT_CONFIG="$(pwd)"/../.git/config
|
||||
GIT_DIR=../.git
|
||||
GIT_CONFIG="$(pwd)"/../.git/config
|
||||
export GIT_DIR GIT_CONFIG
|
||||
|
||||
git config core.bare false
|
||||
test_rev_parse 'GIT_DIR=../.git, core.bare = false' false false true ''
|
||||
@ -64,8 +65,8 @@ git config --unset core.bare
|
||||
test_rev_parse 'GIT_DIR=../.git, core.bare undefined' false false true ''
|
||||
|
||||
mv ../.git ../repo.git || exit 1
|
||||
export GIT_DIR=../repo.git
|
||||
export GIT_CONFIG="$(pwd)"/../repo.git/config
|
||||
GIT_DIR=../repo.git
|
||||
GIT_CONFIG="$(pwd)"/../repo.git/config
|
||||
|
||||
git config core.bare false
|
||||
test_rev_parse 'GIT_DIR=../repo.git, core.bare = false' false false true ''
|
||||
|
@ -32,24 +32,25 @@ mkdir -p work/sub/dir || exit 1
|
||||
mv .git repo.git || exit 1
|
||||
|
||||
say "core.worktree = relative path"
|
||||
export GIT_DIR=repo.git
|
||||
export GIT_CONFIG="$(pwd)"/$GIT_DIR/config
|
||||
GIT_DIR=repo.git
|
||||
GIT_CONFIG="$(pwd)"/$GIT_DIR/config
|
||||
export GIT_DIR GIT_CONFIG
|
||||
unset GIT_WORK_TREE
|
||||
git config core.worktree ../work
|
||||
test_rev_parse 'outside' false false false
|
||||
cd work || exit 1
|
||||
export GIT_DIR=../repo.git
|
||||
export GIT_CONFIG="$(pwd)"/$GIT_DIR/config
|
||||
GIT_DIR=../repo.git
|
||||
GIT_CONFIG="$(pwd)"/$GIT_DIR/config
|
||||
test_rev_parse 'inside' false false true ''
|
||||
cd sub/dir || exit 1
|
||||
export GIT_DIR=../../../repo.git
|
||||
export GIT_CONFIG="$(pwd)"/$GIT_DIR/config
|
||||
GIT_DIR=../../../repo.git
|
||||
GIT_CONFIG="$(pwd)"/$GIT_DIR/config
|
||||
test_rev_parse 'subdirectory' false false true sub/dir/
|
||||
cd ../../.. || exit 1
|
||||
|
||||
say "core.worktree = absolute path"
|
||||
export GIT_DIR=$(pwd)/repo.git
|
||||
export GIT_CONFIG=$GIT_DIR/config
|
||||
GIT_DIR=$(pwd)/repo.git
|
||||
GIT_CONFIG=$GIT_DIR/config
|
||||
git config core.worktree "$(pwd)/work"
|
||||
test_rev_parse 'outside' false false false
|
||||
cd work || exit 1
|
||||
@ -59,25 +60,26 @@ test_rev_parse 'subdirectory' false false true sub/dir/
|
||||
cd ../../.. || exit 1
|
||||
|
||||
say "GIT_WORK_TREE=relative path (override core.worktree)"
|
||||
export GIT_DIR=$(pwd)/repo.git
|
||||
export GIT_CONFIG=$GIT_DIR/config
|
||||
GIT_DIR=$(pwd)/repo.git
|
||||
GIT_CONFIG=$GIT_DIR/config
|
||||
git config core.worktree non-existent
|
||||
export GIT_WORK_TREE=work
|
||||
GIT_WORK_TREE=work
|
||||
export GIT_WORK_TREE
|
||||
test_rev_parse 'outside' false false false
|
||||
cd work || exit 1
|
||||
export GIT_WORK_TREE=.
|
||||
GIT_WORK_TREE=.
|
||||
test_rev_parse 'inside' false false true ''
|
||||
cd sub/dir || exit 1
|
||||
export GIT_WORK_TREE=../..
|
||||
GIT_WORK_TREE=../..
|
||||
test_rev_parse 'subdirectory' false false true sub/dir/
|
||||
cd ../../.. || exit 1
|
||||
|
||||
mv work repo.git/work
|
||||
|
||||
say "GIT_WORK_TREE=absolute path, work tree below git dir"
|
||||
export GIT_DIR=$(pwd)/repo.git
|
||||
export GIT_CONFIG=$GIT_DIR/config
|
||||
export GIT_WORK_TREE=$(pwd)/repo.git/work
|
||||
GIT_DIR=$(pwd)/repo.git
|
||||
GIT_CONFIG=$GIT_DIR/config
|
||||
GIT_WORK_TREE=$(pwd)/repo.git/work
|
||||
test_rev_parse 'outside' false false false
|
||||
cd repo.git || exit 1
|
||||
test_rev_parse 'in repo.git' false true false
|
||||
|
@ -20,7 +20,7 @@ test_expect_success setup '
|
||||
'
|
||||
|
||||
test_expect_success clone '
|
||||
git clone file://`pwd`/.git cloned &&
|
||||
git clone "file://$(pwd)/.git" cloned &&
|
||||
(git rev-parse HEAD; git ls-files -s) >expected &&
|
||||
(
|
||||
cd cloned &&
|
||||
|
@ -9,7 +9,8 @@ This test runs git rebase and checks that the author information is not lost.
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
export GIT_AUTHOR_EMAIL=bogus_email_address
|
||||
GIT_AUTHOR_EMAIL=bogus_email_address
|
||||
export GIT_AUTHOR_EMAIL
|
||||
|
||||
test_expect_success \
|
||||
'prepare repository with topic branches' \
|
||||
|
@ -91,9 +91,8 @@ for line in $FAKE_LINES; do
|
||||
done
|
||||
EOF
|
||||
|
||||
test_set_editor "$(pwd)/fake-editor.sh"
|
||||
chmod a+x fake-editor.sh
|
||||
VISUAL="$(pwd)/fake-editor.sh"
|
||||
export VISUAL
|
||||
|
||||
test_expect_success 'no changes are a nop' '
|
||||
git rebase -i F &&
|
||||
|
@ -4,7 +4,13 @@ test_description='git rebase --abort tests'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
### Test that we handle space characters properly
|
||||
work_dir="$(pwd)/test dir"
|
||||
|
||||
test_expect_success setup '
|
||||
mkdir -p "$work_dir" &&
|
||||
cd "$work_dir" &&
|
||||
git init &&
|
||||
echo a > a &&
|
||||
git add a &&
|
||||
git commit -m a &&
|
||||
@ -28,32 +34,35 @@ testrebase() {
|
||||
dotest=$2
|
||||
|
||||
test_expect_success "rebase$type --abort" '
|
||||
cd "$work_dir" &&
|
||||
# Clean up the state from the previous one
|
||||
git reset --hard pre-rebase
|
||||
test_must_fail git rebase'"$type"' master &&
|
||||
test -d '$dotest' &&
|
||||
git reset --hard pre-rebase &&
|
||||
test_must_fail git rebase$type master &&
|
||||
test -d "$dotest" &&
|
||||
git rebase --abort &&
|
||||
test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
|
||||
test ! -d '$dotest'
|
||||
test ! -d "$dotest"
|
||||
'
|
||||
|
||||
test_expect_success "rebase$type --abort after --skip" '
|
||||
cd "$work_dir" &&
|
||||
# Clean up the state from the previous one
|
||||
git reset --hard pre-rebase
|
||||
test_must_fail git rebase'"$type"' master &&
|
||||
test -d '$dotest' &&
|
||||
git reset --hard pre-rebase &&
|
||||
test_must_fail git rebase$type master &&
|
||||
test -d "$dotest" &&
|
||||
test_must_fail git rebase --skip &&
|
||||
test $(git rev-parse HEAD) = $(git rev-parse master) &&
|
||||
git-rebase --abort &&
|
||||
test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
|
||||
test ! -d '$dotest'
|
||||
test ! -d "$dotest"
|
||||
'
|
||||
|
||||
test_expect_success "rebase$type --abort after --continue" '
|
||||
cd "$work_dir" &&
|
||||
# Clean up the state from the previous one
|
||||
git reset --hard pre-rebase
|
||||
test_must_fail git rebase'"$type"' master &&
|
||||
test -d '$dotest' &&
|
||||
git reset --hard pre-rebase &&
|
||||
test_must_fail git rebase$type master &&
|
||||
test -d "$dotest" &&
|
||||
echo c > a &&
|
||||
echo d >> a &&
|
||||
git add a &&
|
||||
@ -61,7 +70,7 @@ testrebase() {
|
||||
test $(git rev-parse HEAD) != $(git rev-parse master) &&
|
||||
git rebase --abort &&
|
||||
test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
|
||||
test ! -d '$dotest'
|
||||
test ! -d "$dotest"
|
||||
'
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,8 @@ checks that git cherry only returns the second patch in the local branch
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
export GIT_AUTHOR_EMAIL=bogus_email_address
|
||||
GIT_AUTHOR_EMAIL=bogus_email_address
|
||||
export GIT_AUTHOR_EMAIL
|
||||
|
||||
test_expect_success \
|
||||
'prepare repository with topic branch, and check cherry finds the 2 patches from there' \
|
||||
|
@ -31,7 +31,7 @@ add () {
|
||||
sec=$(($sec+1))
|
||||
commit=$(echo "$text" | GIT_AUTHOR_DATE=$sec \
|
||||
git commit-tree $tree $parents 2>>log2.txt)
|
||||
export $name=$commit
|
||||
eval "$name=$commit; export $name"
|
||||
echo $commit > .git/refs/heads/$branch
|
||||
eval ${branch}TIP=$commit
|
||||
}
|
||||
@ -129,7 +129,7 @@ pull_to_client 2nd "B" $((64*3))
|
||||
|
||||
pull_to_client 3rd "A" $((1*3)) # old fails
|
||||
|
||||
test_expect_success "clone shallow" "git-clone --depth 2 file://`pwd`/. shallow"
|
||||
test_expect_success "clone shallow" 'git-clone --depth 2 "file://$(pwd)/." shallow'
|
||||
|
||||
(cd shallow; git count-objects -v) > count.shallow
|
||||
|
||||
|
@ -17,7 +17,7 @@ test_expect_success setup '
|
||||
git show-ref -d | sed -e "s/ / /"
|
||||
) >expected.all &&
|
||||
|
||||
git remote add self $(pwd)/.git
|
||||
git remote add self "$(pwd)/.git"
|
||||
|
||||
'
|
||||
|
||||
|
@ -105,7 +105,7 @@ test_expect_success 'fetch with insteadOf' '
|
||||
(
|
||||
TRASH=$(pwd)/ &&
|
||||
cd testrepo &&
|
||||
git config url.$TRASH.insteadOf trash/
|
||||
git config "url.$TRASH.insteadOf" trash/ &&
|
||||
git config remote.up.url trash/. &&
|
||||
git config remote.up.fetch "refs/heads/*:refs/remotes/origin/*" &&
|
||||
git fetch up &&
|
||||
@ -145,8 +145,8 @@ test_expect_success 'push with wildcard' '
|
||||
|
||||
test_expect_success 'push with insteadOf' '
|
||||
mk_empty &&
|
||||
TRASH=$(pwd)/ &&
|
||||
git config url.$TRASH.insteadOf trash/ &&
|
||||
TRASH="$(pwd)/" &&
|
||||
git config "url./$TRASH/.insteadOf" trash/ &&
|
||||
git push trash/testrepo refs/heads/master:refs/remotes/origin/master &&
|
||||
(
|
||||
cd testrepo &&
|
||||
|
@ -51,7 +51,7 @@ diff expected current'
|
||||
cd "$base_dir"
|
||||
|
||||
test_expect_success 'cloning with reference (no -l -s)' \
|
||||
'git clone --reference B file://`pwd`/A D'
|
||||
'git clone --reference B "file://$(pwd)/A" D'
|
||||
|
||||
cd "$base_dir"
|
||||
|
||||
|
@ -81,9 +81,9 @@ test_valid_repo'
|
||||
cd "$base_dir"
|
||||
|
||||
test_expect_success 'breaking of loops' \
|
||||
"echo '$base_dir/B/.git/objects' >> '$base_dir'/A/.git/objects/info/alternates&&
|
||||
'echo "$base_dir"/B/.git/objects >> "$base_dir"/A/.git/objects/info/alternates&&
|
||||
cd C &&
|
||||
test_valid_repo"
|
||||
test_valid_repo'
|
||||
|
||||
cd "$base_dir"
|
||||
|
||||
|
@ -49,13 +49,15 @@ as_author()
|
||||
shift 1
|
||||
_save=$GIT_AUTHOR_EMAIL
|
||||
|
||||
export GIT_AUTHOR_EMAIL="$_author"
|
||||
GIT_AUTHOR_EMAIL="$_author"
|
||||
export GIT_AUTHOR_EMAIL
|
||||
"$@"
|
||||
if test -z "$_save"
|
||||
then
|
||||
unset GIT_AUTHOR_EMAIL
|
||||
else
|
||||
export GIT_AUTHOR_EMAIL="$_save"
|
||||
GIT_AUTHOR_EMAIL="$_save"
|
||||
export GIT_AUTHOR_EMAIL
|
||||
fi
|
||||
}
|
||||
|
||||
@ -69,7 +71,8 @@ on_committer_date()
|
||||
{
|
||||
_date=$1
|
||||
shift 1
|
||||
export GIT_COMMITTER_DATE="$_date"
|
||||
GIT_COMMITTER_DATE="$_date"
|
||||
export GIT_COMMITTER_DATE
|
||||
"$@"
|
||||
unset GIT_COMMITTER_DATE
|
||||
}
|
||||
|
@ -13,10 +13,11 @@ T=$(git write-tree)
|
||||
M=1130000000
|
||||
Z=+0000
|
||||
|
||||
export GIT_COMMITTER_EMAIL=git@comm.iter.xz
|
||||
export GIT_COMMITTER_NAME='C O Mmiter'
|
||||
export GIT_AUTHOR_NAME='A U Thor'
|
||||
export GIT_AUTHOR_EMAIL=git@au.thor.xz
|
||||
GIT_COMMITTER_EMAIL=git@comm.iter.xz
|
||||
GIT_COMMITTER_NAME='C O Mmiter'
|
||||
GIT_AUTHOR_NAME='A U Thor'
|
||||
GIT_AUTHOR_EMAIL=git@au.thor.xz
|
||||
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
|
||||
|
||||
doit() {
|
||||
OFFSET=$1; shift
|
||||
|
@ -82,14 +82,14 @@ test_expect_success 'merge-msg test #1' '
|
||||
git diff actual expected
|
||||
'
|
||||
|
||||
cat >expected <<\EOF
|
||||
Merge branch 'left' of ../trash
|
||||
cat >expected <<EOF
|
||||
Merge branch 'left' of ../$test
|
||||
EOF
|
||||
|
||||
test_expect_success 'merge-msg test #2' '
|
||||
|
||||
git checkout master &&
|
||||
git fetch ../trash left &&
|
||||
git fetch ../"$test" left &&
|
||||
|
||||
git fmt-merge-msg <.git/FETCH_HEAD >actual &&
|
||||
git diff actual expected
|
||||
|
@ -125,7 +125,7 @@ test_expect_success 'use index-filter to move into a subdirectory' '
|
||||
"git ls-files -s | sed \"s-\\t-&newsubdir/-\" |
|
||||
GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \
|
||||
git update-index --index-info &&
|
||||
mv \$GIT_INDEX_FILE.new \$GIT_INDEX_FILE" directorymoved &&
|
||||
mv \"\$GIT_INDEX_FILE.new\" \"\$GIT_INDEX_FILE\"" directorymoved &&
|
||||
test -z "$(git diff HEAD directorymoved:newsubdir)"'
|
||||
|
||||
test_expect_success 'stops when msg filter fails' '
|
||||
|
@ -626,7 +626,8 @@ esac
|
||||
|
||||
cp -R ../t7004 ./gpghome
|
||||
chmod 0700 gpghome
|
||||
export GNUPGHOME="$(pwd)/gpghome"
|
||||
GNUPGHOME="$(pwd)/gpghome"
|
||||
export GNUPGHOME
|
||||
|
||||
get_tag_header signed-tag $commit commit $time >expect
|
||||
echo 'A signed tag message' >>expect
|
||||
|
@ -122,7 +122,7 @@ test_expect_success 'commit using absolute path names' '
|
||||
|
||||
test_expect_success 'log using absolute path names' '
|
||||
echo bb >>a/b/c/d &&
|
||||
git commit -m "bb" $(pwd)/a/b/c/d &&
|
||||
git commit -m "bb" "$(pwd)/a/b/c/d" &&
|
||||
|
||||
git log a/b/c/d >f1.txt &&
|
||||
git log "$(pwd)/a/b/c/d" >f2.txt &&
|
||||
|
@ -112,7 +112,7 @@ test_expect_success 'git-clean with absolute path' '
|
||||
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
||||
would_clean=$(
|
||||
cd docs &&
|
||||
git clean -n $(pwd)/../src |
|
||||
git clean -n "$(pwd)/../src" |
|
||||
sed -n -e "s|^Would remove ||p"
|
||||
) &&
|
||||
test "$would_clean" = ../src/part3.c || {
|
||||
|
@ -79,8 +79,8 @@ test_expect_success \
|
||||
|
||||
cat >editor <<\EOF
|
||||
#!/bin/sh
|
||||
sed -e "s/a file/an amend commit/g" < $1 > $1-
|
||||
mv $1- $1
|
||||
sed -e "s/a file/an amend commit/g" < "$1" > "$1-"
|
||||
mv "$1-" "$1"
|
||||
EOF
|
||||
chmod 755 editor
|
||||
|
||||
@ -99,8 +99,8 @@ test_expect_success \
|
||||
|
||||
cat >editor <<\EOF
|
||||
#!/bin/sh
|
||||
sed -e "s/amend/older/g" < $1 > $1-
|
||||
mv $1- $1
|
||||
sed -e "s/amend/older/g" < "$1" > "$1-"
|
||||
mv "$1-" "$1"
|
||||
EOF
|
||||
chmod 755 editor
|
||||
|
||||
|
@ -19,6 +19,9 @@ cp FAKE_MSG "$1"
|
||||
exit 0
|
||||
EOF
|
||||
chmod +x fake-editor
|
||||
|
||||
## Not using test_set_editor here so we can easily ensure the editor variable
|
||||
## is only set for the editor tests
|
||||
FAKE_EDITOR="$(pwd)/fake-editor"
|
||||
export FAKE_EDITOR
|
||||
|
||||
@ -27,7 +30,7 @@ test_expect_success 'with no hook (editor)' '
|
||||
echo "more foo" >> file &&
|
||||
git add file &&
|
||||
echo "more foo" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit
|
||||
|
||||
'
|
||||
|
||||
@ -44,7 +47,7 @@ test_expect_success '--no-verify with no hook (editor)' '
|
||||
echo "more bar" > file &&
|
||||
git add file &&
|
||||
echo "more bar" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit --no-verify
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
|
||||
|
||||
'
|
||||
|
||||
@ -71,7 +74,7 @@ test_expect_success 'with succeeding hook (editor)' '
|
||||
echo "more more" >> file &&
|
||||
git add file &&
|
||||
echo "more more" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit
|
||||
|
||||
'
|
||||
|
||||
@ -88,7 +91,7 @@ test_expect_success '--no-verify with succeeding hook (editor)' '
|
||||
echo "even more more" >> file &&
|
||||
git add file &&
|
||||
echo "even more more" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit --no-verify
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
|
||||
|
||||
'
|
||||
|
||||
@ -111,7 +114,7 @@ test_expect_success 'with failing hook (editor)' '
|
||||
echo "more another" >> file &&
|
||||
git add file &&
|
||||
echo "more another" > FAKE_MSG &&
|
||||
! (GIT_EDITOR="$FAKE_EDITOR" git commit)
|
||||
! (GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit)
|
||||
|
||||
'
|
||||
|
||||
@ -128,7 +131,7 @@ test_expect_success '--no-verify with failing hook (editor)' '
|
||||
echo "more stuff" >> file &&
|
||||
git add file &&
|
||||
echo "more stuff" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit --no-verify
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
|
||||
|
||||
'
|
||||
|
||||
@ -146,7 +149,7 @@ test_expect_success 'with non-executable hook (editor)' '
|
||||
echo "content again" >> file &&
|
||||
git add file &&
|
||||
echo "content again" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit -m "content again"
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit -m "content again"
|
||||
|
||||
'
|
||||
|
||||
@ -163,7 +166,7 @@ test_expect_success '--no-verify with non-executable hook (editor)' '
|
||||
echo "even more content" >> file &&
|
||||
git add file &&
|
||||
echo "even more content" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit --no-verify
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
|
||||
|
||||
'
|
||||
|
||||
@ -193,7 +196,7 @@ test_expect_success 'hook edits commit message (editor)' '
|
||||
echo "additional content" >> file &&
|
||||
git add file &&
|
||||
echo "additional content" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit &&
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit &&
|
||||
commit_msg_is "new message"
|
||||
|
||||
'
|
||||
@ -212,7 +215,7 @@ test_expect_success "hook doesn't edit commit message (editor)" '
|
||||
echo "more plus" >> file &&
|
||||
git add file &&
|
||||
echo "more plus" > FAKE_MSG &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit --no-verify &&
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify &&
|
||||
commit_msg_is "more plus"
|
||||
|
||||
'
|
||||
|
@ -18,6 +18,9 @@ cat > fake-editor <<'EOF'
|
||||
exit 0
|
||||
EOF
|
||||
chmod +x fake-editor
|
||||
|
||||
## Not using test_set_editor here so we can easily ensure the editor variable
|
||||
## is only set for the editor tests
|
||||
FAKE_EDITOR="$(pwd)/fake-editor"
|
||||
export FAKE_EDITOR
|
||||
|
||||
@ -58,7 +61,7 @@ test_expect_success 'with hook (-m editor)' '
|
||||
|
||||
echo "more" >> file &&
|
||||
git add file &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit -e -m "more more" &&
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit -e -m "more more" &&
|
||||
test "`git log -1 --pretty=format:%s`" = message
|
||||
|
||||
'
|
||||
@ -85,7 +88,7 @@ test_expect_success 'with hook (-F editor)' '
|
||||
|
||||
echo "more" >> file &&
|
||||
git add file &&
|
||||
(echo more more | GIT_EDITOR="$FAKE_EDITOR" git commit -e -F -) &&
|
||||
(echo more more | GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit -e -F -) &&
|
||||
test "`git log -1 --pretty=format:%s`" = message
|
||||
|
||||
'
|
||||
@ -104,7 +107,7 @@ test_expect_success 'with hook (editor)' '
|
||||
|
||||
echo "more more" >> file &&
|
||||
git add file &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit &&
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit &&
|
||||
test "`git log -1 --pretty=format:%s`" = default
|
||||
|
||||
'
|
||||
@ -114,7 +117,7 @@ test_expect_success 'with hook (--amend)' '
|
||||
head=`git rev-parse HEAD` &&
|
||||
echo "more" >> file &&
|
||||
git add file &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit --amend &&
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --amend &&
|
||||
test "`git log -1 --pretty=format:%s`" = "$head"
|
||||
|
||||
'
|
||||
@ -124,7 +127,7 @@ test_expect_success 'with hook (-c)' '
|
||||
head=`git rev-parse HEAD` &&
|
||||
echo "more" >> file &&
|
||||
git add file &&
|
||||
GIT_EDITOR="$FAKE_EDITOR" git commit -c $head &&
|
||||
GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit -c $head &&
|
||||
test "`git log -1 --pretty=format:%s`" = "$head"
|
||||
|
||||
'
|
||||
@ -139,7 +142,7 @@ test_expect_success 'with failing hook' '
|
||||
head=`git rev-parse HEAD` &&
|
||||
echo "more" >> file &&
|
||||
git add file &&
|
||||
! GIT_EDITOR="$FAKE_EDITOR" git commit -c $head
|
||||
! GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit -c $head
|
||||
|
||||
'
|
||||
|
||||
@ -148,7 +151,7 @@ test_expect_success 'with failing hook (--no-verify)' '
|
||||
head=`git rev-parse HEAD` &&
|
||||
echo "more" >> file &&
|
||||
git add file &&
|
||||
! GIT_EDITOR="$FAKE_EDITOR" git commit --no-verify -c $head
|
||||
! GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify -c $head
|
||||
|
||||
'
|
||||
|
||||
|
@ -139,15 +139,16 @@ test_expect_success 'Valid In-Reply-To when prompting' '
|
||||
|
||||
test_expect_success 'setup fake editor' '
|
||||
(echo "#!/bin/sh" &&
|
||||
echo "echo fake edit >>\$1"
|
||||
echo "echo fake edit >>\"\$1\""
|
||||
) >fake-editor &&
|
||||
chmod +x fake-editor
|
||||
'
|
||||
|
||||
test_set_editor "$(pwd)/fake-editor"
|
||||
|
||||
test_expect_success '--compose works' '
|
||||
clean_fake_sendmail &&
|
||||
echo y | \
|
||||
GIT_EDITOR=$(pwd)/fake-editor \
|
||||
GIT_SEND_EMAIL_NOTTY=1 \
|
||||
git send-email \
|
||||
--compose --subject foo \
|
||||
|
@ -20,39 +20,39 @@ esac
|
||||
echo 'define NO_SVN_TESTS to skip git-svn tests'
|
||||
|
||||
test_expect_success \
|
||||
'initialize git-svn' "
|
||||
'initialize git-svn' '
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
echo foo > foo &&
|
||||
ln -s foo foo.link
|
||||
mkdir -p dir/a/b/c/d/e &&
|
||||
echo 'deep dir' > dir/a/b/c/d/e/file &&
|
||||
echo "deep dir" > dir/a/b/c/d/e/file &&
|
||||
mkdir bar &&
|
||||
echo 'zzz' > bar/zzz &&
|
||||
echo '#!/bin/sh' > exec.sh &&
|
||||
echo "zzz" > bar/zzz &&
|
||||
echo "#!/bin/sh" > exec.sh &&
|
||||
chmod +x exec.sh &&
|
||||
svn import -m 'import for git-svn' . $svnrepo >/dev/null &&
|
||||
svn import -m "import for git-svn" . "$svnrepo" >/dev/null &&
|
||||
cd .. &&
|
||||
rm -rf import &&
|
||||
git-svn init $svnrepo"
|
||||
git-svn init "$svnrepo"'
|
||||
|
||||
test_expect_success \
|
||||
'import an SVN revision into git' \
|
||||
'git-svn fetch'
|
||||
|
||||
test_expect_success "checkout from svn" "svn co $svnrepo '$SVN_TREE'"
|
||||
test_expect_success "checkout from svn" 'svn co "$svnrepo" "$SVN_TREE"'
|
||||
|
||||
name='try a deep --rmdir with a commit'
|
||||
test_expect_success "$name" "
|
||||
test_expect_success "$name" '
|
||||
git checkout -f -b mybranch remotes/git-svn &&
|
||||
mv dir/a/b/c/d/e/file dir/file &&
|
||||
cp dir/file file &&
|
||||
git update-index --add --remove dir/a/b/c/d/e/file dir/file file &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -d '$SVN_TREE'/dir && test ! -d '$SVN_TREE'/dir/a"
|
||||
svn up "$SVN_TREE" &&
|
||||
test -d "$SVN_TREE"/dir && test ! -d "$SVN_TREE"/dir/a'
|
||||
|
||||
|
||||
name='detect node change from file to directory #1'
|
||||
@ -68,108 +68,108 @@ test_expect_success "$name" "
|
||||
|
||||
|
||||
name='detect node change from directory to file #1'
|
||||
test_expect_success "$name" "
|
||||
rm -rf dir '$GIT_DIR'/index &&
|
||||
test_expect_success "$name" '
|
||||
rm -rf dir "$GIT_DIR"/index &&
|
||||
git checkout -f -b mybranch2 remotes/git-svn &&
|
||||
mv bar/zzz zzz &&
|
||||
rm -rf bar &&
|
||||
mv zzz bar &&
|
||||
git update-index --remove -- bar/zzz &&
|
||||
git update-index --add -- bar &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
! git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch2" || true
|
||||
remotes/git-svn..mybranch2' || true
|
||||
|
||||
|
||||
name='detect node change from file to directory #2'
|
||||
test_expect_success "$name" "
|
||||
rm -f '$GIT_DIR'/index &&
|
||||
test_expect_success "$name" '
|
||||
rm -f "$GIT_DIR"/index &&
|
||||
git checkout -f -b mybranch3 remotes/git-svn &&
|
||||
rm bar/zzz &&
|
||||
git update-index --remove bar/zzz &&
|
||||
mkdir bar/zzz &&
|
||||
echo yyy > bar/zzz/yyy &&
|
||||
git update-index --add bar/zzz/yyy &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
! git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch3" || true
|
||||
remotes/git-svn..mybranch3' || true
|
||||
|
||||
|
||||
name='detect node change from directory to file #2'
|
||||
test_expect_success "$name" "
|
||||
rm -f '$GIT_DIR'/index &&
|
||||
test_expect_success "$name" '
|
||||
rm -f "$GIT_DIR"/index &&
|
||||
git checkout -f -b mybranch4 remotes/git-svn &&
|
||||
rm -rf dir &&
|
||||
git update-index --remove -- dir/file &&
|
||||
touch dir &&
|
||||
echo asdf > dir &&
|
||||
git update-index --add -- dir &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
! git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch4" || true
|
||||
remotes/git-svn..mybranch4' || true
|
||||
|
||||
|
||||
name='remove executable bit from a file'
|
||||
test_expect_success "$name" "
|
||||
rm -f '$GIT_DIR'/index &&
|
||||
test_expect_success "$name" '
|
||||
rm -f "$GIT_DIR"/index &&
|
||||
git checkout -f -b mybranch5 remotes/git-svn &&
|
||||
chmod -x exec.sh &&
|
||||
git update-index exec.sh &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test ! -x '$SVN_TREE'/exec.sh"
|
||||
svn up "$SVN_TREE" &&
|
||||
test ! -x "$SVN_TREE"/exec.sh'
|
||||
|
||||
|
||||
name='add executable bit back file'
|
||||
test_expect_success "$name" "
|
||||
test_expect_success "$name" '
|
||||
chmod +x exec.sh &&
|
||||
git update-index exec.sh &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -x '$SVN_TREE'/exec.sh"
|
||||
svn up "$SVN_TREE" &&
|
||||
test -x "$SVN_TREE"/exec.sh'
|
||||
|
||||
|
||||
name='executable file becomes a symlink to bar/zzz (file)'
|
||||
test_expect_success "$name" "
|
||||
test_expect_success "$name" '
|
||||
rm exec.sh &&
|
||||
ln -s bar/zzz exec.sh &&
|
||||
git update-index exec.sh &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -L '$SVN_TREE'/exec.sh"
|
||||
svn up "$SVN_TREE" &&
|
||||
test -L "$SVN_TREE"/exec.sh'
|
||||
|
||||
name='new symlink is added to a file that was also just made executable'
|
||||
|
||||
test_expect_success "$name" "
|
||||
test_expect_success "$name" '
|
||||
chmod +x bar/zzz &&
|
||||
ln -s bar/zzz exec-2.sh &&
|
||||
git update-index --add bar/zzz exec-2.sh &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -x '$SVN_TREE'/bar/zzz &&
|
||||
test -L '$SVN_TREE'/exec-2.sh"
|
||||
svn up "$SVN_TREE" &&
|
||||
test -x "$SVN_TREE"/bar/zzz &&
|
||||
test -L "$SVN_TREE"/exec-2.sh'
|
||||
|
||||
name='modify a symlink to become a file'
|
||||
test_expect_success "$name" "
|
||||
test_expect_success "$name" '
|
||||
echo git help > help || true &&
|
||||
rm exec-2.sh &&
|
||||
cp help exec-2.sh &&
|
||||
git update-index exec-2.sh &&
|
||||
git commit -m '$name' &&
|
||||
git commit -m "$name" &&
|
||||
git-svn set-tree --find-copies-harder --rmdir \
|
||||
remotes/git-svn..mybranch5 &&
|
||||
svn up '$SVN_TREE' &&
|
||||
test -f '$SVN_TREE'/exec-2.sh &&
|
||||
test ! -L '$SVN_TREE'/exec-2.sh &&
|
||||
git diff help $SVN_TREE/exec-2.sh"
|
||||
svn up "$SVN_TREE" &&
|
||||
test -f "$SVN_TREE"/exec-2.sh &&
|
||||
test ! -L "$SVN_TREE"/exec-2.sh &&
|
||||
git diff help "$SVN_TREE"/exec-2.sh'
|
||||
|
||||
if test "$have_utf8" = t
|
||||
then
|
||||
@ -190,10 +190,10 @@ name='test fetch functionality (svn => git) with alternate GIT_SVN_ID'
|
||||
GIT_SVN_ID=alt
|
||||
export GIT_SVN_ID
|
||||
test_expect_success "$name" \
|
||||
"git-svn init $svnrepo && git-svn fetch &&
|
||||
'git-svn init "$svnrepo" && git-svn fetch &&
|
||||
git rev-list --pretty=raw remotes/git-svn | grep ^tree | uniq > a &&
|
||||
git rev-list --pretty=raw remotes/alt | grep ^tree | uniq > b &&
|
||||
git diff a b"
|
||||
git diff a b'
|
||||
|
||||
name='check imported tree checksums expected tree checksums'
|
||||
rm -f expected
|
||||
@ -219,22 +219,22 @@ test_expect_success 'exit if remote refs are ambigious' "
|
||||
! git-svn migrate
|
||||
"
|
||||
|
||||
test_expect_success 'exit if init-ing a would clobber a URL' "
|
||||
svnadmin create ${PWD}/svnrepo2 &&
|
||||
svn mkdir -m 'mkdir bar' ${svnrepo}2/bar &&
|
||||
test_expect_success 'exit if init-ing a would clobber a URL' '
|
||||
svnadmin create "${PWD}/svnrepo2" &&
|
||||
svn mkdir -m "mkdir bar" "${svnrepo}2/bar" &&
|
||||
git config --unset svn-remote.svn.fetch \
|
||||
'^bar:refs/remotes/git-svn$' &&
|
||||
! git-svn init ${svnrepo}2/bar
|
||||
"
|
||||
"^bar:refs/remotes/git-svn$" &&
|
||||
! git-svn init "${svnrepo}2/bar"
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'init allows us to connect to another directory in the same repo' "
|
||||
git-svn init --minimize-url -i bar $svnrepo/bar &&
|
||||
'init allows us to connect to another directory in the same repo' '
|
||||
git-svn init --minimize-url -i bar "$svnrepo/bar" &&
|
||||
git config --get svn-remote.svn.fetch \
|
||||
'^bar:refs/remotes/bar$' &&
|
||||
"^bar:refs/remotes/bar$" &&
|
||||
git config --get svn-remote.svn.fetch \
|
||||
'^:refs/remotes/git-svn$'
|
||||
"
|
||||
"^:refs/remotes/git-svn$"
|
||||
'
|
||||
|
||||
test_expect_success 'able to dcommit to a subdirectory' "
|
||||
git-svn fetch -i bar &&
|
||||
|
@ -52,7 +52,7 @@ EOF
|
||||
cd ..
|
||||
|
||||
rm -rf import
|
||||
test_expect_success 'checkout working copy from svn' "svn co $svnrepo test_wc"
|
||||
test_expect_success 'checkout working copy from svn' 'svn co "$svnrepo" test_wc'
|
||||
test_expect_success 'setup some commits to svn' \
|
||||
'cd test_wc &&
|
||||
echo Greetings >> kw.c &&
|
||||
@ -66,7 +66,7 @@ test_expect_success 'setup some commits to svn' \
|
||||
svn commit -m "Propset Id" &&
|
||||
cd ..'
|
||||
|
||||
test_expect_success 'initialize git-svn' "git-svn init $svnrepo"
|
||||
test_expect_success 'initialize git-svn' 'git-svn init "$svnrepo"'
|
||||
test_expect_success 'fetch revisions from svn' 'git-svn fetch'
|
||||
|
||||
name='test svn:keywords ignoring'
|
||||
@ -90,9 +90,9 @@ test_expect_success "propset CR on crlf files" \
|
||||
cd ..'
|
||||
|
||||
test_expect_success 'fetch and pull latest from svn and checkout a new wc' \
|
||||
"git-svn fetch &&
|
||||
'git-svn fetch &&
|
||||
git pull . remotes/git-svn &&
|
||||
svn co $svnrepo new_wc"
|
||||
svn co "$svnrepo" new_wc'
|
||||
|
||||
for i in crlf ne_crlf lf ne_lf cr ne_cr empty_cr empty_lf empty empty_crlf
|
||||
do
|
||||
|
@ -2,29 +2,29 @@
|
||||
test_description='git-svn rmdir'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'initialize repo' "
|
||||
test_expect_success 'initialize repo' '
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
mkdir -p deeply/nested/directory/number/1 &&
|
||||
mkdir -p deeply/nested/directory/number/2 &&
|
||||
echo foo > deeply/nested/directory/number/1/file &&
|
||||
echo foo > deeply/nested/directory/number/2/another &&
|
||||
svn import -m 'import for git-svn' . $svnrepo &&
|
||||
svn import -m "import for git-svn" . "$svnrepo" &&
|
||||
cd ..
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'mirror via git-svn' "
|
||||
git-svn init $svnrepo &&
|
||||
test_expect_success 'mirror via git-svn' '
|
||||
git-svn init "$svnrepo" &&
|
||||
git-svn fetch &&
|
||||
git checkout -f -b test-rmdir remotes/git-svn
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'Try a commit on rmdir' "
|
||||
test_expect_success 'Try a commit on rmdir' '
|
||||
git rm -f deeply/nested/directory/number/2/another &&
|
||||
git commit -a -m 'remove another' &&
|
||||
git commit -a -m "remove another" &&
|
||||
git-svn set-tree --rmdir HEAD &&
|
||||
svn ls -R $svnrepo | grep ^deeply/nested/directory/number/1
|
||||
"
|
||||
svn ls -R "$svnrepo" | grep ^deeply/nested/directory/number/1
|
||||
'
|
||||
|
||||
|
||||
test_done
|
||||
|
@ -10,30 +10,30 @@ test_expect_success 'make history for tracking' '
|
||||
mkdir import &&
|
||||
mkdir import/trunk &&
|
||||
echo hello >> import/trunk/README &&
|
||||
svn import -m initial import $svnrepo &&
|
||||
svn import -m initial import "$svnrepo" &&
|
||||
rm -rf import &&
|
||||
svn co $svnrepo/trunk trunk &&
|
||||
svn co "$svnrepo"/trunk trunk &&
|
||||
echo bye bye >> trunk/README &&
|
||||
svn rm -m "gone" $svnrepo/trunk &&
|
||||
svn rm -m "gone" "$svnrepo"/trunk &&
|
||||
rm -rf trunk &&
|
||||
mkdir trunk &&
|
||||
echo "new" > trunk/FOLLOWME &&
|
||||
svn import -m "new trunk" trunk $svnrepo/trunk
|
||||
svn import -m "new trunk" trunk "$svnrepo"/trunk
|
||||
'
|
||||
|
||||
test_expect_success 'clone repo with git' '
|
||||
git svn clone -s $svnrepo x &&
|
||||
git svn clone -s "$svnrepo" x &&
|
||||
test -f x/FOLLOWME &&
|
||||
test ! -f x/README
|
||||
'
|
||||
|
||||
test_expect_success 'make sure r2 still has old file' '
|
||||
test_expect_success 'make sure r2 still has old file' "
|
||||
cd x &&
|
||||
test -n "$(git svn find-rev r1)" &&
|
||||
git reset --hard $(git svn find-rev r1) &&
|
||||
test -n \"\$(git svn find-rev r1)\" &&
|
||||
git reset --hard \$(git svn find-rev r1) &&
|
||||
test -f README &&
|
||||
test ! -f FOLLOWME &&
|
||||
test x$(git svn find-rev r2) = x
|
||||
'
|
||||
test x\$(git svn find-rev r2) = x
|
||||
"
|
||||
|
||||
test_done
|
||||
|
@ -6,165 +6,165 @@
|
||||
test_description='git-svn fetching'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'initialize repo' "
|
||||
test_expect_success 'initialize repo' '
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
mkdir -p trunk &&
|
||||
echo hello > trunk/readme &&
|
||||
svn import -m 'initial' . $svnrepo &&
|
||||
svn import -m "initial" . "$svnrepo" &&
|
||||
cd .. &&
|
||||
svn co $svnrepo wc &&
|
||||
svn co "$svnrepo" wc &&
|
||||
cd wc &&
|
||||
echo world >> trunk/readme &&
|
||||
poke trunk/readme &&
|
||||
svn commit -m 'another commit' &&
|
||||
svn commit -m "another commit" &&
|
||||
svn up &&
|
||||
svn mv trunk thunk &&
|
||||
echo goodbye >> thunk/readme &&
|
||||
poke thunk/readme &&
|
||||
svn commit -m 'bye now' &&
|
||||
svn commit -m "bye now" &&
|
||||
cd ..
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'init and fetch a moved directory' "
|
||||
git-svn init --minimize-url -i thunk $svnrepo/thunk &&
|
||||
test_expect_success 'init and fetch a moved directory' '
|
||||
git-svn init --minimize-url -i thunk "$svnrepo"/thunk &&
|
||||
git-svn fetch -i thunk &&
|
||||
test \"\`git rev-parse --verify refs/remotes/thunk@2\`\" \
|
||||
= \"\`git rev-parse --verify refs/remotes/thunk~1\`\" &&
|
||||
test \"\`git cat-file blob refs/remotes/thunk:readme |\
|
||||
sed -n -e '3p'\`\" = goodbye &&
|
||||
test -z \"\`git config --get svn-remote.svn.fetch \
|
||||
'^trunk:refs/remotes/thunk@2$'\`\"
|
||||
"
|
||||
test "`git rev-parse --verify refs/remotes/thunk@2`" \
|
||||
= "`git rev-parse --verify refs/remotes/thunk~1`" &&
|
||||
test "`git cat-file blob refs/remotes/thunk:readme |\
|
||||
sed -n -e "3p"`" = goodbye &&
|
||||
test -z "`git config --get svn-remote.svn.fetch \
|
||||
"^trunk:refs/remotes/thunk@2$"`"
|
||||
'
|
||||
|
||||
test_expect_success 'init and fetch from one svn-remote' "
|
||||
git config svn-remote.svn.url $svnrepo &&
|
||||
test_expect_success 'init and fetch from one svn-remote' '
|
||||
git config svn-remote.svn.url "$svnrepo" &&
|
||||
git config --add svn-remote.svn.fetch \
|
||||
trunk:refs/remotes/svn/trunk &&
|
||||
git config --add svn-remote.svn.fetch \
|
||||
thunk:refs/remotes/svn/thunk &&
|
||||
git-svn fetch -i svn/thunk &&
|
||||
test \"\`git rev-parse --verify refs/remotes/svn/trunk\`\" \
|
||||
= \"\`git rev-parse --verify refs/remotes/svn/thunk~1\`\" &&
|
||||
test \"\`git cat-file blob refs/remotes/svn/thunk:readme |\
|
||||
sed -n -e '3p'\`\" = goodbye
|
||||
"
|
||||
test "`git rev-parse --verify refs/remotes/svn/trunk`" \
|
||||
= "`git rev-parse --verify refs/remotes/svn/thunk~1`" &&
|
||||
test "`git cat-file blob refs/remotes/svn/thunk:readme |\
|
||||
sed -n -e "3p"`" = goodbye
|
||||
'
|
||||
|
||||
test_expect_success 'follow deleted parent' "
|
||||
(svn cp -m 'resurrecting trunk as junk' \
|
||||
$svnrepo/trunk@2 $svnrepo/junk ||
|
||||
svn cp -m 'resurrecting trunk as junk' \
|
||||
-r2 $svnrepo/trunk $svnrepo/junk) &&
|
||||
test_expect_success 'follow deleted parent' '
|
||||
(svn cp -m "resurrecting trunk as junk" \
|
||||
"$svnrepo"/trunk@2 "$svnrepo"/junk ||
|
||||
svn cp -m "resurrecting trunk as junk" \
|
||||
-r2 "$svnrepo"/trunk "$svnrepo"/junk) &&
|
||||
git config --add svn-remote.svn.fetch \
|
||||
junk:refs/remotes/svn/junk &&
|
||||
git-svn fetch -i svn/thunk &&
|
||||
git-svn fetch -i svn/junk &&
|
||||
test -z \"\`git diff svn/junk svn/trunk\`\" &&
|
||||
test \"\`git merge-base svn/junk svn/trunk\`\" \
|
||||
= \"\`git rev-parse svn/trunk\`\"
|
||||
"
|
||||
test -z "`git diff svn/junk svn/trunk`" &&
|
||||
test "`git merge-base svn/junk svn/trunk`" \
|
||||
= "`git rev-parse svn/trunk`"
|
||||
'
|
||||
|
||||
test_expect_success 'follow larger parent' "
|
||||
test_expect_success 'follow larger parent' '
|
||||
mkdir -p import/trunk/thunk/bump/thud &&
|
||||
echo hi > import/trunk/thunk/bump/thud/file &&
|
||||
svn import -m 'import a larger parent' import $svnrepo/larger-parent &&
|
||||
svn cp -m 'hi' $svnrepo/larger-parent $svnrepo/another-larger &&
|
||||
svn import -m "import a larger parent" import "$svnrepo"/larger-parent &&
|
||||
svn cp -m "hi" "$svnrepo"/larger-parent "$svnrepo"/another-larger &&
|
||||
git-svn init --minimize-url -i larger \
|
||||
$svnrepo/another-larger/trunk/thunk/bump/thud &&
|
||||
"$svnrepo"/another-larger/trunk/thunk/bump/thud &&
|
||||
git-svn fetch -i larger &&
|
||||
git rev-parse --verify refs/remotes/larger &&
|
||||
git rev-parse --verify \
|
||||
refs/remotes/larger-parent/trunk/thunk/bump/thud &&
|
||||
test \"\`git merge-base \
|
||||
test "`git merge-base \
|
||||
refs/remotes/larger-parent/trunk/thunk/bump/thud \
|
||||
refs/remotes/larger\`\" = \
|
||||
\"\`git rev-parse refs/remotes/larger\`\"
|
||||
refs/remotes/larger`" = \
|
||||
"`git rev-parse refs/remotes/larger`"
|
||||
true
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'follow higher-level parent' "
|
||||
svn mkdir -m 'follow higher-level parent' $svnrepo/blob &&
|
||||
svn co $svnrepo/blob blob &&
|
||||
test_expect_success 'follow higher-level parent' '
|
||||
svn mkdir -m "follow higher-level parent" "$svnrepo"/blob &&
|
||||
svn co "$svnrepo"/blob blob &&
|
||||
cd blob &&
|
||||
echo hi > hi &&
|
||||
svn add hi &&
|
||||
svn commit -m 'hihi' &&
|
||||
svn commit -m "hihi" &&
|
||||
cd ..
|
||||
svn mkdir -m 'new glob at top level' $svnrepo/glob &&
|
||||
svn mv -m 'move blob down a level' $svnrepo/blob $svnrepo/glob/blob &&
|
||||
git-svn init --minimize-url -i blob $svnrepo/glob/blob &&
|
||||
svn mkdir -m "new glob at top level" "$svnrepo"/glob &&
|
||||
svn mv -m "move blob down a level" "$svnrepo"/blob "$svnrepo"/glob/blob &&
|
||||
git-svn init --minimize-url -i blob "$svnrepo"/glob/blob &&
|
||||
git-svn fetch -i blob
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'follow deleted directory' "
|
||||
svn mv -m 'bye!' $svnrepo/glob/blob/hi $svnrepo/glob/blob/bye &&
|
||||
svn rm -m 'remove glob' $svnrepo/glob &&
|
||||
git-svn init --minimize-url -i glob $svnrepo/glob &&
|
||||
test_expect_success 'follow deleted directory' '
|
||||
svn mv -m "bye!" "$svnrepo"/glob/blob/hi "$svnrepo"/glob/blob/bye &&
|
||||
svn rm -m "remove glob" "$svnrepo"/glob &&
|
||||
git-svn init --minimize-url -i glob "$svnrepo"/glob &&
|
||||
git-svn fetch -i glob &&
|
||||
test \"\`git cat-file blob refs/remotes/glob:blob/bye\`\" = hi &&
|
||||
test \"\`git ls-tree refs/remotes/glob | wc -l \`\" -eq 1
|
||||
"
|
||||
test "`git cat-file blob refs/remotes/glob:blob/bye`" = hi &&
|
||||
test "`git ls-tree refs/remotes/glob | wc -l `" -eq 1
|
||||
'
|
||||
|
||||
# ref: r9270 of the Subversion repository: (http://svn.collab.net/repos/svn)
|
||||
# in trunk/subversion/bindings/swig/perl
|
||||
test_expect_success 'follow-parent avoids deleting relevant info' "
|
||||
test_expect_success 'follow-parent avoids deleting relevant info' '
|
||||
mkdir -p import/trunk/subversion/bindings/swig/perl/t &&
|
||||
for i in a b c ; do \
|
||||
echo \$i > import/trunk/subversion/bindings/swig/perl/\$i.pm &&
|
||||
echo _\$i > import/trunk/subversion/bindings/swig/perl/t/\$i.t; \
|
||||
echo $i > import/trunk/subversion/bindings/swig/perl/$i.pm &&
|
||||
echo _$i > import/trunk/subversion/bindings/swig/perl/t/$i.t; \
|
||||
done &&
|
||||
echo 'bad delete test' > \
|
||||
echo "bad delete test" > \
|
||||
import/trunk/subversion/bindings/swig/perl/t/larger-parent &&
|
||||
echo 'bad delete test 2' > \
|
||||
echo "bad delete test 2" > \
|
||||
import/trunk/subversion/bindings/swig/perl/another-larger &&
|
||||
cd import &&
|
||||
svn import -m 'r9270 test' . $svnrepo/r9270 &&
|
||||
svn import -m "r9270 test" . "$svnrepo"/r9270 &&
|
||||
cd .. &&
|
||||
svn co $svnrepo/r9270/trunk/subversion/bindings/swig/perl r9270 &&
|
||||
svn co "$svnrepo"/r9270/trunk/subversion/bindings/swig/perl r9270 &&
|
||||
cd r9270 &&
|
||||
svn mkdir native &&
|
||||
svn mv t native/t &&
|
||||
for i in a b c; do svn mv \$i.pm native/\$i.pm; done &&
|
||||
for i in a b c; do svn mv $i.pm native/$i.pm; done &&
|
||||
echo z >> native/t/c.t &&
|
||||
poke native/t/c.t &&
|
||||
svn commit -m 'reorg test' &&
|
||||
svn commit -m "reorg test" &&
|
||||
cd .. &&
|
||||
git-svn init --minimize-url -i r9270-t \
|
||||
$svnrepo/r9270/trunk/subversion/bindings/swig/perl/native/t &&
|
||||
"$svnrepo"/r9270/trunk/subversion/bindings/swig/perl/native/t &&
|
||||
git-svn fetch -i r9270-t &&
|
||||
test \`git rev-list r9270-t | wc -l\` -eq 2 &&
|
||||
test \"\`git ls-tree --name-only r9270-t~1\`\" = \
|
||||
\"\`git ls-tree --name-only r9270-t\`\"
|
||||
"
|
||||
test `git rev-list r9270-t | wc -l` -eq 2 &&
|
||||
test "`git ls-tree --name-only r9270-t~1`" = \
|
||||
"`git ls-tree --name-only r9270-t`"
|
||||
'
|
||||
|
||||
test_expect_success "track initial change if it was only made to parent" "
|
||||
svn cp -m 'wheee!' $svnrepo/r9270/trunk $svnrepo/r9270/drunk &&
|
||||
test_expect_success "track initial change if it was only made to parent" '
|
||||
svn cp -m "wheee!" "$svnrepo"/r9270/trunk "$svnrepo"/r9270/drunk &&
|
||||
git-svn init --minimize-url -i r9270-d \
|
||||
$svnrepo/r9270/drunk/subversion/bindings/swig/perl/native/t &&
|
||||
"$svnrepo"/r9270/drunk/subversion/bindings/swig/perl/native/t &&
|
||||
git-svn fetch -i r9270-d &&
|
||||
test \`git rev-list r9270-d | wc -l\` -eq 3 &&
|
||||
test \"\`git ls-tree --name-only r9270-t\`\" = \
|
||||
\"\`git ls-tree --name-only r9270-d\`\" &&
|
||||
test \"\`git rev-parse r9270-t\`\" = \
|
||||
\"\`git rev-parse r9270-d~1\`\"
|
||||
"
|
||||
test `git rev-list r9270-d | wc -l` -eq 3 &&
|
||||
test "`git ls-tree --name-only r9270-t`" = \
|
||||
"`git ls-tree --name-only r9270-d`" &&
|
||||
test "`git rev-parse r9270-t`" = \
|
||||
"`git rev-parse r9270-d~1`"
|
||||
'
|
||||
|
||||
test_expect_success "track multi-parent paths" "
|
||||
svn cp -m 'resurrect /glob' $svnrepo/r9270 $svnrepo/glob &&
|
||||
test_expect_success "track multi-parent paths" '
|
||||
svn cp -m "resurrect /glob" "$svnrepo"/r9270 "$svnrepo"/glob &&
|
||||
git-svn multi-fetch &&
|
||||
test \`git cat-file commit refs/remotes/glob | \
|
||||
grep '^parent ' | wc -l\` -eq 2
|
||||
"
|
||||
test `git cat-file commit refs/remotes/glob | \
|
||||
grep "^parent " | wc -l` -eq 2
|
||||
'
|
||||
|
||||
test_expect_success "multi-fetch continues to work" "
|
||||
git-svn multi-fetch
|
||||
"
|
||||
|
||||
test_expect_success "multi-fetch works off a 'clean' repository" "
|
||||
rm -r $GIT_DIR/svn $GIT_DIR/refs/remotes $GIT_DIR/logs &&
|
||||
mkdir $GIT_DIR/svn &&
|
||||
test_expect_success "multi-fetch works off a 'clean' repository" '
|
||||
rm -r "$GIT_DIR/svn" "$GIT_DIR/refs/remotes" "$GIT_DIR/logs" &&
|
||||
mkdir "$GIT_DIR/svn" &&
|
||||
git-svn multi-fetch
|
||||
"
|
||||
'
|
||||
|
||||
test_debug 'gitk --all &'
|
||||
|
||||
|
@ -4,18 +4,18 @@
|
||||
test_description='git-svn commit-diff'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'initialize repo' "
|
||||
test_expect_success 'initialize repo' '
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
echo hello > readme &&
|
||||
svn import -m 'initial' . $svnrepo &&
|
||||
svn import -m "initial" . "$svnrepo" &&
|
||||
cd .. &&
|
||||
echo hello > readme &&
|
||||
git update-index --add readme &&
|
||||
git commit -a -m 'initial' &&
|
||||
git commit -a -m "initial" &&
|
||||
echo world >> readme &&
|
||||
git commit -a -m 'another'
|
||||
"
|
||||
git commit -a -m "another"
|
||||
'
|
||||
|
||||
head=`git rev-parse --verify HEAD^0`
|
||||
prev=`git rev-parse --verify HEAD^1`
|
||||
@ -24,20 +24,20 @@ prev=`git rev-parse --verify HEAD^1`
|
||||
# commit, so only a basic test of functionality is needed since we've
|
||||
# already tested commit extensively elsewhere
|
||||
|
||||
test_expect_success 'test the commit-diff command' "
|
||||
test -n '$prev' && test -n '$head' &&
|
||||
git-svn commit-diff -r1 '$prev' '$head' '$svnrepo' &&
|
||||
svn co $svnrepo wc &&
|
||||
test_expect_success 'test the commit-diff command' '
|
||||
test -n "$prev" && test -n "$head" &&
|
||||
git-svn commit-diff -r1 "$prev" "$head" "$svnrepo" &&
|
||||
svn co "$svnrepo" wc &&
|
||||
cmp readme wc/readme
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'commit-diff to a sub-directory (with git-svn config)' "
|
||||
svn import -m 'sub-directory' import $svnrepo/subdir &&
|
||||
git-svn init --minimize-url $svnrepo/subdir &&
|
||||
test_expect_success 'commit-diff to a sub-directory (with git-svn config)' '
|
||||
svn import -m "sub-directory" import "$svnrepo"/subdir &&
|
||||
git-svn init --minimize-url "$svnrepo"/subdir &&
|
||||
git-svn fetch &&
|
||||
git-svn commit-diff -r3 '$prev' '$head' &&
|
||||
svn cat $svnrepo/subdir/readme > readme.2 &&
|
||||
git-svn commit-diff -r3 "$prev" "$head" &&
|
||||
svn cat "$svnrepo"/subdir/readme > readme.2 &&
|
||||
cmp readme readme.2
|
||||
"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -4,56 +4,56 @@
|
||||
test_description='git-svn commit-diff clobber'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'initialize repo' "
|
||||
test_expect_success 'initialize repo' '
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
echo initial > file &&
|
||||
svn import -m 'initial' . $svnrepo &&
|
||||
svn import -m "initial" . "$svnrepo" &&
|
||||
cd .. &&
|
||||
echo initial > file &&
|
||||
git update-index --add file &&
|
||||
git commit -a -m 'initial'
|
||||
"
|
||||
test_expect_success 'commit change from svn side' "
|
||||
svn co $svnrepo t.svn &&
|
||||
git commit -a -m "initial"
|
||||
'
|
||||
test_expect_success 'commit change from svn side' '
|
||||
svn co "$svnrepo" t.svn &&
|
||||
cd t.svn &&
|
||||
echo second line from svn >> file &&
|
||||
poke file &&
|
||||
svn commit -m 'second line from svn' &&
|
||||
svn commit -m "second line from svn" &&
|
||||
cd .. &&
|
||||
rm -rf t.svn
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'commit conflicting change from git' "
|
||||
test_expect_success 'commit conflicting change from git' '
|
||||
echo second line from git >> file &&
|
||||
git commit -a -m 'second line from git' &&
|
||||
! git-svn commit-diff -r1 HEAD~1 HEAD $svnrepo
|
||||
"
|
||||
git commit -a -m "second line from git" &&
|
||||
! git-svn commit-diff -r1 HEAD~1 HEAD "$svnrepo"
|
||||
'
|
||||
|
||||
test_expect_success 'commit complementing change from git' "
|
||||
test_expect_success 'commit complementing change from git' '
|
||||
git reset --hard HEAD~1 &&
|
||||
echo second line from svn >> file &&
|
||||
git commit -a -m 'second line from svn' &&
|
||||
git commit -a -m "second line from svn" &&
|
||||
echo third line from git >> file &&
|
||||
git commit -a -m 'third line from git' &&
|
||||
git-svn commit-diff -r2 HEAD~1 HEAD $svnrepo
|
||||
"
|
||||
git commit -a -m "third line from git" &&
|
||||
git-svn commit-diff -r2 HEAD~1 HEAD "$svnrepo"
|
||||
'
|
||||
|
||||
test_expect_success 'dcommit fails to commit because of conflict' "
|
||||
git-svn init $svnrepo &&
|
||||
test_expect_success 'dcommit fails to commit because of conflict' '
|
||||
git-svn init "$svnrepo" &&
|
||||
git-svn fetch &&
|
||||
git reset --hard refs/remotes/git-svn &&
|
||||
svn co $svnrepo t.svn &&
|
||||
svn co "$svnrepo" t.svn &&
|
||||
cd t.svn &&
|
||||
echo fourth line from svn >> file &&
|
||||
poke file &&
|
||||
svn commit -m 'fourth line from svn' &&
|
||||
svn commit -m "fourth line from svn" &&
|
||||
cd .. &&
|
||||
rm -rf t.svn &&
|
||||
echo 'fourth line from git' >> file &&
|
||||
git commit -a -m 'fourth line from git' &&
|
||||
echo "fourth line from git" >> file &&
|
||||
git commit -a -m "fourth line from git" &&
|
||||
! git-svn dcommit
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'dcommit does the svn equivalent of an index merge' "
|
||||
git reset --hard refs/remotes/git-svn &&
|
||||
@ -66,15 +66,15 @@ test_expect_success 'dcommit does the svn equivalent of an index merge' "
|
||||
git-svn dcommit
|
||||
"
|
||||
|
||||
test_expect_success 'commit another change from svn side' "
|
||||
svn co $svnrepo t.svn &&
|
||||
test_expect_success 'commit another change from svn side' '
|
||||
svn co "$svnrepo" t.svn &&
|
||||
cd t.svn &&
|
||||
echo third line from svn >> file &&
|
||||
poke file &&
|
||||
svn commit -m 'third line from svn' &&
|
||||
svn commit -m "third line from svn" &&
|
||||
cd .. &&
|
||||
rm -rf t.svn
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'multiple dcommit from git-svn will not clobber svn' "
|
||||
git reset --hard refs/remotes/git-svn &&
|
||||
|
@ -4,30 +4,30 @@
|
||||
test_description='git-svn dcommit clobber series'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'initialize repo' "
|
||||
test_expect_success 'initialize repo' '
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
awk 'BEGIN { for (i = 1; i < 64; i++) { print i } }' > file
|
||||
svn import -m 'initial' . $svnrepo &&
|
||||
awk "BEGIN { for (i = 1; i < 64; i++) { print i } }" > file
|
||||
svn import -m "initial" . "$svnrepo" &&
|
||||
cd .. &&
|
||||
git svn init $svnrepo &&
|
||||
git svn init "$svnrepo" &&
|
||||
git svn fetch &&
|
||||
test -e file
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success '(supposedly) non-conflicting change from SVN' "
|
||||
test x\"\`sed -n -e 58p < file\`\" = x58 &&
|
||||
test x\"\`sed -n -e 61p < file\`\" = x61 &&
|
||||
svn co $svnrepo tmp &&
|
||||
test_expect_success '(supposedly) non-conflicting change from SVN' '
|
||||
test x"`sed -n -e 58p < file`" = x58 &&
|
||||
test x"`sed -n -e 61p < file`" = x61 &&
|
||||
svn co "$svnrepo" tmp &&
|
||||
cd tmp &&
|
||||
perl -i -p -e 's/^58\$/5588/' file &&
|
||||
perl -i -p -e 's/^61\$/6611/' file &&
|
||||
perl -i -p -e "s/^58$/5588/" file &&
|
||||
perl -i -p -e "s/^61$/6611/" file &&
|
||||
poke file &&
|
||||
test x\"\`sed -n -e 58p < file\`\" = x5588 &&
|
||||
test x\"\`sed -n -e 61p < file\`\" = x6611 &&
|
||||
svn commit -m '58 => 5588, 61 => 6611' &&
|
||||
test x"`sed -n -e 58p < file`" = x5588 &&
|
||||
test x"`sed -n -e 61p < file`" = x6611 &&
|
||||
svn commit -m "58 => 5588, 61 => 6611" &&
|
||||
cd ..
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'some unrelated changes to git' "
|
||||
echo hi > life &&
|
||||
|
@ -3,61 +3,61 @@
|
||||
test_description='git-svn metadata migrations from previous versions'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'setup old-looking metadata' "
|
||||
cp $GIT_DIR/config $GIT_DIR/config-old-git-svn &&
|
||||
test_expect_success 'setup old-looking metadata' '
|
||||
cp "$GIT_DIR"/config "$GIT_DIR"/config-old-git-svn &&
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
for i in trunk branches/a branches/b \
|
||||
tags/0.1 tags/0.2 tags/0.3; do
|
||||
mkdir -p \$i && \
|
||||
echo hello >> \$i/README || exit 1
|
||||
mkdir -p $i && \
|
||||
echo hello >> $i/README || exit 1
|
||||
done && \
|
||||
svn import -m test . $svnrepo
|
||||
svn import -m test . "$svnrepo"
|
||||
cd .. &&
|
||||
git-svn init $svnrepo &&
|
||||
git-svn init "$svnrepo" &&
|
||||
git-svn fetch &&
|
||||
mv $GIT_DIR/svn/* $GIT_DIR/ &&
|
||||
mv $GIT_DIR/svn/.metadata $GIT_DIR/ &&
|
||||
rmdir $GIT_DIR/svn &&
|
||||
mv "$GIT_DIR"/svn/* "$GIT_DIR"/ &&
|
||||
mv "$GIT_DIR"/svn/.metadata "$GIT_DIR"/ &&
|
||||
rmdir "$GIT_DIR"/svn &&
|
||||
git update-ref refs/heads/git-svn-HEAD refs/remotes/git-svn &&
|
||||
git update-ref refs/heads/svn-HEAD refs/remotes/git-svn &&
|
||||
git update-ref -d refs/remotes/git-svn refs/remotes/git-svn
|
||||
"
|
||||
'
|
||||
|
||||
head=`git rev-parse --verify refs/heads/git-svn-HEAD^0`
|
||||
test_expect_success 'git-svn-HEAD is a real HEAD' "test -n '$head'"
|
||||
|
||||
test_expect_success 'initialize old-style (v0) git-svn layout' "
|
||||
mkdir -p $GIT_DIR/git-svn/info $GIT_DIR/svn/info &&
|
||||
echo $svnrepo > $GIT_DIR/git-svn/info/url &&
|
||||
echo $svnrepo > $GIT_DIR/svn/info/url &&
|
||||
test_expect_success 'initialize old-style (v0) git-svn layout' '
|
||||
mkdir -p "$GIT_DIR"/git-svn/info "$GIT_DIR"/svn/info &&
|
||||
echo "$svnrepo" > "$GIT_DIR"/git-svn/info/url &&
|
||||
echo "$svnrepo" > "$GIT_DIR"/svn/info/url &&
|
||||
git-svn migrate &&
|
||||
! test -d $GIT_DIR/git-svn &&
|
||||
! test -d "$GIT_DIR"/git-svn &&
|
||||
git rev-parse --verify refs/remotes/git-svn^0 &&
|
||||
git rev-parse --verify refs/remotes/svn^0 &&
|
||||
test \`git config --get svn-remote.svn.url\` = '$svnrepo' &&
|
||||
test \`git config --get svn-remote.svn.fetch\` = \
|
||||
':refs/remotes/git-svn'
|
||||
"
|
||||
test "$(git config --get svn-remote.svn.url)" = "$svnrepo" &&
|
||||
test `git config --get svn-remote.svn.fetch` = \
|
||||
":refs/remotes/git-svn"
|
||||
'
|
||||
|
||||
test_expect_success 'initialize a multi-repository repo' "
|
||||
git-svn init $svnrepo -T trunk -t tags -b branches &&
|
||||
test_expect_success 'initialize a multi-repository repo' '
|
||||
git-svn init "$svnrepo" -T trunk -t tags -b branches &&
|
||||
git config --get-all svn-remote.svn.fetch > fetch.out &&
|
||||
grep '^trunk:refs/remotes/trunk$' fetch.out &&
|
||||
test -n \"\`git config --get svn-remote.svn.branches \
|
||||
'^branches/\*:refs/remotes/\*$'\`\" &&
|
||||
test -n \"\`git config --get svn-remote.svn.tags \
|
||||
'^tags/\*:refs/remotes/tags/\*$'\`\" &&
|
||||
grep "^trunk:refs/remotes/trunk$" fetch.out &&
|
||||
test -n "`git config --get svn-remote.svn.branches \
|
||||
"^branches/\*:refs/remotes/\*$"`" &&
|
||||
test -n "`git config --get svn-remote.svn.tags \
|
||||
"^tags/\*:refs/remotes/tags/\*$"`" &&
|
||||
git config --unset svn-remote.svn.branches \
|
||||
'^branches/\*:refs/remotes/\*$' &&
|
||||
"^branches/\*:refs/remotes/\*$" &&
|
||||
git config --unset svn-remote.svn.tags \
|
||||
'^tags/\*:refs/remotes/tags/\*$' &&
|
||||
git config --add svn-remote.svn.fetch 'branches/a:refs/remotes/a' &&
|
||||
git config --add svn-remote.svn.fetch 'branches/b:refs/remotes/b' &&
|
||||
"^tags/\*:refs/remotes/tags/\*$" &&
|
||||
git config --add svn-remote.svn.fetch "branches/a:refs/remotes/a" &&
|
||||
git config --add svn-remote.svn.fetch "branches/b:refs/remotes/b" &&
|
||||
for i in tags/0.1 tags/0.2 tags/0.3; do
|
||||
git config --add svn-remote.svn.fetch \
|
||||
\$i:refs/remotes/\$i || exit 1; done
|
||||
"
|
||||
$i:refs/remotes/$i || exit 1; done
|
||||
'
|
||||
|
||||
# refs should all be different, but the trees should all be the same:
|
||||
test_expect_success 'multi-fetch works on partial urls + paths' "
|
||||
@ -73,43 +73,43 @@ test_expect_success 'multi-fetch works on partial urls + paths' "
|
||||
refs/remotes/\$j\`\" ||exit 1; done; done
|
||||
"
|
||||
|
||||
test_expect_success 'migrate --minimize on old inited layout' "
|
||||
test_expect_success 'migrate --minimize on old inited layout' '
|
||||
git config --unset-all svn-remote.svn.fetch &&
|
||||
git config --unset-all svn-remote.svn.url &&
|
||||
rm -rf $GIT_DIR/svn &&
|
||||
for i in \`cat fetch.out\`; do
|
||||
path=\`expr \$i : '\\([^:]*\\):.*$'\`
|
||||
ref=\`expr \$i : '[^:]*:refs/remotes/\\(.*\\)$'\`
|
||||
if test -z \"\$ref\"; then continue; fi
|
||||
if test -n \"\$path\"; then path=\"/\$path\"; fi
|
||||
( mkdir -p $GIT_DIR/svn/\$ref/info/ &&
|
||||
echo $svnrepo\$path > $GIT_DIR/svn/\$ref/info/url ) || exit 1;
|
||||
rm -rf "$GIT_DIR"/svn &&
|
||||
for i in `cat fetch.out`; do
|
||||
path=`expr $i : "\([^:]*\):.*$"`
|
||||
ref=`expr $i : "[^:]*:refs/remotes/\(.*\)$"`
|
||||
if test -z "$ref"; then continue; fi
|
||||
if test -n "$path"; then path="/$path"; fi
|
||||
( mkdir -p "$GIT_DIR"/svn/$ref/info/ &&
|
||||
echo "$svnrepo"$path > "$GIT_DIR"/svn/$ref/info/url ) || exit 1;
|
||||
done &&
|
||||
git-svn migrate --minimize &&
|
||||
test -z \"\`git config -l |grep -v '^svn-remote\.git-svn\.'\`\" &&
|
||||
test -z "`git config -l |grep -v "^svn-remote\.git-svn\."`" &&
|
||||
git config --get-all svn-remote.svn.fetch > fetch.out &&
|
||||
grep '^trunk:refs/remotes/trunk$' fetch.out &&
|
||||
grep '^branches/a:refs/remotes/a$' fetch.out &&
|
||||
grep '^branches/b:refs/remotes/b$' fetch.out &&
|
||||
grep '^tags/0\.1:refs/remotes/tags/0\.1$' fetch.out &&
|
||||
grep '^tags/0\.2:refs/remotes/tags/0\.2$' fetch.out &&
|
||||
grep '^tags/0\.3:refs/remotes/tags/0\.3$' fetch.out
|
||||
grep '^:refs/remotes/git-svn' fetch.out
|
||||
"
|
||||
grep "^trunk:refs/remotes/trunk$" fetch.out &&
|
||||
grep "^branches/a:refs/remotes/a$" fetch.out &&
|
||||
grep "^branches/b:refs/remotes/b$" fetch.out &&
|
||||
grep "^tags/0\.1:refs/remotes/tags/0\.1$" fetch.out &&
|
||||
grep "^tags/0\.2:refs/remotes/tags/0\.2$" fetch.out &&
|
||||
grep "^tags/0\.3:refs/remotes/tags/0\.3$" fetch.out
|
||||
grep "^:refs/remotes/git-svn" fetch.out
|
||||
'
|
||||
|
||||
test_expect_success ".rev_db auto-converted to .rev_map.UUID" "
|
||||
test_expect_success ".rev_db auto-converted to .rev_map.UUID" '
|
||||
git-svn fetch -i trunk &&
|
||||
test -z \"\$(ls $GIT_DIR/svn/trunk/.rev_db.* 2>/dev/null)\" &&
|
||||
expect=\"\$(ls $GIT_DIR/svn/trunk/.rev_map.*)\" &&
|
||||
test -n \"\$expect\" &&
|
||||
rev_db=\$(echo \$expect | sed -e 's,_map,_db,') &&
|
||||
convert_to_rev_db \$expect \$rev_db &&
|
||||
rm -f \$expect &&
|
||||
test -f \$rev_db &&
|
||||
test -z "$(ls "$GIT_DIR"/svn/trunk/.rev_db.* 2>/dev/null)" &&
|
||||
expect="$(ls "$GIT_DIR"/svn/trunk/.rev_map.*)" &&
|
||||
test -n "$expect" &&
|
||||
rev_db="$(echo $expect | sed -e "s,_map,_db,")" &&
|
||||
convert_to_rev_db "$expect" "$rev_db" &&
|
||||
rm -f "$expect" &&
|
||||
test -f "$rev_db" &&
|
||||
git-svn fetch -i trunk &&
|
||||
test -z \"\$(ls $GIT_DIR/svn/trunk/.rev_db.* 2>/dev/null)\" &&
|
||||
test ! -e $GIT_DIR/svn/trunk/.rev_db &&
|
||||
test -f \$expect
|
||||
"
|
||||
test -z "$(ls "$GIT_DIR"/svn/trunk/.rev_db.* 2>/dev/null)" &&
|
||||
test ! -e "$GIT_DIR"/svn/trunk/.rev_db &&
|
||||
test -f "$expect"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -10,77 +10,77 @@ start a new branch
|
||||
initial
|
||||
EOF
|
||||
|
||||
test_expect_success 'test refspec globbing' "
|
||||
test_expect_success 'test refspec globbing' '
|
||||
mkdir -p trunk/src/a trunk/src/b trunk/doc &&
|
||||
echo 'hello world' > trunk/src/a/readme &&
|
||||
echo 'goodbye world' > trunk/src/b/readme &&
|
||||
svn import -m 'initial' trunk $svnrepo/trunk &&
|
||||
svn co $svnrepo tmp &&
|
||||
echo "hello world" > trunk/src/a/readme &&
|
||||
echo "goodbye world" > trunk/src/b/readme &&
|
||||
svn import -m "initial" trunk "$svnrepo"/trunk &&
|
||||
svn co "$svnrepo" tmp &&
|
||||
cd tmp &&
|
||||
mkdir branches tags &&
|
||||
svn add branches tags &&
|
||||
svn cp trunk branches/start &&
|
||||
svn commit -m 'start a new branch' &&
|
||||
svn commit -m "start a new branch" &&
|
||||
svn up &&
|
||||
echo 'hi' >> branches/start/src/b/readme &&
|
||||
echo "hi" >> branches/start/src/b/readme &&
|
||||
poke branches/start/src/b/readme &&
|
||||
echo 'hey' >> branches/start/src/a/readme &&
|
||||
echo "hey" >> branches/start/src/a/readme &&
|
||||
poke branches/start/src/a/readme &&
|
||||
svn commit -m 'hi' &&
|
||||
svn commit -m "hi" &&
|
||||
svn up &&
|
||||
svn cp branches/start tags/end &&
|
||||
echo 'bye' >> tags/end/src/b/readme &&
|
||||
echo "bye" >> tags/end/src/b/readme &&
|
||||
poke tags/end/src/b/readme &&
|
||||
echo 'aye' >> tags/end/src/a/readme &&
|
||||
echo "aye" >> tags/end/src/a/readme &&
|
||||
poke tags/end/src/a/readme &&
|
||||
svn commit -m 'the end' &&
|
||||
echo 'byebye' >> tags/end/src/b/readme &&
|
||||
svn commit -m "the end" &&
|
||||
echo "byebye" >> tags/end/src/b/readme &&
|
||||
poke tags/end/src/b/readme &&
|
||||
svn commit -m 'nothing to see here'
|
||||
svn commit -m "nothing to see here"
|
||||
cd .. &&
|
||||
git config --add svn-remote.svn.url $svnrepo &&
|
||||
git config --add svn-remote.svn.url "$svnrepo" &&
|
||||
git config --add svn-remote.svn.fetch \
|
||||
'trunk/src/a:refs/remotes/trunk' &&
|
||||
"trunk/src/a:refs/remotes/trunk" &&
|
||||
git config --add svn-remote.svn.branches \
|
||||
'branches/*/src/a:refs/remotes/branches/*' &&
|
||||
"branches/*/src/a:refs/remotes/branches/*" &&
|
||||
git config --add svn-remote.svn.tags\
|
||||
'tags/*/src/a:refs/remotes/tags/*' &&
|
||||
"tags/*/src/a:refs/remotes/tags/*" &&
|
||||
git-svn multi-fetch &&
|
||||
git log --pretty=oneline refs/remotes/tags/end | \
|
||||
sed -e 's/^.\{41\}//' > output.end &&
|
||||
sed -e "s/^.\{41\}//" > output.end &&
|
||||
cmp expect.end output.end &&
|
||||
test \"\`git rev-parse refs/remotes/tags/end~1\`\" = \
|
||||
\"\`git rev-parse refs/remotes/branches/start\`\" &&
|
||||
test \"\`git rev-parse refs/remotes/branches/start~2\`\" = \
|
||||
\"\`git rev-parse refs/remotes/trunk\`\"
|
||||
"
|
||||
test "`git rev-parse refs/remotes/tags/end~1`" = \
|
||||
"`git rev-parse refs/remotes/branches/start`" &&
|
||||
test "`git rev-parse refs/remotes/branches/start~2`" = \
|
||||
"`git rev-parse refs/remotes/trunk`"
|
||||
'
|
||||
|
||||
echo try to try > expect.two
|
||||
echo nothing to see here >> expect.two
|
||||
cat expect.end >> expect.two
|
||||
|
||||
test_expect_success 'test left-hand-side only globbing' "
|
||||
git config --add svn-remote.two.url $svnrepo &&
|
||||
test_expect_success 'test left-hand-side only globbing' '
|
||||
git config --add svn-remote.two.url "$svnrepo" &&
|
||||
git config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk &&
|
||||
git config --add svn-remote.two.branches \
|
||||
'branches/*:refs/remotes/two/branches/*' &&
|
||||
"branches/*:refs/remotes/two/branches/*" &&
|
||||
git config --add svn-remote.two.tags \
|
||||
'tags/*:refs/remotes/two/tags/*' &&
|
||||
"tags/*:refs/remotes/two/tags/*" &&
|
||||
cd tmp &&
|
||||
echo 'try try' >> tags/end/src/b/readme &&
|
||||
echo "try try" >> tags/end/src/b/readme &&
|
||||
poke tags/end/src/b/readme &&
|
||||
svn commit -m 'try to try'
|
||||
svn commit -m "try to try"
|
||||
cd .. &&
|
||||
git-svn fetch two &&
|
||||
test \`git rev-list refs/remotes/two/tags/end | wc -l\` -eq 6 &&
|
||||
test \`git rev-list refs/remotes/two/branches/start | wc -l\` -eq 3 &&
|
||||
test \`git rev-parse refs/remotes/two/branches/start~2\` = \
|
||||
\`git rev-parse refs/remotes/two/trunk\` &&
|
||||
test \`git rev-parse refs/remotes/two/tags/end~3\` = \
|
||||
\`git rev-parse refs/remotes/two/branches/start\` &&
|
||||
test `git rev-list refs/remotes/two/tags/end | wc -l` -eq 6 &&
|
||||
test `git rev-list refs/remotes/two/branches/start | wc -l` -eq 3 &&
|
||||
test `git rev-parse refs/remotes/two/branches/start~2` = \
|
||||
`git rev-parse refs/remotes/two/trunk` &&
|
||||
test `git rev-parse refs/remotes/two/tags/end~3` = \
|
||||
`git rev-parse refs/remotes/two/branches/start` &&
|
||||
git log --pretty=oneline refs/remotes/two/tags/end | \
|
||||
sed -e 's/^.\{41\}//' > output.two &&
|
||||
sed -e "s/^.\{41\}//" > output.two &&
|
||||
cmp expect.two output.two
|
||||
"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -7,15 +7,15 @@ test_description='git-svn useSvmProps test'
|
||||
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'load svm repo' "
|
||||
svnadmin load -q $rawsvnrepo < ../t9110/svm.dump &&
|
||||
git-svn init --minimize-url -R arr -i bar $svnrepo/mirror/arr &&
|
||||
git-svn init --minimize-url -R argh -i dir $svnrepo/mirror/argh &&
|
||||
test_expect_success 'load svm repo' '
|
||||
svnadmin load -q "$rawsvnrepo" < ../t9110/svm.dump &&
|
||||
git-svn init --minimize-url -R arr -i bar "$svnrepo"/mirror/arr &&
|
||||
git-svn init --minimize-url -R argh -i dir "$svnrepo"/mirror/argh &&
|
||||
git-svn init --minimize-url -R argh -i e \
|
||||
$svnrepo/mirror/argh/a/b/c/d/e &&
|
||||
"$svnrepo"/mirror/argh/a/b/c/d/e &&
|
||||
git config svn.useSvmProps true &&
|
||||
git-svn fetch --all
|
||||
"
|
||||
'
|
||||
|
||||
uuid=161ce429-a9dd-4828-af4a-52023f968c89
|
||||
|
||||
|
@ -7,14 +7,14 @@ test_description='git-svn useSvnsyncProps test'
|
||||
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'load svnsync repo' "
|
||||
svnadmin load -q $rawsvnrepo < ../t9111/svnsync.dump &&
|
||||
git-svn init --minimize-url -R arr -i bar $svnrepo/bar &&
|
||||
git-svn init --minimize-url -R argh -i dir $svnrepo/dir &&
|
||||
git-svn init --minimize-url -R argh -i e $svnrepo/dir/a/b/c/d/e &&
|
||||
test_expect_success 'load svnsync repo' '
|
||||
svnadmin load -q "$rawsvnrepo" < ../t9111/svnsync.dump &&
|
||||
git-svn init --minimize-url -R arr -i bar "$svnrepo"/bar &&
|
||||
git-svn init --minimize-url -R argh -i dir "$svnrepo"/dir &&
|
||||
git-svn init --minimize-url -R argh -i e "$svnrepo"/dir/a/b/c/d/e &&
|
||||
git config svn.useSvnsyncProps true &&
|
||||
git-svn fetch --all
|
||||
"
|
||||
'
|
||||
|
||||
uuid=161ce429-a9dd-4828-af4a-52023f968c89
|
||||
|
||||
|
@ -40,8 +40,8 @@ PROPS-END
|
||||
|
||||
EOF
|
||||
|
||||
test_expect_success 'load svn dumpfile' "svnadmin load $rawsvnrepo < dumpfile.svn"
|
||||
test_expect_success 'load svn dumpfile' 'svnadmin load "$rawsvnrepo" < dumpfile.svn'
|
||||
|
||||
test_expect_success 'initialize git-svn' "git-svn init $svnrepo"
|
||||
test_expect_success 'initialize git-svn' 'git-svn init "$svnrepo"'
|
||||
test_expect_success 'fetch revisions from svn' 'git-svn fetch'
|
||||
test_done
|
||||
|
@ -15,18 +15,18 @@ test_description='git-svn dcommit new files over svn:// test'
|
||||
|
||||
start_svnserve () {
|
||||
svnserve --listen-port $SVNSERVE_PORT \
|
||||
--root $rawsvnrepo \
|
||||
--root "$rawsvnrepo" \
|
||||
--listen-once \
|
||||
--listen-host 127.0.0.1 &
|
||||
}
|
||||
|
||||
test_expect_success 'start tracking an empty repo' "
|
||||
svn mkdir -m 'empty dir' $svnrepo/empty-dir &&
|
||||
echo anon-access = write >> $rawsvnrepo/conf/svnserve.conf &&
|
||||
test_expect_success 'start tracking an empty repo' '
|
||||
svn mkdir -m "empty dir" "$svnrepo"/empty-dir &&
|
||||
echo anon-access = write >> "$rawsvnrepo"/conf/svnserve.conf &&
|
||||
start_svnserve &&
|
||||
git svn init svn://127.0.0.1:$SVNSERVE_PORT &&
|
||||
git svn fetch
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'create files in new directory with dcommit' "
|
||||
mkdir git-new-dir &&
|
||||
|
@ -34,35 +34,35 @@ cat << EOF
|
||||
EOF
|
||||
}
|
||||
|
||||
test_expect_success 'setup svn repository' "
|
||||
svn co $svnrepo mysvnwork &&
|
||||
test_expect_success 'setup svn repository' '
|
||||
svn co "$svnrepo" mysvnwork &&
|
||||
mkdir -p mysvnwork/trunk &&
|
||||
cd mysvnwork &&
|
||||
big_text_block >> trunk/README &&
|
||||
svn add trunk &&
|
||||
svn ci -m 'first commit' trunk &&
|
||||
svn ci -m "first commit" trunk &&
|
||||
cd ..
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'setup git mirror and merge' "
|
||||
git svn init $svnrepo -t tags -T trunk -b branches &&
|
||||
test_expect_success 'setup git mirror and merge' '
|
||||
git svn init "$svnrepo" -t tags -T trunk -b branches &&
|
||||
git svn fetch &&
|
||||
git checkout --track -b svn remotes/trunk &&
|
||||
git checkout -b merge &&
|
||||
echo new file > new_file &&
|
||||
git add new_file &&
|
||||
git commit -a -m 'New file' &&
|
||||
git commit -a -m "New file" &&
|
||||
echo hello >> README &&
|
||||
git commit -a -m 'hello' &&
|
||||
git commit -a -m "hello" &&
|
||||
echo add some stuff >> new_file &&
|
||||
git commit -a -m 'add some stuff' &&
|
||||
git commit -a -m "add some stuff" &&
|
||||
git checkout svn &&
|
||||
mv -f README tmp &&
|
||||
echo friend > README &&
|
||||
cat tmp >> README &&
|
||||
git commit -a -m 'friend' &&
|
||||
git commit -a -m "friend" &&
|
||||
git pull . merge
|
||||
"
|
||||
'
|
||||
|
||||
test_debug 'gitk --all & sleep 1'
|
||||
|
||||
|
@ -7,16 +7,16 @@ test_description='git-svn dcommit can commit renames of files with ugly names'
|
||||
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'load repository with strange names' "
|
||||
svnadmin load -q $rawsvnrepo < ../t9115/funky-names.dump &&
|
||||
test_expect_success 'load repository with strange names' '
|
||||
svnadmin load -q "$rawsvnrepo" < ../t9115/funky-names.dump &&
|
||||
start_httpd gtk+
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'init and fetch repository' "
|
||||
git svn init $svnrepo &&
|
||||
test_expect_success 'init and fetch repository' '
|
||||
git svn init "$svnrepo" &&
|
||||
git svn fetch &&
|
||||
git reset --hard git-svn
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'create file in existing ugly and empty dir' '
|
||||
mkdir "#{bad_directory_name}" &&
|
||||
@ -59,28 +59,28 @@ test_expect_success 'add a file with plus signs' '
|
||||
git svn dcommit
|
||||
'
|
||||
|
||||
test_expect_success 'clone the repository to test rebase' "
|
||||
git svn clone $svnrepo test-rebase &&
|
||||
test_expect_success 'clone the repository to test rebase' '
|
||||
git svn clone "$svnrepo" test-rebase &&
|
||||
cd test-rebase &&
|
||||
echo test-rebase > test-rebase &&
|
||||
git add test-rebase &&
|
||||
git commit -m test-rebase &&
|
||||
cd ..
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'make a commit to test rebase' "
|
||||
test_expect_success 'make a commit to test rebase' '
|
||||
echo test-rebase-main > test-rebase-main &&
|
||||
git add test-rebase-main &&
|
||||
git commit -m test-rebase-main &&
|
||||
git svn dcommit
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'git-svn rebase works inside a fresh-cloned repository' "
|
||||
test_expect_success 'git-svn rebase works inside a fresh-cloned repository' '
|
||||
cd test-rebase &&
|
||||
git svn rebase &&
|
||||
test -e test-rebase-main &&
|
||||
test -e test-rebase
|
||||
"
|
||||
'
|
||||
|
||||
stop_httpd
|
||||
|
||||
|
@ -6,17 +6,17 @@
|
||||
test_description='git-svn log tests'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'setup repository and import' "
|
||||
test_expect_success 'setup repository and import' '
|
||||
mkdir import &&
|
||||
cd import &&
|
||||
for i in trunk branches/a branches/b \
|
||||
tags/0.1 tags/0.2 tags/0.3; do
|
||||
mkdir -p \$i && \
|
||||
echo hello >> \$i/README || exit 1
|
||||
mkdir -p $i && \
|
||||
echo hello >> $i/README || exit 1
|
||||
done && \
|
||||
svn import -m test . $svnrepo
|
||||
svn import -m test . "$svnrepo"
|
||||
cd .. &&
|
||||
git-svn init $svnrepo -T trunk -b branches -t tags &&
|
||||
git-svn init "$svnrepo" -T trunk -b branches -t tags &&
|
||||
git-svn fetch &&
|
||||
git reset --hard trunk &&
|
||||
echo bye >> README &&
|
||||
@ -37,7 +37,7 @@ test_expect_success 'setup repository and import' "
|
||||
echo try >> README &&
|
||||
git commit -a -m try &&
|
||||
git svn dcommit
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'run log' "
|
||||
git reset --hard a &&
|
||||
|
@ -13,43 +13,43 @@ rm -r .git
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
|
||||
test_expect_success 'setup svnrepo' "
|
||||
test_expect_success 'setup svnrepo' '
|
||||
mkdir project project/trunk project/branches project/tags &&
|
||||
echo foo > project/trunk/foo &&
|
||||
svn import -m '$test_description' project $svnrepo/project &&
|
||||
svn import -m "$test_description" project "$svnrepo"/project &&
|
||||
rm -rf project
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'basic clone' "
|
||||
test_expect_success 'basic clone' '
|
||||
test ! -d trunk &&
|
||||
git svn clone $svnrepo/project/trunk &&
|
||||
git svn clone "$svnrepo"/project/trunk &&
|
||||
test -d trunk/.git/svn &&
|
||||
test -e trunk/foo &&
|
||||
rm -rf trunk
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'clone to target directory' "
|
||||
test_expect_success 'clone to target directory' '
|
||||
test ! -d target &&
|
||||
git svn clone $svnrepo/project/trunk target &&
|
||||
git svn clone "$svnrepo"/project/trunk target &&
|
||||
test -d target/.git/svn &&
|
||||
test -e target/foo &&
|
||||
rm -rf target
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'clone with --stdlayout' "
|
||||
test_expect_success 'clone with --stdlayout' '
|
||||
test ! -d project &&
|
||||
git svn clone -s $svnrepo/project &&
|
||||
git svn clone -s "$svnrepo"/project &&
|
||||
test -d project/.git/svn &&
|
||||
test -e project/foo &&
|
||||
rm -rf project
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'clone to target directory with --stdlayout' "
|
||||
test_expect_success 'clone to target directory with --stdlayout' '
|
||||
test ! -d target &&
|
||||
git svn clone -s $svnrepo/project target &&
|
||||
git svn clone -s "$svnrepo"/project target &&
|
||||
test -d target/.git/svn &&
|
||||
test -e target/foo &&
|
||||
rm -rf target
|
||||
"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -6,25 +6,25 @@
|
||||
test_description='git-svn funky branch names'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'setup svnrepo' "
|
||||
test_expect_success 'setup svnrepo' '
|
||||
mkdir project project/trunk project/branches project/tags &&
|
||||
echo foo > project/trunk/foo &&
|
||||
svn import -m '$test_description' project \"$svnrepo/pr ject\" &&
|
||||
svn import -m "$test_description" project "$svnrepo/pr ject" &&
|
||||
rm -rf project &&
|
||||
svn cp -m 'fun' \"$svnrepo/pr ject/trunk\" \
|
||||
\"$svnrepo/pr ject/branches/fun plugin\" &&
|
||||
svn cp -m 'more fun!' \"$svnrepo/pr ject/branches/fun plugin\" \
|
||||
\"$svnrepo/pr ject/branches/more fun plugin!\" &&
|
||||
svn cp -m "fun" "$svnrepo/pr ject/trunk" \
|
||||
"$svnrepo/pr ject/branches/fun plugin" &&
|
||||
svn cp -m "more fun!" "$svnrepo/pr ject/branches/fun plugin" \
|
||||
"$svnrepo/pr ject/branches/more fun plugin!" &&
|
||||
start_httpd
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'test clone with funky branch names' "
|
||||
git svn clone -s \"$svnrepo/pr ject\" project &&
|
||||
test_expect_success 'test clone with funky branch names' '
|
||||
git svn clone -s "$svnrepo/pr ject" project &&
|
||||
cd project &&
|
||||
git rev-parse 'refs/remotes/fun%20plugin' &&
|
||||
git rev-parse 'refs/remotes/more%20fun%20plugin!' &&
|
||||
git rev-parse "refs/remotes/fun%20plugin" &&
|
||||
git rev-parse "refs/remotes/more%20fun%20plugin!" &&
|
||||
cd ..
|
||||
"
|
||||
'
|
||||
|
||||
test_expect_success 'test dcommit to funky branch' "
|
||||
cd project &&
|
||||
|
@ -6,13 +6,13 @@
|
||||
test_description='git-svn clone with percent escapes'
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'setup svnrepo' "
|
||||
test_expect_success 'setup svnrepo' '
|
||||
mkdir project project/trunk project/branches project/tags &&
|
||||
echo foo > project/trunk/foo &&
|
||||
svn import -m '$test_description' project '$svnrepo/pr ject' &&
|
||||
svn import -m "$test_description" project "$svnrepo/pr ject" &&
|
||||
rm -rf project &&
|
||||
start_httpd
|
||||
"
|
||||
'
|
||||
|
||||
if test "$SVN_HTTPD_PORT" = ""
|
||||
then
|
||||
|
@ -7,14 +7,14 @@ test_description='git-svn can fetch renamed directories'
|
||||
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
test_expect_success 'load repository with renamed directory' "
|
||||
svnadmin load -q $rawsvnrepo < ../t9121/renamed-dir.dump
|
||||
"
|
||||
test_expect_success 'load repository with renamed directory' '
|
||||
svnadmin load -q "$rawsvnrepo" < ../t9121/renamed-dir.dump
|
||||
'
|
||||
|
||||
test_expect_success 'init and fetch repository' "
|
||||
git svn init $svnrepo/newname &&
|
||||
test_expect_success 'init and fetch repository' '
|
||||
git svn init "$svnrepo/newname" &&
|
||||
git svn fetch
|
||||
"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
|
@ -153,21 +153,21 @@ test_expect_success 'req_Root failure (conflicting roots)' \
|
||||
tail log | grep "^error 1 Conflicting roots specified$"'
|
||||
|
||||
test_expect_success 'req_Root (strict paths)' \
|
||||
'cat request-anonymous | git-cvsserver --strict-paths pserver $SERVERDIR >log 2>&1 &&
|
||||
'cat request-anonymous | git-cvsserver --strict-paths pserver "$SERVERDIR" >log 2>&1 &&
|
||||
sed -ne \$p log | grep "^I LOVE YOU$"'
|
||||
|
||||
test_expect_success 'req_Root failure (strict-paths)' '
|
||||
! cat request-anonymous |
|
||||
git-cvsserver --strict-paths pserver $WORKDIR >log 2>&1
|
||||
git-cvsserver --strict-paths pserver "$WORKDIR" >log 2>&1
|
||||
'
|
||||
|
||||
test_expect_success 'req_Root (w/o strict-paths)' \
|
||||
'cat request-anonymous | git-cvsserver pserver $WORKDIR/ >log 2>&1 &&
|
||||
'cat request-anonymous | git-cvsserver pserver "$WORKDIR/" >log 2>&1 &&
|
||||
sed -ne \$p log | grep "^I LOVE YOU$"'
|
||||
|
||||
test_expect_success 'req_Root failure (w/o strict-paths)' '
|
||||
! cat request-anonymous |
|
||||
git-cvsserver pserver $WORKDIR/gitcvs >log 2>&1
|
||||
git-cvsserver pserver "$WORKDIR/gitcvs" >log 2>&1
|
||||
'
|
||||
|
||||
cat >request-base <<EOF
|
||||
@ -180,25 +180,25 @@ Root /gitcvs.git
|
||||
EOF
|
||||
|
||||
test_expect_success 'req_Root (base-path)' \
|
||||
'cat request-base | git-cvsserver --strict-paths --base-path $WORKDIR/ pserver $SERVERDIR >log 2>&1 &&
|
||||
'cat request-base | git-cvsserver --strict-paths --base-path "$WORKDIR/" pserver "$SERVERDIR" >log 2>&1 &&
|
||||
sed -ne \$p log | grep "^I LOVE YOU$"'
|
||||
|
||||
test_expect_success 'req_Root failure (base-path)' '
|
||||
! cat request-anonymous |
|
||||
git-cvsserver --strict-paths --base-path $WORKDIR pserver $SERVERDIR >log 2>&1
|
||||
git-cvsserver --strict-paths --base-path "$WORKDIR" pserver "$SERVERDIR" >log 2>&1
|
||||
'
|
||||
|
||||
GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled false || exit 1
|
||||
|
||||
test_expect_success 'req_Root (export-all)' \
|
||||
'cat request-anonymous | git-cvsserver --export-all pserver $WORKDIR >log 2>&1 &&
|
||||
'cat request-anonymous | git-cvsserver --export-all pserver "$WORKDIR" >log 2>&1 &&
|
||||
sed -ne \$p log | grep "^I LOVE YOU$"'
|
||||
|
||||
test_expect_success 'req_Root failure (export-all w/o whitelist)' \
|
||||
'! (cat request-anonymous | git-cvsserver --export-all pserver >log 2>&1 || false)'
|
||||
|
||||
test_expect_success 'req_Root (everything together)' \
|
||||
'cat request-base | git-cvsserver --export-all --strict-paths --base-path $WORKDIR/ pserver $SERVERDIR >log 2>&1 &&
|
||||
'cat request-base | git-cvsserver --export-all --strict-paths --base-path "$WORKDIR/" pserver "$SERVERDIR" >log 2>&1 &&
|
||||
sed -ne \$p log | grep "^I LOVE YOU$"'
|
||||
|
||||
GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled true || exit 1
|
||||
|
@ -10,6 +10,7 @@ commandline, and checks that it would not write any errors
|
||||
or warnings to log.'
|
||||
|
||||
gitweb_init () {
|
||||
safe_pwd="$(perl -MPOSIX=getcwd -e 'print quotemeta(getcwd)')"
|
||||
cat >gitweb_config.perl <<EOF
|
||||
#!/usr/bin/perl
|
||||
|
||||
@ -17,16 +18,16 @@ gitweb_init () {
|
||||
|
||||
our \$version = "current";
|
||||
our \$GIT = "git";
|
||||
our \$projectroot = "$(pwd)";
|
||||
our \$projectroot = "$safe_pwd";
|
||||
our \$project_maxdepth = 8;
|
||||
our \$home_link_str = "projects";
|
||||
our \$site_name = "[localhost]";
|
||||
our \$site_header = "";
|
||||
our \$site_footer = "";
|
||||
our \$home_text = "indextext.html";
|
||||
our @stylesheets = ("file:///$(pwd)/../../gitweb/gitweb.css");
|
||||
our \$logo = "file:///$(pwd)/../../gitweb/git-logo.png";
|
||||
our \$favicon = "file:///$(pwd)/../../gitweb/git-favicon.png";
|
||||
our @stylesheets = ("file:///$safe_pwd/../../gitweb/gitweb.css");
|
||||
our \$logo = "file:///$safe_pwd/../../gitweb/git-logo.png";
|
||||
our \$favicon = "file:///$safe_pwd/../../gitweb/git-favicon.png";
|
||||
our \$projects_list = "";
|
||||
our \$export_ok = "";
|
||||
our \$strict_export = "";
|
||||
@ -39,19 +40,21 @@ EOF
|
||||
}
|
||||
|
||||
gitweb_run () {
|
||||
export GATEWAY_INTERFACE="CGI/1.1"
|
||||
export HTTP_ACCEPT="*/*"
|
||||
export REQUEST_METHOD="GET"
|
||||
export QUERY_STRING=""$1""
|
||||
export PATH_INFO=""$2""
|
||||
GATEWAY_INTERFACE="CGI/1.1"
|
||||
HTTP_ACCEPT="*/*"
|
||||
REQUEST_METHOD="GET"
|
||||
QUERY_STRING=""$1""
|
||||
PATH_INFO=""$2""
|
||||
export GATEWAY_INTERFACE HTTP_ACCEPT REQUEST_METHOD QUERY_STRING PATH_INFO
|
||||
|
||||
export GITWEB_CONFIG=$(pwd)/gitweb_config.perl
|
||||
GITWEB_CONFIG=$(pwd)/gitweb_config.perl
|
||||
export GITWEB_CONFIG
|
||||
|
||||
# some of git commands write to STDERR on error, but this is not
|
||||
# written to web server logs, so we are not interested in that:
|
||||
# we are interested only in properly formatted errors/warnings
|
||||
rm -f gitweb.log &&
|
||||
perl -- $(pwd)/../../gitweb/gitweb.perl \
|
||||
perl -- "$(pwd)/../../gitweb/gitweb.perl" \
|
||||
>/dev/null 2>gitweb.log &&
|
||||
if grep -q -s "^[[]" gitweb.log >/dev/null; then false; else true; fi
|
||||
|
||||
|
@ -36,7 +36,7 @@ test_expect_success 'setup cvsroot' 'cvs init'
|
||||
|
||||
test_expect_success 'setup a cvs module' '
|
||||
|
||||
mkdir $CVSROOT/module &&
|
||||
mkdir "$CVSROOT/module" &&
|
||||
cvs co -d module-cvs module &&
|
||||
cd module-cvs &&
|
||||
cat <<EOF >o_fortuna &&
|
||||
|
@ -160,6 +160,22 @@ die () {
|
||||
|
||||
trap 'die' exit
|
||||
|
||||
# The semantics of the editor variables are that of invoking
|
||||
# sh -c "$EDITOR \"$@\"" files ...
|
||||
#
|
||||
# If our trash directory contains shell metacharacters, they will be
|
||||
# interpreted if we just set $EDITOR directly, so do a little dance with
|
||||
# environment variables to work around this.
|
||||
#
|
||||
# In particular, quoting isn't enough, as the path may contain the same quote
|
||||
# that we're using.
|
||||
test_set_editor () {
|
||||
FAKE_EDITOR="$1"
|
||||
export FAKE_EDITOR
|
||||
VISUAL='"$FAKE_EDITOR"'
|
||||
export VISUAL
|
||||
}
|
||||
|
||||
test_tick () {
|
||||
if test -z "${test_tick+set}"
|
||||
then
|
||||
@ -329,7 +345,7 @@ test_create_repo () {
|
||||
repo="$1"
|
||||
mkdir "$repo"
|
||||
cd "$repo" || error "Cannot setup test environment"
|
||||
"$GIT_EXEC_PATH/git" init --template=$GIT_EXEC_PATH/templates/blt/ >/dev/null 2>&1 ||
|
||||
"$GIT_EXEC_PATH/git" init "--template=$GIT_EXEC_PATH/templates/blt/" >/dev/null 2>&1 ||
|
||||
error "cannot run git init -- have you built things yet?"
|
||||
mv .git/hooks .git/hooks-disabled
|
||||
cd "$owd"
|
||||
@ -395,14 +411,14 @@ fi
|
||||
. ../GIT-BUILD-OPTIONS
|
||||
|
||||
# Test repository
|
||||
test=trash
|
||||
test="trash directory"
|
||||
rm -fr "$test" || {
|
||||
trap - exit
|
||||
echo >&5 "FATAL: Cannot prepare test area"
|
||||
exit 1
|
||||
}
|
||||
|
||||
test_create_repo $test
|
||||
test_create_repo "$test"
|
||||
cd "$test"
|
||||
|
||||
this_test=$(expr "./$0" : '.*/\(t[0-9]*\)-[^/]*$')
|
||||
|
Loading…
Reference in New Issue
Block a user