git-svn: make the $GIT_DIR/svn/*/revs directory obsolete
This is a very intrusive change, so I've beefed up the tests significantly. Added 'full-test' a target to the Makefile, to test different possible configurations. This is intended for maintainers only. Users should only be concerned with 'test' succeeding. We now have a very simple custom database format for handling mapping of svn revisions => git commits. Of course, we're not really using it yet, either. Also disabled automatic branch-finding on new trees for now. It's too easily broken. revisions_eq() function should be helpful for branch detection. Also removed an extra assertion in fetch_cmd() that wasn't correctly done. This bug was found by full-test. Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
@ -52,49 +52,49 @@ EOF
|
||||
cd ..
|
||||
|
||||
rm -rf import
|
||||
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 &&
|
||||
svn commit -m "Not yet an Id" &&
|
||||
svn up &&
|
||||
echo Hello world >> kw.c &&
|
||||
svn commit -m "Modified file, but still not yet an Id" &&
|
||||
svn up &&
|
||||
svn propset svn:keywords Id kw.c &&
|
||||
svn commit -m "Propset Id" &&
|
||||
svn up &&
|
||||
cd ..'
|
||||
|
||||
cd test_wc
|
||||
echo 'Greetings' >> kw.c
|
||||
svn commit -m 'Not yet an $Id$'
|
||||
svn up
|
||||
test_expect_success 'initialize git-svn' "git-svn init $svnrepo"
|
||||
test_expect_success 'fetch revisions from svn' 'git-svn fetch'
|
||||
|
||||
echo 'Hello world' >> kw.c
|
||||
svn commit -m 'Modified file, but still not yet an $Id$'
|
||||
svn up
|
||||
|
||||
svn propset svn:keywords Id kw.c
|
||||
svn commit -m 'Propset $Id$'
|
||||
svn up
|
||||
cd ..
|
||||
|
||||
git-svn init "$svnrepo"
|
||||
git-svn fetch
|
||||
|
||||
git checkout -b mybranch remotes/git-svn
|
||||
echo 'Hi again' >> kw.c
|
||||
name='test svn:keywords ignoring'
|
||||
|
||||
git commit -a -m "$name"
|
||||
git-svn commit remotes/git-svn..mybranch
|
||||
git pull . remotes/git-svn
|
||||
test_expect_success "$name" \
|
||||
'git checkout -b mybranch remotes/git-svn &&
|
||||
echo Hi again >> kw.c &&
|
||||
git commit -a -m "test keywoards ignoring" &&
|
||||
git-svn commit remotes/git-svn..mybranch &&
|
||||
git pull . remotes/git-svn'
|
||||
|
||||
expect='/* $Id$ */'
|
||||
got="`sed -ne 2p kw.c`"
|
||||
test_expect_success 'raw $Id$ found in kw.c' "test '$expect' = '$got'"
|
||||
|
||||
cd test_wc
|
||||
svn propset svn:eol-style CR empty
|
||||
svn propset svn:eol-style CR crlf
|
||||
svn propset svn:eol-style CR ne_crlf
|
||||
svn commit -m 'propset CR on crlf files'
|
||||
svn up
|
||||
cd ..
|
||||
test_expect_success "propset CR on crlf files" \
|
||||
'cd test_wc &&
|
||||
svn propset svn:eol-style CR empty &&
|
||||
svn propset svn:eol-style CR crlf &&
|
||||
svn propset svn:eol-style CR ne_crlf &&
|
||||
svn commit -m "propset CR on crlf files" &&
|
||||
svn up &&
|
||||
cd ..'
|
||||
|
||||
git-svn fetch
|
||||
git pull . remotes/git-svn
|
||||
test_expect_success 'fetch and pull latest from svn and checkout a new wc' \
|
||||
"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
|
||||
test_expect_success "Comparing $i" "cmp $i new_wc/$i"
|
||||
@ -106,16 +106,16 @@ cd test_wc
|
||||
printf '$Id$\rHello\rWorld' > ne_cr
|
||||
a_cr=`printf '$Id$\r\nHello\r\nWorld\r\n' | git-hash-object --stdin`
|
||||
a_ne_cr=`printf '$Id$\r\nHello\r\nWorld' | git-hash-object --stdin`
|
||||
svn propset svn:eol-style CRLF cr
|
||||
svn propset svn:eol-style CRLF ne_cr
|
||||
svn propset svn:keywords Id cr
|
||||
svn propset svn:keywords Id ne_cr
|
||||
svn commit -m 'propset CRLF on cr files'
|
||||
svn up
|
||||
test_expect_success 'Set CRLF on cr files' \
|
||||
'svn propset svn:eol-style CRLF cr &&
|
||||
svn propset svn:eol-style CRLF ne_cr &&
|
||||
svn propset svn:keywords Id cr &&
|
||||
svn propset svn:keywords Id ne_cr &&
|
||||
svn commit -m "propset CRLF on cr files" &&
|
||||
svn up'
|
||||
cd ..
|
||||
|
||||
git-svn fetch
|
||||
git pull . remotes/git-svn
|
||||
test_expect_success 'fetch and pull latest from svn' \
|
||||
'git-svn fetch && git pull . remotes/git-svn'
|
||||
|
||||
b_cr="`git-hash-object cr`"
|
||||
b_ne_cr="`git-hash-object ne_cr`"
|
||||
|
||||
Reference in New Issue
Block a user