aboutsummaryrefslogtreecommitdiff
path: root/t/t9108-git-svn-glob.sh
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2007-02-10 13:28:50 -0800
committerEric Wong <normalperson@yhbt.net>2007-02-23 00:57:12 -0800
commit74a81227f95b52b1c3f7ac7ba84ac1a6e1708995 (patch)
tree91b116a474d7bb80cd9628ac5dab8e2ed31c6a38 /t/t9108-git-svn-glob.sh
parent9e3cdbd4f2e02bf63bfaa8f6e2747601f117cf2d (diff)
downloadgit-74a81227f95b52b1c3f7ac7ba84ac1a6e1708995.tar.gz
git-74a81227f95b52b1c3f7ac7ba84ac1a6e1708995.tar.xz
git-svn: correctly handle globs with a right-hand-side path component
Several bugs were found and fixed while getting this to work: * Remember the 'R'(eplace) case of actions and treat it like we would an 'A'(dd) case. * Fix a small case of follow-parent missing a parent if a subdirectory was modified in the revision where the parent was copied. * dirents returned by get_dir sometimes expire if the data structure is too big and the pool is destroyed, so we cache get_dir (along with check_path and get_revprops) temporarily along with its pool. Signed-off-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 't/t9108-git-svn-glob.sh')
-rwxr-xr-xt/t9108-git-svn-glob.sh53
1 files changed, 53 insertions, 0 deletions
diff --git a/t/t9108-git-svn-glob.sh b/t/t9108-git-svn-glob.sh
new file mode 100755
index 000000000..47cccdfd0
--- /dev/null
+++ b/t/t9108-git-svn-glob.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Copyright (c) 2007 Eric Wong
+test_description='git-svn globbing refspecs'
+. ./lib-git-svn.sh
+
+cat > expect.end <<EOF
+the end
+hi
+start a new branch
+initial
+EOF
+
+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 &&
+ cd tmp &&
+ mkdir branches tags &&
+ svn add branches tags &&
+ svn cp trunk branches/start &&
+ svn commit -m 'start a new branch' &&
+ svn up &&
+ echo 'hi' >> branches/start/src/b/readme &&
+ echo 'hey' >> branches/start/src/a/readme &&
+ svn commit -m 'hi' &&
+ svn up &&
+ svn cp branches/start tags/end &&
+ echo 'bye' >> tags/end/src/b/readme &&
+ echo 'aye' >> tags/end/src/a/readme &&
+ svn commit -m 'the end' &&
+ echo 'byebye' >> tags/end/src/b/readme &&
+ svn commit -m 'nothing to see here'
+ cd .. &&
+ git config --add svn-remote.svn.url $svnrepo &&
+ git config --add svn-remote.svn.fetch \
+ 'trunk/src/a:refs/remotes/trunk' &&
+ git config --add svn-remote.svn.branches \
+ 'branches/*/src/a:refs/remotes/branches/*' &&
+ git config --add svn-remote.svn.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 &&
+ 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_done