Mercurial > hg
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 |