1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#!/bin/sh
#
# Copyright (c) 2008 Eric Wong
#
test_description='git svn authors file tests'
. ./lib-git-svn.sh
cat > svn-authors <<EOF
aa = AAAAAAA AAAAAAA <aa@example.com>
bb = BBBBBBB BBBBBBB <bb@example.com>
EOF
test_expect_success 'setup svnrepo' '
for i in aa bb cc dd
do
svn_cmd mkdir -m $i --username $i "$svnrepo"/$i
done
'
test_expect_success 'start import with incomplete authors file' '
test_must_fail git svn clone --authors-file=svn-authors "$svnrepo" x
'
test_expect_success 'imported 2 revisions successfully' '
(
cd x
git rev-list refs/remotes/git-svn >actual &&
test_line_count = 2 actual &&
git rev-list -1 --pretty=raw refs/remotes/git-svn >actual &&
grep "^author BBBBBBB BBBBBBB <bb@example\.com> " actual &&
git rev-list -1 --pretty=raw refs/remotes/git-svn~1 >actual &&
grep "^author AAAAAAA AAAAAAA <aa@example\.com> " actual
)
'
cat >> svn-authors <<EOF
cc = CCCCCCC CCCCCCC <cc@example.com>
dd = DDDDDDD DDDDDDD <dd@example.com>
EOF
test_expect_success 'continues to import once authors have been added' '
(
cd x
git svn fetch --authors-file=../svn-authors &&
git rev-list refs/remotes/git-svn >actual &&
test_line_count = 4 actual &&
git rev-list -1 --pretty=raw refs/remotes/git-svn >actual &&
grep "^author DDDDDDD DDDDDDD <dd@example\.com> " actual &&
git rev-list -1 --pretty=raw refs/remotes/git-svn~1 >actual &&
grep "^author CCCCCCC CCCCCCC <cc@example\.com> " actual
)
'
test_expect_success 'authors-file against globs' '
svn_cmd mkdir -m globs --username aa \
"$svnrepo"/aa/trunk "$svnrepo"/aa/branches "$svnrepo"/aa/tags &&
git svn clone --authors-file=svn-authors -s "$svnrepo"/aa aa-work &&
for i in bb ee cc
do
branch="aa/branches/$i"
svn_cmd mkdir -m "$branch" --username $i "$svnrepo/$branch"
done
'
test_expect_success 'fetch fails on ee' '
( cd aa-work && test_must_fail git svn fetch --authors-file=../svn-authors )
'
tmp_config_get () {
git config --file=.git/svn/.metadata --get "$1"
}
test_expect_success 'failure happened without negative side effects' '
(
cd aa-work &&
test 6 -eq "$(tmp_config_get svn-remote.svn.branches-maxRev)" &&
test 6 -eq "$(tmp_config_get svn-remote.svn.tags-maxRev)"
)
'
cat >> svn-authors <<EOF
ee = EEEEEEE EEEEEEE <ee@example.com>
EOF
test_expect_success 'fetch continues after authors-file is fixed' '
(
cd aa-work &&
git svn fetch --authors-file=../svn-authors &&
test 8 -eq "$(tmp_config_get svn-remote.svn.branches-maxRev)" &&
test 8 -eq "$(tmp_config_get svn-remote.svn.tags-maxRev)"
)
'
test_expect_success !MINGW 'fresh clone with svn.authors-file in config' '
(
rm -r "$GIT_DIR" &&
test x = x"$(git config svn.authorsfile)" &&
test_config="$HOME"/.gitconfig &&
sane_unset GIT_DIR &&
git config --global \
svn.authorsfile "$HOME"/svn-authors &&
test x"$HOME"/svn-authors = x"$(git config svn.authorsfile)" &&
git svn clone "$svnrepo" gitconfig.clone &&
cd gitconfig.clone &&
git log >actual &&
nr_ex=$(grep "^Author:.*example.com" actual | wc -l) &&
git rev-list HEAD >actual &&
nr_rev=$(wc -l <actual) &&
test $nr_rev -eq $nr_ex
)
'
cat >> svn-authors <<EOF
ff = FFFFFFF FFFFFFF <>
EOF
test_expect_success 'authors-file imported user without email' '
svn_cmd mkdir -m aa/branches/ff --username ff "$svnrepo/aa/branches/ff" &&
(
cd aa-work &&
git svn fetch --authors-file=../svn-authors &&
git rev-list -1 --pretty=raw refs/remotes/origin/ff | \
grep "^author FFFFFFF FFFFFFF <> "
)
'
test_debug 'GIT_DIR=gitconfig.clone/.git git log'
test_done
|