##// END OF EJS Templates
test: use generaldelta in 'test-ssh-bundle1.t'...
Pierre-Yves David -
r26930:aa136399 default
parent child Browse files
Show More
@@ -1,541 +1,543 b''
1 This test is a duplicate of 'test-http.t' feel free to factor out
1 This test is a duplicate of 'test-http.t' feel free to factor out
2 parts that are not bundle1/bundle2 specific.
2 parts that are not bundle1/bundle2 specific.
3
3
4 $ cat << EOF >> $HGRCPATH
4 $ cat << EOF >> $HGRCPATH
5 > [experimental]
5 > [experimental]
6 > # This test is dedicated to interaction through old bundle
6 > # This test is dedicated to interaction through old bundle
7 > bundle2-exp = False
7 > bundle2-exp = False
8 > [format] # temporary settings
9 > usegeneraldelta=yes
8 > EOF
10 > EOF
9
11
10
12
11 This test tries to exercise the ssh functionality with a dummy script
13 This test tries to exercise the ssh functionality with a dummy script
12
14
13 creating 'remote' repo
15 creating 'remote' repo
14
16
15 $ hg init remote
17 $ hg init remote
16 $ cd remote
18 $ cd remote
17 $ echo this > foo
19 $ echo this > foo
18 $ echo this > fooO
20 $ echo this > fooO
19 $ hg ci -A -m "init" foo fooO
21 $ hg ci -A -m "init" foo fooO
20
22
21 insert a closed branch (issue4428)
23 insert a closed branch (issue4428)
22
24
23 $ hg up null
25 $ hg up null
24 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
26 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
25 $ hg branch closed
27 $ hg branch closed
26 marked working directory as branch closed
28 marked working directory as branch closed
27 (branches are permanent and global, did you want a bookmark?)
29 (branches are permanent and global, did you want a bookmark?)
28 $ hg ci -mc0
30 $ hg ci -mc0
29 $ hg ci --close-branch -mc1
31 $ hg ci --close-branch -mc1
30 $ hg up -q default
32 $ hg up -q default
31
33
32 configure for serving
34 configure for serving
33
35
34 $ cat <<EOF > .hg/hgrc
36 $ cat <<EOF > .hg/hgrc
35 > [server]
37 > [server]
36 > uncompressed = True
38 > uncompressed = True
37 >
39 >
38 > [hooks]
40 > [hooks]
39 > changegroup = printenv.py changegroup-in-remote 0 ../dummylog
41 > changegroup = printenv.py changegroup-in-remote 0 ../dummylog
40 > EOF
42 > EOF
41 $ cd ..
43 $ cd ..
42
44
43 repo not found error
45 repo not found error
44
46
45 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local
47 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local
46 remote: abort: repository nonexistent not found!
48 remote: abort: repository nonexistent not found!
47 abort: no suitable response from remote hg!
49 abort: no suitable response from remote hg!
48 [255]
50 [255]
49
51
50 non-existent absolute path
52 non-existent absolute path
51
53
52 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy//`pwd`/nonexistent local
54 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy//`pwd`/nonexistent local
53 remote: abort: repository /$TESTTMP/nonexistent not found!
55 remote: abort: repository /$TESTTMP/nonexistent not found!
54 abort: no suitable response from remote hg!
56 abort: no suitable response from remote hg!
55 [255]
57 [255]
56
58
57 clone remote via stream
59 clone remote via stream
58
60
59 $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream
61 $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream
60 streaming all changes
62 streaming all changes
61 4 files to transfer, 615 bytes of data
63 4 files to transfer, 615 bytes of data
62 transferred 615 bytes in * seconds (*) (glob)
64 transferred 615 bytes in * seconds (*) (glob)
63 searching for changes
65 searching for changes
64 no changes found
66 no changes found
65 updating to branch default
67 updating to branch default
66 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
68 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
67 $ cd local-stream
69 $ cd local-stream
68 $ hg verify
70 $ hg verify
69 checking changesets
71 checking changesets
70 checking manifests
72 checking manifests
71 crosschecking files in changesets and manifests
73 crosschecking files in changesets and manifests
72 checking files
74 checking files
73 2 files, 3 changesets, 2 total revisions
75 2 files, 3 changesets, 2 total revisions
74 $ hg branches
76 $ hg branches
75 default 0:1160648e36ce
77 default 0:1160648e36ce
76 $ cd ..
78 $ cd ..
77
79
78 clone bookmarks via stream
80 clone bookmarks via stream
79
81
80 $ hg -R local-stream book mybook
82 $ hg -R local-stream book mybook
81 $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2
83 $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2
82 streaming all changes
84 streaming all changes
83 4 files to transfer, 615 bytes of data
85 4 files to transfer, 615 bytes of data
84 transferred 615 bytes in * seconds (*) (glob)
86 transferred 615 bytes in * seconds (*) (glob)
85 searching for changes
87 searching for changes
86 no changes found
88 no changes found
87 updating to branch default
89 updating to branch default
88 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
90 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
89 $ cd stream2
91 $ cd stream2
90 $ hg book
92 $ hg book
91 mybook 0:1160648e36ce
93 mybook 0:1160648e36ce
92 $ cd ..
94 $ cd ..
93 $ rm -rf local-stream stream2
95 $ rm -rf local-stream stream2
94
96
95 clone remote via pull
97 clone remote via pull
96
98
97 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local
99 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local
98 requesting all changes
100 requesting all changes
99 adding changesets
101 adding changesets
100 adding manifests
102 adding manifests
101 adding file changes
103 adding file changes
102 added 3 changesets with 2 changes to 2 files
104 added 3 changesets with 2 changes to 2 files
103 updating to branch default
105 updating to branch default
104 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
106 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
105
107
106 verify
108 verify
107
109
108 $ cd local
110 $ cd local
109 $ hg verify
111 $ hg verify
110 checking changesets
112 checking changesets
111 checking manifests
113 checking manifests
112 crosschecking files in changesets and manifests
114 crosschecking files in changesets and manifests
113 checking files
115 checking files
114 2 files, 3 changesets, 2 total revisions
116 2 files, 3 changesets, 2 total revisions
115 $ echo '[hooks]' >> .hg/hgrc
117 $ echo '[hooks]' >> .hg/hgrc
116 $ echo "changegroup = printenv.py changegroup-in-local 0 ../dummylog" >> .hg/hgrc
118 $ echo "changegroup = printenv.py changegroup-in-local 0 ../dummylog" >> .hg/hgrc
117
119
118 empty default pull
120 empty default pull
119
121
120 $ hg paths
122 $ hg paths
121 default = ssh://user@dummy/remote
123 default = ssh://user@dummy/remote
122 $ hg pull -e "python \"$TESTDIR/dummyssh\""
124 $ hg pull -e "python \"$TESTDIR/dummyssh\""
123 pulling from ssh://user@dummy/remote
125 pulling from ssh://user@dummy/remote
124 searching for changes
126 searching for changes
125 no changes found
127 no changes found
126
128
127 pull from wrong ssh URL
129 pull from wrong ssh URL
128
130
129 $ hg pull -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist
131 $ hg pull -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist
130 pulling from ssh://user@dummy/doesnotexist
132 pulling from ssh://user@dummy/doesnotexist
131 remote: abort: repository doesnotexist not found!
133 remote: abort: repository doesnotexist not found!
132 abort: no suitable response from remote hg!
134 abort: no suitable response from remote hg!
133 [255]
135 [255]
134
136
135 local change
137 local change
136
138
137 $ echo bleah > foo
139 $ echo bleah > foo
138 $ hg ci -m "add"
140 $ hg ci -m "add"
139
141
140 updating rc
142 updating rc
141
143
142 $ echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc
144 $ echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc
143 $ echo "[ui]" >> .hg/hgrc
145 $ echo "[ui]" >> .hg/hgrc
144 $ echo "ssh = python \"$TESTDIR/dummyssh\"" >> .hg/hgrc
146 $ echo "ssh = python \"$TESTDIR/dummyssh\"" >> .hg/hgrc
145
147
146 find outgoing
148 find outgoing
147
149
148 $ hg out ssh://user@dummy/remote
150 $ hg out ssh://user@dummy/remote
149 comparing with ssh://user@dummy/remote
151 comparing with ssh://user@dummy/remote
150 searching for changes
152 searching for changes
151 changeset: 3:a28a9d1a809c
153 changeset: 3:a28a9d1a809c
152 tag: tip
154 tag: tip
153 parent: 0:1160648e36ce
155 parent: 0:1160648e36ce
154 user: test
156 user: test
155 date: Thu Jan 01 00:00:00 1970 +0000
157 date: Thu Jan 01 00:00:00 1970 +0000
156 summary: add
158 summary: add
157
159
158
160
159 find incoming on the remote side
161 find incoming on the remote side
160
162
161 $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/local
163 $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/local
162 comparing with ssh://user@dummy/local
164 comparing with ssh://user@dummy/local
163 searching for changes
165 searching for changes
164 changeset: 3:a28a9d1a809c
166 changeset: 3:a28a9d1a809c
165 tag: tip
167 tag: tip
166 parent: 0:1160648e36ce
168 parent: 0:1160648e36ce
167 user: test
169 user: test
168 date: Thu Jan 01 00:00:00 1970 +0000
170 date: Thu Jan 01 00:00:00 1970 +0000
169 summary: add
171 summary: add
170
172
171
173
172 find incoming on the remote side (using absolute path)
174 find incoming on the remote side (using absolute path)
173
175
174 $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`"
176 $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`"
175 comparing with ssh://user@dummy/$TESTTMP/local
177 comparing with ssh://user@dummy/$TESTTMP/local
176 searching for changes
178 searching for changes
177 changeset: 3:a28a9d1a809c
179 changeset: 3:a28a9d1a809c
178 tag: tip
180 tag: tip
179 parent: 0:1160648e36ce
181 parent: 0:1160648e36ce
180 user: test
182 user: test
181 date: Thu Jan 01 00:00:00 1970 +0000
183 date: Thu Jan 01 00:00:00 1970 +0000
182 summary: add
184 summary: add
183
185
184
186
185 push
187 push
186
188
187 $ hg push
189 $ hg push
188 pushing to ssh://user@dummy/remote
190 pushing to ssh://user@dummy/remote
189 searching for changes
191 searching for changes
190 remote: adding changesets
192 remote: adding changesets
191 remote: adding manifests
193 remote: adding manifests
192 remote: adding file changes
194 remote: adding file changes
193 remote: added 1 changesets with 1 changes to 1 files
195 remote: added 1 changesets with 1 changes to 1 files
194 $ cd ../remote
196 $ cd ../remote
195
197
196 check remote tip
198 check remote tip
197
199
198 $ hg tip
200 $ hg tip
199 changeset: 3:a28a9d1a809c
201 changeset: 3:a28a9d1a809c
200 tag: tip
202 tag: tip
201 parent: 0:1160648e36ce
203 parent: 0:1160648e36ce
202 user: test
204 user: test
203 date: Thu Jan 01 00:00:00 1970 +0000
205 date: Thu Jan 01 00:00:00 1970 +0000
204 summary: add
206 summary: add
205
207
206 $ hg verify
208 $ hg verify
207 checking changesets
209 checking changesets
208 checking manifests
210 checking manifests
209 crosschecking files in changesets and manifests
211 crosschecking files in changesets and manifests
210 checking files
212 checking files
211 2 files, 4 changesets, 3 total revisions
213 2 files, 4 changesets, 3 total revisions
212 $ hg cat -r tip foo
214 $ hg cat -r tip foo
213 bleah
215 bleah
214 $ echo z > z
216 $ echo z > z
215 $ hg ci -A -m z z
217 $ hg ci -A -m z z
216 created new head
218 created new head
217
219
218 test pushkeys and bookmarks
220 test pushkeys and bookmarks
219
221
220 $ cd ../local
222 $ cd ../local
221 $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote namespaces
223 $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote namespaces
222 bookmarks
224 bookmarks
223 namespaces
225 namespaces
224 phases
226 phases
225 $ hg book foo -r 0
227 $ hg book foo -r 0
226 $ hg out -B
228 $ hg out -B
227 comparing with ssh://user@dummy/remote
229 comparing with ssh://user@dummy/remote
228 searching for changed bookmarks
230 searching for changed bookmarks
229 foo 1160648e36ce
231 foo 1160648e36ce
230 $ hg push -B foo
232 $ hg push -B foo
231 pushing to ssh://user@dummy/remote
233 pushing to ssh://user@dummy/remote
232 searching for changes
234 searching for changes
233 no changes found
235 no changes found
234 exporting bookmark foo
236 exporting bookmark foo
235 [1]
237 [1]
236 $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks
238 $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks
237 foo 1160648e36cec0054048a7edc4110c6f84fde594
239 foo 1160648e36cec0054048a7edc4110c6f84fde594
238 $ hg book -f foo
240 $ hg book -f foo
239 $ hg push --traceback
241 $ hg push --traceback
240 pushing to ssh://user@dummy/remote
242 pushing to ssh://user@dummy/remote
241 searching for changes
243 searching for changes
242 no changes found
244 no changes found
243 updating bookmark foo
245 updating bookmark foo
244 [1]
246 [1]
245 $ hg book -d foo
247 $ hg book -d foo
246 $ hg in -B
248 $ hg in -B
247 comparing with ssh://user@dummy/remote
249 comparing with ssh://user@dummy/remote
248 searching for changed bookmarks
250 searching for changed bookmarks
249 foo a28a9d1a809c
251 foo a28a9d1a809c
250 $ hg book -f -r 0 foo
252 $ hg book -f -r 0 foo
251 $ hg pull -B foo
253 $ hg pull -B foo
252 pulling from ssh://user@dummy/remote
254 pulling from ssh://user@dummy/remote
253 no changes found
255 no changes found
254 updating bookmark foo
256 updating bookmark foo
255 $ hg book -d foo
257 $ hg book -d foo
256 $ hg push -B foo
258 $ hg push -B foo
257 pushing to ssh://user@dummy/remote
259 pushing to ssh://user@dummy/remote
258 searching for changes
260 searching for changes
259 no changes found
261 no changes found
260 deleting remote bookmark foo
262 deleting remote bookmark foo
261 [1]
263 [1]
262
264
263 a bad, evil hook that prints to stdout
265 a bad, evil hook that prints to stdout
264
266
265 $ cat <<EOF > $TESTTMP/badhook
267 $ cat <<EOF > $TESTTMP/badhook
266 > import sys
268 > import sys
267 > sys.stdout.write("KABOOM\n")
269 > sys.stdout.write("KABOOM\n")
268 > EOF
270 > EOF
269
271
270 $ echo '[hooks]' >> ../remote/.hg/hgrc
272 $ echo '[hooks]' >> ../remote/.hg/hgrc
271 $ echo "changegroup.stdout = python $TESTTMP/badhook" >> ../remote/.hg/hgrc
273 $ echo "changegroup.stdout = python $TESTTMP/badhook" >> ../remote/.hg/hgrc
272 $ echo r > r
274 $ echo r > r
273 $ hg ci -A -m z r
275 $ hg ci -A -m z r
274
276
275 push should succeed even though it has an unexpected response
277 push should succeed even though it has an unexpected response
276
278
277 $ hg push
279 $ hg push
278 pushing to ssh://user@dummy/remote
280 pushing to ssh://user@dummy/remote
279 searching for changes
281 searching for changes
280 remote has heads on branch 'default' that are not known locally: 6c0482d977a3
282 remote has heads on branch 'default' that are not known locally: 6c0482d977a3
281 remote: adding changesets
283 remote: adding changesets
282 remote: adding manifests
284 remote: adding manifests
283 remote: adding file changes
285 remote: adding file changes
284 remote: added 1 changesets with 1 changes to 1 files
286 remote: added 1 changesets with 1 changes to 1 files
285 remote: KABOOM
287 remote: KABOOM
286 $ hg -R ../remote heads
288 $ hg -R ../remote heads
287 changeset: 5:1383141674ec
289 changeset: 5:1383141674ec
288 tag: tip
290 tag: tip
289 parent: 3:a28a9d1a809c
291 parent: 3:a28a9d1a809c
290 user: test
292 user: test
291 date: Thu Jan 01 00:00:00 1970 +0000
293 date: Thu Jan 01 00:00:00 1970 +0000
292 summary: z
294 summary: z
293
295
294 changeset: 4:6c0482d977a3
296 changeset: 4:6c0482d977a3
295 parent: 0:1160648e36ce
297 parent: 0:1160648e36ce
296 user: test
298 user: test
297 date: Thu Jan 01 00:00:00 1970 +0000
299 date: Thu Jan 01 00:00:00 1970 +0000
298 summary: z
300 summary: z
299
301
300
302
301 clone bookmarks
303 clone bookmarks
302
304
303 $ hg -R ../remote bookmark test
305 $ hg -R ../remote bookmark test
304 $ hg -R ../remote bookmarks
306 $ hg -R ../remote bookmarks
305 * test 4:6c0482d977a3
307 * test 4:6c0482d977a3
306 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks
308 $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks
307 requesting all changes
309 requesting all changes
308 adding changesets
310 adding changesets
309 adding manifests
311 adding manifests
310 adding file changes
312 adding file changes
311 added 6 changesets with 5 changes to 4 files (+1 heads)
313 added 6 changesets with 5 changes to 4 files (+1 heads)
312 updating to branch default
314 updating to branch default
313 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
315 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
314 $ hg -R local-bookmarks bookmarks
316 $ hg -R local-bookmarks bookmarks
315 test 4:6c0482d977a3
317 test 4:6c0482d977a3
316
318
317 passwords in ssh urls are not supported
319 passwords in ssh urls are not supported
318 (we use a glob here because different Python versions give different
320 (we use a glob here because different Python versions give different
319 results here)
321 results here)
320
322
321 $ hg push ssh://user:erroneouspwd@dummy/remote
323 $ hg push ssh://user:erroneouspwd@dummy/remote
322 pushing to ssh://user:*@dummy/remote (glob)
324 pushing to ssh://user:*@dummy/remote (glob)
323 abort: password in URL not supported!
325 abort: password in URL not supported!
324 [255]
326 [255]
325
327
326 $ cd ..
328 $ cd ..
327
329
328 hide outer repo
330 hide outer repo
329 $ hg init
331 $ hg init
330
332
331 Test remote paths with spaces (issue2983):
333 Test remote paths with spaces (issue2983):
332
334
333 $ hg init --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
335 $ hg init --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
334 $ touch "$TESTTMP/a repo/test"
336 $ touch "$TESTTMP/a repo/test"
335 $ hg -R 'a repo' commit -A -m "test"
337 $ hg -R 'a repo' commit -A -m "test"
336 adding test
338 adding test
337 $ hg -R 'a repo' tag tag
339 $ hg -R 'a repo' tag tag
338 $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
340 $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
339 73649e48688a
341 73649e48688a
340
342
341 $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO"
343 $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO"
342 abort: unknown revision 'noNoNO'!
344 abort: unknown revision 'noNoNO'!
343 [255]
345 [255]
344
346
345 Test (non-)escaping of remote paths with spaces when cloning (issue3145):
347 Test (non-)escaping of remote paths with spaces when cloning (issue3145):
346
348
347 $ hg clone --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
349 $ hg clone --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
348 destination directory: a repo
350 destination directory: a repo
349 abort: destination 'a repo' is not empty
351 abort: destination 'a repo' is not empty
350 [255]
352 [255]
351
353
352 Test hg-ssh using a helper script that will restore PYTHONPATH (which might
354 Test hg-ssh using a helper script that will restore PYTHONPATH (which might
353 have been cleared by a hg.exe wrapper) and invoke hg-ssh with the right
355 have been cleared by a hg.exe wrapper) and invoke hg-ssh with the right
354 parameters:
356 parameters:
355
357
356 $ cat > ssh.sh << EOF
358 $ cat > ssh.sh << EOF
357 > userhost="\$1"
359 > userhost="\$1"
358 > SSH_ORIGINAL_COMMAND="\$2"
360 > SSH_ORIGINAL_COMMAND="\$2"
359 > export SSH_ORIGINAL_COMMAND
361 > export SSH_ORIGINAL_COMMAND
360 > PYTHONPATH="$PYTHONPATH"
362 > PYTHONPATH="$PYTHONPATH"
361 > export PYTHONPATH
363 > export PYTHONPATH
362 > python "$TESTDIR/../contrib/hg-ssh" "$TESTTMP/a repo"
364 > python "$TESTDIR/../contrib/hg-ssh" "$TESTTMP/a repo"
363 > EOF
365 > EOF
364
366
365 $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a repo"
367 $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a repo"
366 73649e48688a
368 73649e48688a
367
369
368 $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a'repo"
370 $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a'repo"
369 remote: Illegal repository "$TESTTMP/a'repo" (glob)
371 remote: Illegal repository "$TESTTMP/a'repo" (glob)
370 abort: no suitable response from remote hg!
372 abort: no suitable response from remote hg!
371 [255]
373 [255]
372
374
373 $ hg id --ssh "sh ssh.sh" --remotecmd hacking "ssh://user@dummy/a'repo"
375 $ hg id --ssh "sh ssh.sh" --remotecmd hacking "ssh://user@dummy/a'repo"
374 remote: Illegal command "hacking -R 'a'\''repo' serve --stdio"
376 remote: Illegal command "hacking -R 'a'\''repo' serve --stdio"
375 abort: no suitable response from remote hg!
377 abort: no suitable response from remote hg!
376 [255]
378 [255]
377
379
378 $ SSH_ORIGINAL_COMMAND="'hg' -R 'a'repo' serve --stdio" python "$TESTDIR/../contrib/hg-ssh"
380 $ SSH_ORIGINAL_COMMAND="'hg' -R 'a'repo' serve --stdio" python "$TESTDIR/../contrib/hg-ssh"
379 Illegal command "'hg' -R 'a'repo' serve --stdio": No closing quotation
381 Illegal command "'hg' -R 'a'repo' serve --stdio": No closing quotation
380 [255]
382 [255]
381
383
382 Test hg-ssh in read-only mode:
384 Test hg-ssh in read-only mode:
383
385
384 $ cat > ssh.sh << EOF
386 $ cat > ssh.sh << EOF
385 > userhost="\$1"
387 > userhost="\$1"
386 > SSH_ORIGINAL_COMMAND="\$2"
388 > SSH_ORIGINAL_COMMAND="\$2"
387 > export SSH_ORIGINAL_COMMAND
389 > export SSH_ORIGINAL_COMMAND
388 > PYTHONPATH="$PYTHONPATH"
390 > PYTHONPATH="$PYTHONPATH"
389 > export PYTHONPATH
391 > export PYTHONPATH
390 > python "$TESTDIR/../contrib/hg-ssh" --read-only "$TESTTMP/remote"
392 > python "$TESTDIR/../contrib/hg-ssh" --read-only "$TESTTMP/remote"
391 > EOF
393 > EOF
392
394
393 $ hg clone --ssh "sh ssh.sh" "ssh://user@dummy/$TESTTMP/remote" read-only-local
395 $ hg clone --ssh "sh ssh.sh" "ssh://user@dummy/$TESTTMP/remote" read-only-local
394 requesting all changes
396 requesting all changes
395 adding changesets
397 adding changesets
396 adding manifests
398 adding manifests
397 adding file changes
399 adding file changes
398 added 6 changesets with 5 changes to 4 files (+1 heads)
400 added 6 changesets with 5 changes to 4 files (+1 heads)
399 updating to branch default
401 updating to branch default
400 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
402 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
401
403
402 $ cd read-only-local
404 $ cd read-only-local
403 $ echo "baz" > bar
405 $ echo "baz" > bar
404 $ hg ci -A -m "unpushable commit" bar
406 $ hg ci -A -m "unpushable commit" bar
405 $ hg push --ssh "sh ../ssh.sh"
407 $ hg push --ssh "sh ../ssh.sh"
406 pushing to ssh://user@dummy/*/remote (glob)
408 pushing to ssh://user@dummy/*/remote (glob)
407 searching for changes
409 searching for changes
408 remote: Permission denied
410 remote: Permission denied
409 remote: abort: pretxnopen.hg-ssh hook failed
411 remote: abort: pretxnopen.hg-ssh hook failed
410 remote: Permission denied
412 remote: Permission denied
411 remote: pushkey-abort: prepushkey.hg-ssh hook failed
413 remote: pushkey-abort: prepushkey.hg-ssh hook failed
412 updating 6c0482d977a3 to public failed!
414 updating 6c0482d977a3 to public failed!
413 [1]
415 [1]
414
416
415 $ cd ..
417 $ cd ..
416
418
417 stderr from remote commands should be printed before stdout from local code (issue4336)
419 stderr from remote commands should be printed before stdout from local code (issue4336)
418
420
419 $ hg clone remote stderr-ordering
421 $ hg clone remote stderr-ordering
420 updating to branch default
422 updating to branch default
421 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
423 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
422 $ cd stderr-ordering
424 $ cd stderr-ordering
423 $ cat >> localwrite.py << EOF
425 $ cat >> localwrite.py << EOF
424 > from mercurial import exchange, extensions
426 > from mercurial import exchange, extensions
425 >
427 >
426 > def wrappedpush(orig, repo, *args, **kwargs):
428 > def wrappedpush(orig, repo, *args, **kwargs):
427 > res = orig(repo, *args, **kwargs)
429 > res = orig(repo, *args, **kwargs)
428 > repo.ui.write('local stdout\n')
430 > repo.ui.write('local stdout\n')
429 > return res
431 > return res
430 >
432 >
431 > def extsetup(ui):
433 > def extsetup(ui):
432 > extensions.wrapfunction(exchange, 'push', wrappedpush)
434 > extensions.wrapfunction(exchange, 'push', wrappedpush)
433 > EOF
435 > EOF
434
436
435 $ cat >> .hg/hgrc << EOF
437 $ cat >> .hg/hgrc << EOF
436 > [paths]
438 > [paths]
437 > default-push = ssh://user@dummy/remote
439 > default-push = ssh://user@dummy/remote
438 > [ui]
440 > [ui]
439 > ssh = python "$TESTDIR/dummyssh"
441 > ssh = python "$TESTDIR/dummyssh"
440 > [extensions]
442 > [extensions]
441 > localwrite = localwrite.py
443 > localwrite = localwrite.py
442 > EOF
444 > EOF
443
445
444 $ echo localwrite > foo
446 $ echo localwrite > foo
445 $ hg commit -m 'testing localwrite'
447 $ hg commit -m 'testing localwrite'
446 $ hg push
448 $ hg push
447 pushing to ssh://user@dummy/remote
449 pushing to ssh://user@dummy/remote
448 searching for changes
450 searching for changes
449 remote: adding changesets
451 remote: adding changesets
450 remote: adding manifests
452 remote: adding manifests
451 remote: adding file changes
453 remote: adding file changes
452 remote: added 1 changesets with 1 changes to 1 files
454 remote: added 1 changesets with 1 changes to 1 files
453 remote: KABOOM
455 remote: KABOOM
454 local stdout
456 local stdout
455
457
456 debug output
458 debug output
457
459
458 $ hg pull --debug ssh://user@dummy/remote
460 $ hg pull --debug ssh://user@dummy/remote
459 pulling from ssh://user@dummy/remote
461 pulling from ssh://user@dummy/remote
460 running python ".*/dummyssh" user@dummy ('|")hg -R remote serve --stdio('|") (re)
462 running python ".*/dummyssh" user@dummy ('|")hg -R remote serve --stdio('|") (re)
461 sending hello command
463 sending hello command
462 sending between command
464 sending between command
463 remote: 345
465 remote: 371
464 remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
466 remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
465 remote: 1
467 remote: 1
466 preparing listkeys for "bookmarks"
468 preparing listkeys for "bookmarks"
467 sending listkeys command
469 sending listkeys command
468 received listkey for "bookmarks": 45 bytes
470 received listkey for "bookmarks": 45 bytes
469 query 1; heads
471 query 1; heads
470 sending batch command
472 sending batch command
471 searching for changes
473 searching for changes
472 all remote heads known locally
474 all remote heads known locally
473 no changes found
475 no changes found
474 preparing listkeys for "phases"
476 preparing listkeys for "phases"
475 sending listkeys command
477 sending listkeys command
476 received listkey for "phases": 15 bytes
478 received listkey for "phases": 15 bytes
477 checking for updated bookmarks
479 checking for updated bookmarks
478
480
479 $ cd ..
481 $ cd ..
480
482
481 $ cat dummylog
483 $ cat dummylog
482 Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
484 Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
483 Got arguments 1:user@dummy 2:hg -R /$TESTTMP/nonexistent serve --stdio
485 Got arguments 1:user@dummy 2:hg -R /$TESTTMP/nonexistent serve --stdio
484 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
486 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
485 Got arguments 1:user@dummy 2:hg -R local-stream serve --stdio
487 Got arguments 1:user@dummy 2:hg -R local-stream serve --stdio
486 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
488 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
487 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
489 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
488 Got arguments 1:user@dummy 2:hg -R doesnotexist serve --stdio
490 Got arguments 1:user@dummy 2:hg -R doesnotexist serve --stdio
489 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
491 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
490 Got arguments 1:user@dummy 2:hg -R local serve --stdio
492 Got arguments 1:user@dummy 2:hg -R local serve --stdio
491 Got arguments 1:user@dummy 2:hg -R $TESTTMP/local serve --stdio
493 Got arguments 1:user@dummy 2:hg -R $TESTTMP/local serve --stdio
492 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
494 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
493 changegroup-in-remote hook: HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
495 changegroup-in-remote hook: HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
494 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
496 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
495 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
497 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
496 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
498 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
497 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
499 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
498 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
500 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
499 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
501 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
500 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
502 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
501 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
503 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
502 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
504 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
503 changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
505 changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
504 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
506 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
505 Got arguments 1:user@dummy 2:hg init 'a repo'
507 Got arguments 1:user@dummy 2:hg init 'a repo'
506 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
508 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
507 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
509 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
508 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
510 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
509 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
511 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
510 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
512 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
511 changegroup-in-remote hook: HG_NODE=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
513 changegroup-in-remote hook: HG_NODE=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
512 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
514 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
513
515
514 remote hook failure is attributed to remote
516 remote hook failure is attributed to remote
515
517
516 $ cat > $TESTTMP/failhook << EOF
518 $ cat > $TESTTMP/failhook << EOF
517 > def hook(ui, repo, **kwargs):
519 > def hook(ui, repo, **kwargs):
518 > ui.write('hook failure!\n')
520 > ui.write('hook failure!\n')
519 > ui.flush()
521 > ui.flush()
520 > return 1
522 > return 1
521 > EOF
523 > EOF
522
524
523 $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc
525 $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc
524
526
525 $ hg -q --config ui.ssh="python '$TESTDIR/dummyssh'" clone ssh://user@dummy/remote hookout
527 $ hg -q --config ui.ssh="python '$TESTDIR/dummyssh'" clone ssh://user@dummy/remote hookout
526 $ cd hookout
528 $ cd hookout
527 $ touch hookfailure
529 $ touch hookfailure
528 $ hg -q commit -A -m 'remote hook failure'
530 $ hg -q commit -A -m 'remote hook failure'
529 $ hg --config ui.ssh="python '$TESTDIR/dummyssh'" push
531 $ hg --config ui.ssh="python '$TESTDIR/dummyssh'" push
530 pushing to ssh://user@dummy/remote
532 pushing to ssh://user@dummy/remote
531 searching for changes
533 searching for changes
532 remote: adding changesets
534 remote: adding changesets
533 remote: adding manifests
535 remote: adding manifests
534 remote: adding file changes
536 remote: adding file changes
535 remote: added 1 changesets with 1 changes to 1 files
537 remote: added 1 changesets with 1 changes to 1 files
536 remote: hook failure!
538 remote: hook failure!
537 remote: transaction abort!
539 remote: transaction abort!
538 remote: rollback completed
540 remote: rollback completed
539 remote: abort: pretxnchangegroup.fail hook failed
541 remote: abort: pretxnchangegroup.fail hook failed
540 [1]
542 [1]
541
543
General Comments 0
You need to be logged in to leave comments. Login now