comparison tests/test-subrepo-svn.t @ 11916:d1ea16ca6520

tests: unify test-subrepo-svn
author Martin Geisler <mg@lazybytes.net>
date Tue, 17 Aug 2010 16:53:03 +0200
parents tests/test-subrepo-svn@0bf79efeaa20
children affec9fb56ef
comparison
equal deleted inserted replaced
11915:d521e72314f9 11916:d1ea16ca6520
1 $ "$TESTDIR/hghave" svn || exit 80
2
3 $ fix_path()
4 > {
5 > tr '\\' /
6 > }
7
8 $ escapedwd=`pwd | fix_path`
9
10 SVN wants all paths to start with a slash. Unfortunately, Windows ones
11 don't. Handle that.
12
13 $ expr "$escapedwd" : "\/" > /dev/null
14 $ if [ $? -ne 0 ]; then
15 > escapedwd="/$escapedwd"
16 > fi
17 $ escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"`
18 $ filterpath="s|$escapedwd|/root|"
19 $ filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /'
20
21 create subversion repo
22
23 $ SVNREPO="file://$escapedwd/svn-repo"
24 $ WCROOT="`pwd`/svn-wc"
25 $ svnadmin create svn-repo
26 $ svn co "$SVNREPO" svn-wc
27 Checked out revision 0.
28 $ cd svn-wc
29 $ mkdir src
30 $ echo alpha > src/alpha
31 $ svn add src
32 A src
33 A src/alpha
34 $ mkdir externals
35 $ echo other > externals/other
36 $ svn add externals
37 A externals
38 A externals/other
39 $ svn ci -m 'Add alpha'
40 Adding externals
41 Adding externals/other
42 Adding src
43 Adding src/alpha
44 Transmitting file data ..
45 Committed revision 1.
46 $ svn up
47 At revision 1.
48 $ echo "externals -r1 $SVNREPO/externals" > extdef
49 $ svn propset -F extdef svn:externals src
50 property 'svn:externals' set on 'src'
51 $ svn ci -m 'Setting externals'
52 Sending src
53
54 Committed revision 2.
55 $ cd ..
56
57 create hg repo
58
59 $ mkdir sub
60 $ cd sub
61 $ hg init t
62 $ cd t
63
64 first revision, no sub
65
66 $ echo a > a
67 $ hg ci -Am0
68 adding a
69
70 add first svn sub with leading whitespaces
71
72 $ echo "s = [svn] $SVNREPO/src" >> .hgsub
73 $ svn co --quiet "$SVNREPO"/src s
74 $ hg add .hgsub
75 $ hg ci -m1
76 committing subrepository s
77
78 debugsub
79
80 $ hg debugsub | sed "$filterpath"
81 path s
82 source file:///root/svn-repo/src
83 revision 2
84
85 change file in svn and hg, commit
86
87 $ echo a >> a
88 $ echo alpha >> s/alpha
89 $ hg commit -m 'Message!' \
90 > | sed 's:Sending.*s/alpha:Sending s/alpha:g'
91 committing subrepository s
92 Sending s/alpha
93 Transmitting file data .
94 Committed revision 3.
95
96 Fetching external item into '.*/s/externals'
97 External at revision 1.
98
99 At revision 3.
100 $ hg debugsub | sed "$filterpath"
101 path s
102 source file:///root/svn-repo/src
103 revision 3
104
105 $ echo a > s/a
106
107 should be empty despite change to s/a
108
109 $ hg st
110
111 add a commit from svn
112
113 $ cd "$WCROOT"/src
114 $ svn up
115 U alpha
116
117 Fetching external item into 'externals'
118 A externals/other
119 Updated external to revision 1.
120
121 Updated to revision 3.
122 $ echo xyz >> alpha
123 $ svn propset svn:mime-type 'text/xml' alpha
124 property 'svn:mime-type' set on 'alpha'
125 $ svn ci -m 'amend a from svn'
126 Sending src/alpha
127 Transmitting file data .
128 Committed revision 4.
129 $ cd ../../sub/t
130
131 this commit from hg will fail
132
133 $ echo zzz >> s/alpha
134 $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
135 committing subrepository s
136 abort: svn: Commit failed (details follow):
137 svn: File '/src/alpha' is out of date
138 $ svn revert -q s/alpha
139
140 this commit fails because of meta changes
141
142 $ svn propset svn:mime-type 'text/html' s/alpha
143 property 'svn:mime-type' set on 's/alpha'
144 $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
145 committing subrepository s
146 abort: svn: Commit failed (details follow):
147 svn: File '/src/alpha' is out of date
148 $ svn revert -q s/alpha
149
150 this commit fails because of externals changes
151
152 $ echo zzz > s/externals/other
153 $ hg ci -m 'amend externals from hg'
154 committing subrepository s
155 abort: cannot commit svn externals
156 $ svn revert -q s/externals/other
157
158 this commit fails because of externals meta changes
159
160 $ svn propset svn:mime-type 'text/html' s/externals/other
161 property 'svn:mime-type' set on 's/externals/other'
162 $ hg ci -m 'amend externals from hg'
163 committing subrepository s
164 abort: cannot commit svn externals
165 $ svn revert -q s/externals/other
166
167 clone
168
169 $ cd ..
170 $ hg clone t tc | fix_path
171 updating to branch default
172 A tc/s/alpha
173 U tc/s
174
175 Fetching external item into 'tc/s/externals'
176 A tc/s/externals/other
177 Checked out external at revision 1.
178
179 Checked out revision 3.
180 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
181 $ cd tc
182
183 debugsub in clone
184
185 $ hg debugsub | sed "$filterpath"
186 path s
187 source file:///root/svn-repo/src
188 revision 3
189
190 verify subrepo is contained within the repo directory
191
192 $ python -c "import os.path; print os.path.exists('s')"
193 True