-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Eric Wong
committed
Feb 23, 2007
1 parent
9e3cdbd
commit 74a8122
Showing
2 changed files
with
113 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |