mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
git-svn: svn (command-line) 1.0.x compatibility
Tested on a plain Ubuntu Warty installation using subversion 1.0.6-1.2ubuntu3 svn add --force was never needed, as it only affected directories, which git (thankfully) doesn't track The 1.0.x also didn't support symlinks(!), so allow NO_SYMLINK to be defined for running tests Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
parent
86f363791b
commit
0e8a002c59
@ -1306,12 +1306,12 @@ sub svn_checkout_tree {
|
||||
} elsif ($m->{chg} eq 'T') {
|
||||
sys(qw(svn rm --force),$m->{file_b});
|
||||
apply_mod_line_blob($m);
|
||||
sys(qw(svn add --force), $m->{file_b});
|
||||
sys(qw(svn add), $m->{file_b});
|
||||
svn_check_prop_executable($m);
|
||||
} elsif ($m->{chg} eq 'A') {
|
||||
svn_ensure_parent_path( $m->{file_b} );
|
||||
apply_mod_line_blob($m);
|
||||
sys(qw(svn add --force), $m->{file_b});
|
||||
sys(qw(svn add), $m->{file_b});
|
||||
svn_check_prop_executable($m);
|
||||
} else {
|
||||
croak "Invalid chg: $m->{chg}\n";
|
||||
|
@ -11,7 +11,10 @@ mkdir import
|
||||
cd import
|
||||
|
||||
echo foo > foo
|
||||
ln -s foo foo.link
|
||||
if test -z "$NO_SYMLINK"
|
||||
then
|
||||
ln -s foo foo.link
|
||||
fi
|
||||
mkdir -p dir/a/b/c/d/e
|
||||
echo 'deep dir' > dir/a/b/c/d/e/file
|
||||
mkdir -p bar
|
||||
@ -129,46 +132,45 @@ test_expect_success "$name" \
|
||||
|
||||
|
||||
|
||||
name='executable file becomes a symlink to bar/zzz (file)'
|
||||
rm exec.sh
|
||||
ln -s bar/zzz exec.sh
|
||||
git update-index exec.sh
|
||||
git commit -m "$name"
|
||||
if test -z "$NO_SYMLINK"
|
||||
then
|
||||
name='executable file becomes a symlink to bar/zzz (file)'
|
||||
rm exec.sh
|
||||
ln -s bar/zzz exec.sh
|
||||
git update-index exec.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
|
||||
svn up $SVN_TREE &&
|
||||
test -L $SVN_TREE/exec.sh"
|
||||
test_expect_success "$name" \
|
||||
"git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
|
||||
svn up $SVN_TREE &&
|
||||
test -L $SVN_TREE/exec.sh"
|
||||
|
||||
name='new symlink is added to a file that was also just made executable'
|
||||
chmod +x bar/zzz
|
||||
ln -s bar/zzz exec-2.sh
|
||||
git update-index --add bar/zzz exec-2.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn commit --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"
|
||||
|
||||
name='new symlink is added to a file that was also just made executable'
|
||||
chmod +x bar/zzz
|
||||
ln -s bar/zzz exec-2.sh
|
||||
git update-index --add bar/zzz exec-2.sh
|
||||
git commit -m "$name"
|
||||
name='modify a symlink to become a file'
|
||||
git help > help || true
|
||||
rm exec-2.sh
|
||||
cp help exec-2.sh
|
||||
git update-index exec-2.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn commit --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"
|
||||
|
||||
|
||||
|
||||
name='modify a symlink to become a file'
|
||||
git help > help || true
|
||||
rm exec-2.sh
|
||||
cp help exec-2.sh
|
||||
git update-index exec-2.sh
|
||||
git commit -m "$name"
|
||||
|
||||
test_expect_success "$name" \
|
||||
"git-svn commit --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 &&
|
||||
diff -u help $SVN_TREE/exec-2.sh"
|
||||
test_expect_success "$name" \
|
||||
"git-svn commit --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 &&
|
||||
diff -u help $SVN_TREE/exec-2.sh"
|
||||
fi
|
||||
|
||||
|
||||
if test -n "$GIT_SVN_LC_ALL" && echo $GIT_SVN_LC_ALL | grep -q '\.UTF-8$'
|
||||
@ -193,6 +195,12 @@ test_expect_success "$name" \
|
||||
git-rev-list --pretty=raw remotes/alt | grep ^tree | uniq > b &&
|
||||
diff -u a b"
|
||||
|
||||
if test -n "$NO_SYMLINK"
|
||||
then
|
||||
test_done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
name='check imported tree checksums expected tree checksums'
|
||||
rm -f expected
|
||||
if test -n "$GIT_SVN_LC_ALL" && echo $GIT_SVN_LC_ALL | grep -q '\.UTF-8$'
|
||||
|
Loading…
Reference in New Issue
Block a user