##// END OF EJS Templates
revset: fix %r handling in formatspec
revset: fix %r handling in formatspec

File last commit:

r14820:7ef125fa stable
r15268:bd510381 default
Show More
test-subrepo-svn.t
585 lines | 13.5 KiB | text/troff | Tads3Lexer
/ tests / test-subrepo-svn.t
Martin Geisler
tests: unify test-subrepo-svn
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.
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ escapedwd=`pwd | fix_path`
Mads Kiilerich
test-subrepo-svn: restore expr functionality for solaris...
r12404 $ expr "$escapedwd" : '\/' > /dev/null || escapedwd="/$escapedwd"
Martin Geisler
tests: unify test-subrepo-svn
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
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 $ echo "s = [svn] $SVNREPO/src" >> .hgsub
$ echo "subdir/s = [svn] $SVNREPO/src" >> .hgsub
Martin Geisler
tests: unify test-subrepo-svn
r11916 $ svn co --quiet "$SVNREPO"/src s
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 $ mkdir subdir
$ svn co --quiet "$SVNREPO"/src subdir/s
Martin Geisler
tests: unify test-subrepo-svn
r11916 $ hg add .hgsub
$ hg ci -m1
committing subrepository s
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 committing subrepository subdir/s
Martin Geisler
tests: unify test-subrepo-svn
r11916
Matt Mackall
subrepo: fix status check on SVN subrepos (issue2445)
r12798 make sure we avoid empty commits (issue2445)
$ hg sum
parent: 1:* tip (glob)
1
branch: default
commit: (clean)
update: (current)
$ hg ci -moops
nothing changed
[1]
Martin Geisler
tests: unify test-subrepo-svn
r11916 debugsub
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg debugsub
Martin Geisler
tests: unify test-subrepo-svn
r11916 path s
Mads Kiilerich
test-subrepo-svn.t: ignore that subversion %-encodes $TESTTMP...
r12668 source file://*/svn-repo/src (glob)
Martin Geisler
tests: unify test-subrepo-svn
r11916 revision 2
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 path subdir/s
source file://*/svn-repo/src (glob)
revision 2
Martin Geisler
tests: unify test-subrepo-svn
r11916
change file in svn and hg, commit
$ echo a >> a
$ echo alpha >> s/alpha
Matt Mackall
subrepo: fix status check on SVN subrepos (issue2445)
r12798 $ hg sum
parent: 1:* tip (glob)
1
branch: default
commit: 1 modified, 1 subrepos
update: (current)
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg commit -m 'Message!'
Martin Geisler
tests: unify test-subrepo-svn
r11916 committing subrepository s
Matt Mackall
tests: various fixes for new unified test pattern format
r12377 Sending*s/alpha (glob)
Martin Geisler
tests: unify test-subrepo-svn
r11916 Transmitting file data .
Committed revision 3.
Mads Kiilerich
tests: remove redundant globs...
r12640 Fetching external item into '$TESTTMP/sub/t/s/externals'
Martin Geisler
tests: unify test-subrepo-svn
r11916 External at revision 1.
At revision 3.
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg debugsub
Martin Geisler
tests: unify test-subrepo-svn
r11916 path s
Mads Kiilerich
test-subrepo-svn.t: ignore that subversion %-encodes $TESTTMP...
r12668 source file://*/svn-repo/src (glob)
Martin Geisler
tests: unify test-subrepo-svn
r11916 revision 3
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 path subdir/s
source file://*/svn-repo/src (glob)
revision 2
Martin Geisler
tests: unify test-subrepo-svn
r11916
Patrick Mezard
subrepo: compare svn subrepo state to last committed revision...
r13287 add an unrelated revision in svn and update the subrepo to without
bringing any changes.
Matt Mackall
tests: fixes for svn 1.4.2
r13410 $ svn mkdir "$SVNREPO/unrelated" -m 'create unrelated'
Patrick Mezard
subrepo: compare svn subrepo state to last committed revision...
r13287
Committed revision 4.
$ svn up s
Fetching external item into 's/externals'
External at revision 1.
At revision 4.
$ hg sum
parent: 2:* tip (glob)
Message!
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-subrepo-svn
r11916 $ 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.
Patrick Mezard
subrepo: compare svn subrepo state to last committed revision...
r13287 Updated to revision 4.
Martin Geisler
tests: unify test-subrepo-svn
r11916 $ 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 .
Patrick Mezard
subrepo: compare svn subrepo state to last committed revision...
r13287 Committed revision 5.
Martin Geisler
tests: unify test-subrepo-svn
r11916 $ cd ../../sub/t
this commit from hg will fail
$ echo zzz >> s/alpha
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg ci -m 'amend alpha from hg'
Martin Geisler
tests: unify test-subrepo-svn
r11916 committing subrepository s
abort: svn: Commit failed (details follow):
Matt Mackall
tests: various fixes for new unified test pattern format
r12377 svn: (Out of date)?.*/src/alpha.*(is out of date)? (re)
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 [255]
Martin Geisler
tests: unify test-subrepo-svn
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'
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg ci -m 'amend alpha from hg'
Martin Geisler
tests: unify test-subrepo-svn
r11916 committing subrepository s
abort: svn: Commit failed (details follow):
Matt Mackall
tests: various fixes for new unified test pattern format
r12377 svn: (Out of date)?.*/src/alpha.*(is out of date)? (re)
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 [255]
Martin Geisler
tests: unify test-subrepo-svn
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
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Patrick Mezard
subrepos: handle diff nodeids in subrepos, not before...
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
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 @@ -1,2 +1,2 @@
Patrick Mezard
subrepos: handle diff nodeids in subrepos, not before...
r12209 -2 s
+3 s
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 2 subdir/s
Patrick Mezard
subrepos: handle diff nodeids in subrepos, not before...
r12209 --- 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
Martin Geisler
tests: unify test-subrepo-svn
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
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-subrepo-svn
r11916 $ svn revert -q s/externals/other
clone
$ cd ..
$ hg clone t tc | fix_path
updating to branch default
Matt Mackall
subrepo: fix up svn test output
r13907 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.
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 A tc/subdir/s/alpha
U tc/subdir/s
Fetching external item into 'tc/subdir/s/externals'
A tc/subdir/s/externals/other
Checked out external at revision 1.
Checked out revision 2.
Martin Geisler
tests: unify test-subrepo-svn
r11916 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd tc
debugsub in clone
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg debugsub
Martin Geisler
tests: unify test-subrepo-svn
r11916 path s
Mads Kiilerich
test-subrepo-svn.t: ignore that subversion %-encodes $TESTTMP...
r12668 source file://*/svn-repo/src (glob)
Martin Geisler
tests: unify test-subrepo-svn
r11916 revision 3
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 path subdir/s
source file://*/svn-repo/src (glob)
revision 2
Martin Geisler
tests: unify test-subrepo-svn
r11916
verify subrepo is contained within the repo directory
$ python -c "import os.path; print os.path.exists('s')"
True
Ronny Pfannschmidt
subrepo: test & fix svn subrepo removal
r12930
update to nullrev (must delete the subrepo)
$ hg up null
0 files updated, 0 files merged, 3 files removed, 0 files unresolved
Patrick Mezard
subrepo: prune empty directories when removing svn subrepo
r13015 $ ls
Erik Zielke
subrepo: make update -C clean the working directory for svn subrepos...
r13322
Check hg update --clean
$ cd $TESTTMP/sub/t
$ cd s
$ echo c0 > alpha
$ echo c1 > f1
$ echo c1 > f2
$ svn add f1 -q
$ svn status
Matt Mackall
tests: fixes for svn 1.4.2
r13410 ? * a (glob)
X * externals (glob)
? * f2 (glob)
M * alpha (glob)
A * f1 (glob)
Erik Zielke
subrepo: make update -C clean the working directory for svn subrepos...
r13322
Performing status on external item at 'externals'
Patrick Mezard
subrepo: fix update -C with svn subrepos when cwd != repo.root
r13332 $ cd ../..
$ hg -R t update -C
Erik Zielke
subrepo: make update -C clean the working directory for svn subrepos...
r13322
Patrick Mezard
subrepo: fix update -C with svn subrepos when cwd != repo.root
r13332 Fetching external item into 't/s/externals'
Erik Zielke
subrepo: make update -C clean the working directory for svn subrepos...
r13322 Checked out external at revision 1.
Checked out revision 3.
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Patrick Mezard
subrepo: fix update -C with svn subrepos when cwd != repo.root
r13332 $ cd t/s
Erik Zielke
subrepo: make update -C clean the working directory for svn subrepos...
r13322 $ svn status
Matt Mackall
tests: fixes for svn 1.4.2
r13410 ? * a (glob)
X * externals (glob)
? * f1 (glob)
? * f2 (glob)
Erik Zielke
subrepo: make update -C clean the working directory for svn subrepos...
r13322
Performing status on external item at 'externals'
Erik Zielke
subrepos: prompt on conflicts on update with dirty subrepos...
r13417
Sticky subrepositories, no changes
$ cd $TESTTMP/sub/t
$ hg id -n
2
$ cd s
$ svnversion
3
$ cd ..
$ hg update 1
U $TESTTMP/sub/t/s/alpha
Fetching external item into '$TESTTMP/sub/t/s/externals'
Checked out external at revision 1.
Checked out revision 2.
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id -n
1
$ cd s
$ svnversion
2
$ cd ..
Sticky subrepositorys, file changes
$ touch s/f1
$ cd s
$ svn add f1
A f1
$ cd ..
$ hg id -n
1
$ cd s
$ svnversion
2M
$ cd ..
$ hg update tip
subrepository sources for s differ
use (l)ocal source (2) or (r)emote source (3)?
l
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id -n
2+
$ cd s
$ svnversion
2M
$ cd ..
$ hg update --clean tip
U $TESTTMP/sub/t/s/alpha
Fetching external item into '$TESTTMP/sub/t/s/externals'
Checked out external at revision 1.
Checked out revision 3.
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Sticky subrepository, revision updates
$ hg id -n
2
$ cd s
$ svnversion
3
$ cd ..
$ cd s
$ svn update -r 1
U alpha
U .
Fetching external item into 'externals'
Updated external to revision 1.
Updated to revision 1.
$ cd ..
$ hg update 1
subrepository sources for s differ (in checked out version)
use (l)ocal source (1) or (r)emote source (2)?
l
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id -n
1+
$ cd s
$ svnversion
1
$ cd ..
Sticky subrepository, file changes and revision updates
$ touch s/f1
$ cd s
$ svn add f1
A f1
$ svnversion
1M
$ cd ..
$ hg id -n
1+
$ hg update tip
subrepository sources for s differ
use (l)ocal source (1) or (r)emote source (3)?
l
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id -n
2
$ cd s
$ svnversion
1M
$ cd ..
Sticky repository, update --clean
$ hg update --clean tip
U $TESTTMP/sub/t/s/alpha
U $TESTTMP/sub/t/s
Fetching external item into '$TESTTMP/sub/t/s/externals'
Checked out external at revision 1.
Checked out revision 3.
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id -n
2
$ cd s
$ svnversion
3
$ cd ..
Test subrepo already at intended revision:
$ cd s
$ svn update -r 2
U alpha
Fetching external item into 'externals'
Updated external to revision 1.
Updated to revision 2.
$ cd ..
$ hg update 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id -n
1+
$ cd s
$ svnversion
2
$ cd ..
Patrick Mezard
subrepo: handle svn tracked/unknown directory collisions...
r14050
Test case where subversion would fail to update the subrepo because there
are unknown directories being replaced by tracked ones (happens with rebase).
$ cd $WCROOT/src
$ mkdir dir
$ echo epsilon.py > dir/epsilon.py
$ svn add dir
A dir
A dir/epsilon.py
$ svn ci -m 'Add dir/epsilon.py'
Adding src/dir
Adding src/dir/epsilon.py
Transmitting file data .
Committed revision 6.
$ cd ../..
$ hg init rebaserepo
$ cd rebaserepo
$ svn co -r5 --quiet "$SVNREPO"/src s
$ echo "s = [svn] $SVNREPO/src" >> .hgsub
$ hg add .hgsub
$ hg ci -m addsub
committing subrepository s
$ echo a > a
$ hg ci -Am adda
adding a
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ svn up -r6 s
A s/dir
A s/dir/epsilon.py
Fetching external item into 's/externals'
Updated external to revision 1.
Updated to revision 6.
$ hg ci -m updatesub
committing subrepository s
created new head
$ echo pyc > s/dir/epsilon.pyc
$ hg up 1
D $TESTTMP/rebaserepo/s/dir
Fetching external item into '$TESTTMP/rebaserepo/s/externals'
Checked out external at revision 1.
Checked out revision 5.
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ if "$TESTDIR/hghave" -q svn15; then
> hg up 2 >/dev/null 2>&1 || echo update failed
> fi
Augie Fackler
svn subrepos: work around checkout obstructions (issue2752)...
r14664
Modify one of the externals to point to a different path so we can
test having obstructions when switching branches on checkout:
$ hg checkout tip
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "obstruct = [svn] $SVNREPO/externals" >> .hgsub
$ svn co -r5 --quiet "$SVNREPO"/externals obstruct
$ hg commit -m 'Start making obstructed wc'
committing subrepository obstruct
$ hg book other
$ hg co -r 'p1(tip)'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "obstruct = [svn] $SVNREPO/src" >> .hgsub
$ svn co -r5 --quiet "$SVNREPO"/src obstruct
$ hg commit -m 'Other branch which will be obstructed'
committing subrepository obstruct
created new head
Switching back to the head where we have another path mapped to the
same subrepo should work if the subrepo is clean.
$ hg co other
A $TESTTMP/rebaserepo/obstruct/other
Checked out revision 1.
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
This is surprising, but is also correct based on the current code:
$ echo "updating should (maybe) fail" > obstruct/other
$ hg co tip
abort: crosses branches (merge branches or use --clean to discard changes)
[255]
Eli Carter
subrepo: correct revision in svn checkout...
r14820
Point to a Subversion branch which has since been deleted and recreated
First, create that condition in the repository.
$ hg ci -m cleanup
committing subrepository obstruct
Sending obstruct/other
Transmitting file data .
Committed revision 7.
At revision 7.
$ svn mkdir -m "baseline" $SVNREPO/trunk
Committed revision 8.
$ svn copy -m "initial branch" $SVNREPO/trunk $SVNREPO/branch
Committed revision 9.
$ svn co --quiet "$SVNREPO"/branch tempwc
$ cd tempwc
$ echo "something old" > somethingold
$ svn add somethingold
A somethingold
$ svn ci -m 'Something old'
Adding somethingold
Transmitting file data .
Committed revision 10.
$ svn rm -m "remove branch" $SVNREPO/branch
Committed revision 11.
$ svn copy -m "recreate branch" $SVNREPO/trunk $SVNREPO/branch
Committed revision 12.
$ svn up
D somethingold
Updated to revision 12.
$ echo "something new" > somethingnew
$ svn add somethingnew
A somethingnew
$ svn ci -m 'Something new'
Adding somethingnew
Transmitting file data .
Committed revision 13.
$ cd ..
$ rm -rf tempwc
$ svn co "$SVNREPO/branch"@10 recreated
A recreated/somethingold
Checked out revision 10.
$ echo "recreated = [svn] $SVNREPO/branch" >> .hgsub
$ hg ci -m addsub
committing subrepository recreated
$ cd recreated
$ svn up
D somethingold
A somethingnew
Updated to revision 13.
$ cd ..
$ hg ci -m updatesub
committing subrepository recreated
$ hg up -r-2
D $TESTTMP/rebaserepo/recreated/somethingnew
A $TESTTMP/rebaserepo/recreated/somethingold
Checked out revision 10.
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ test -e recreated/somethingold