test-subrepo-svn.t
201 lines
| 4.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-subrepo-svn.t
|
r11916 | $ "$TESTDIR/hghave" svn || exit 80 | ||
$ fix_path() | ||||
> { | ||||
> tr '\\' / | ||||
> } | ||||
SVN wants all paths to start with a slash. Unfortunately, Windows ones | ||||
don't. Handle that. | ||||
|
r12366 | $ escapedwd=`pwd | fix_path` | ||
|
r12404 | $ expr "$escapedwd" : '\/' > /dev/null || escapedwd="/$escapedwd" | ||
|
r11916 | $ escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"` | ||
create subversion repo | ||||
$ SVNREPO="file://$escapedwd/svn-repo" | ||||
$ WCROOT="`pwd`/svn-wc" | ||||
$ svnadmin create svn-repo | ||||
$ svn co "$SVNREPO" svn-wc | ||||
Checked out revision 0. | ||||
$ cd svn-wc | ||||
$ mkdir src | ||||
$ echo alpha > src/alpha | ||||
$ svn add src | ||||
A src | ||||
A src/alpha | ||||
$ mkdir externals | ||||
$ echo other > externals/other | ||||
$ svn add externals | ||||
A externals | ||||
A externals/other | ||||
$ svn ci -m 'Add alpha' | ||||
Adding externals | ||||
Adding externals/other | ||||
Adding src | ||||
Adding src/alpha | ||||
Transmitting file data .. | ||||
Committed revision 1. | ||||
$ svn up | ||||
At revision 1. | ||||
$ echo "externals -r1 $SVNREPO/externals" > extdef | ||||
$ svn propset -F extdef svn:externals src | ||||
property 'svn:externals' set on 'src' | ||||
$ svn ci -m 'Setting externals' | ||||
Sending src | ||||
Committed revision 2. | ||||
$ cd .. | ||||
create hg repo | ||||
$ mkdir sub | ||||
$ cd sub | ||||
$ hg init t | ||||
$ cd t | ||||
first revision, no sub | ||||
$ echo a > a | ||||
$ hg ci -Am0 | ||||
adding a | ||||
add first svn sub with leading whitespaces | ||||
$ echo "s = [svn] $SVNREPO/src" >> .hgsub | ||||
$ svn co --quiet "$SVNREPO"/src s | ||||
$ hg add .hgsub | ||||
$ hg ci -m1 | ||||
committing subrepository s | ||||
debugsub | ||||
|
r12366 | $ hg debugsub | ||
|
r11916 | path s | ||
|
r12377 | source file:///*/svn-repo/src (glob) | ||
|
r11916 | revision 2 | ||
change file in svn and hg, commit | ||||
$ echo a >> a | ||||
$ echo alpha >> s/alpha | ||||
|
r12366 | $ hg commit -m 'Message!' | ||
|
r11916 | committing subrepository s | ||
|
r12377 | Sending*s/alpha (glob) | ||
|
r11916 | Transmitting file data . | ||
Committed revision 3. | ||||
|
r12376 | Fetching external item into '*/s/externals' (glob) | ||
|
r11916 | External at revision 1. | ||
At revision 3. | ||||
|
r12366 | $ hg debugsub | ||
|
r11916 | path s | ||
|
r12377 | source file:///*/svn-repo/src (glob) | ||
|
r11916 | revision 3 | ||
$ echo a > s/a | ||||
should be empty despite change to s/a | ||||
$ hg st | ||||
add a commit from svn | ||||
$ cd "$WCROOT"/src | ||||
$ svn up | ||||
U alpha | ||||
Fetching external item into 'externals' | ||||
A externals/other | ||||
Updated external to revision 1. | ||||
Updated to revision 3. | ||||
$ echo xyz >> alpha | ||||
$ svn propset svn:mime-type 'text/xml' alpha | ||||
property 'svn:mime-type' set on 'alpha' | ||||
$ svn ci -m 'amend a from svn' | ||||
Sending src/alpha | ||||
Transmitting file data . | ||||
Committed revision 4. | ||||
$ cd ../../sub/t | ||||
this commit from hg will fail | ||||
$ echo zzz >> s/alpha | ||||
|
r12366 | $ hg ci -m 'amend alpha from hg' | ||
|
r11916 | committing subrepository s | ||
abort: svn: Commit failed (details follow): | ||||
|
r12377 | svn: (Out of date)?.*/src/alpha.*(is out of date)? (re) | ||
|
r12366 | [255] | ||
|
r11916 | $ svn revert -q s/alpha | ||
this commit fails because of meta changes | ||||
$ svn propset svn:mime-type 'text/html' s/alpha | ||||
property 'svn:mime-type' set on 's/alpha' | ||||
|
r12366 | $ hg ci -m 'amend alpha from hg' | ||
|
r11916 | committing subrepository s | ||
abort: svn: Commit failed (details follow): | ||||
|
r12377 | svn: (Out of date)?.*/src/alpha.*(is out of date)? (re) | ||
|
r12366 | [255] | ||
|
r11916 | $ svn revert -q s/alpha | ||
this commit fails because of externals changes | ||||
$ echo zzz > s/externals/other | ||||
$ hg ci -m 'amend externals from hg' | ||||
committing subrepository s | ||||
abort: cannot commit svn externals | ||||
|
r12316 | [255] | ||
|
r12209 | $ hg diff --subrepos -r 1:2 | grep -v diff | ||
--- a/.hgsubstate Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/.hgsubstate Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-2 s | ||||
+3 s | ||||
--- a/a Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/a Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,2 @@ | ||||
a | ||||
+a | ||||
|
r11916 | $ svn revert -q s/externals/other | ||
this commit fails because of externals meta changes | ||||
$ svn propset svn:mime-type 'text/html' s/externals/other | ||||
property 'svn:mime-type' set on 's/externals/other' | ||||
$ hg ci -m 'amend externals from hg' | ||||
committing subrepository s | ||||
abort: cannot commit svn externals | ||||
|
r12316 | [255] | ||
|
r11916 | $ svn revert -q s/externals/other | ||
clone | ||||
$ cd .. | ||||
$ hg clone t tc | fix_path | ||||
updating to branch default | ||||
A tc/s/alpha | ||||
U tc/s | ||||
Fetching external item into 'tc/s/externals' | ||||
A tc/s/externals/other | ||||
Checked out external at revision 1. | ||||
Checked out revision 3. | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd tc | ||||
debugsub in clone | ||||
|
r12366 | $ hg debugsub | ||
|
r11916 | path s | ||
|
r12377 | source file:///*/svn-repo/src (glob) | ||
|
r11916 | revision 3 | ||
verify subrepo is contained within the repo directory | ||||
$ python -c "import os.path; print os.path.exists('s')" | ||||
True | ||||