36 > EOF |
36 > EOF |
37 $ cd .. |
37 $ cd .. |
38 |
38 |
39 repo not found error |
39 repo not found error |
40 |
40 |
41 $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local |
41 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local |
42 remote: abort: repository nonexistent not found! |
42 remote: abort: repository nonexistent not found! |
43 abort: no suitable response from remote hg! |
43 abort: no suitable response from remote hg! |
44 [255] |
44 [255] |
45 |
45 |
46 non-existent absolute path |
46 non-existent absolute path |
47 |
47 |
48 $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/`pwd`/nonexistent local |
48 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/`pwd`/nonexistent local |
49 remote: abort: repository $TESTTMP/nonexistent not found! |
49 remote: abort: repository $TESTTMP/nonexistent not found! |
50 abort: no suitable response from remote hg! |
50 abort: no suitable response from remote hg! |
51 [255] |
51 [255] |
52 |
52 |
53 clone remote via stream |
53 clone remote via stream |
54 |
54 |
55 $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream |
55 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream |
56 streaming all changes |
56 streaming all changes |
57 4 files to transfer, 602 bytes of data |
57 4 files to transfer, 602 bytes of data |
58 transferred 602 bytes in * seconds (*) (glob) |
58 transferred 602 bytes in * seconds (*) (glob) |
59 searching for changes |
59 searching for changes |
60 no changes found |
60 no changes found |
72 $ cd .. |
72 $ cd .. |
73 |
73 |
74 clone bookmarks via stream |
74 clone bookmarks via stream |
75 |
75 |
76 $ hg -R local-stream book mybook |
76 $ hg -R local-stream book mybook |
77 $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2 |
77 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2 |
78 streaming all changes |
78 streaming all changes |
79 4 files to transfer, 602 bytes of data |
79 4 files to transfer, 602 bytes of data |
80 transferred 602 bytes in * seconds (*) (glob) |
80 transferred 602 bytes in * seconds (*) (glob) |
81 searching for changes |
81 searching for changes |
82 no changes found |
82 no changes found |
115 |
115 |
116 empty default pull |
116 empty default pull |
117 |
117 |
118 $ hg paths |
118 $ hg paths |
119 default = ssh://user@dummy/remote |
119 default = ssh://user@dummy/remote |
120 $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" |
120 $ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" |
121 pulling from ssh://user@dummy/remote |
121 pulling from ssh://user@dummy/remote |
122 searching for changes |
122 searching for changes |
123 no changes found |
123 no changes found |
124 |
124 |
125 pull from wrong ssh URL |
125 pull from wrong ssh URL |
126 |
126 |
127 $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist |
127 $ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist |
128 pulling from ssh://user@dummy/doesnotexist |
128 pulling from ssh://user@dummy/doesnotexist |
129 remote: abort: repository doesnotexist not found! |
129 remote: abort: repository doesnotexist not found! |
130 abort: no suitable response from remote hg! |
130 abort: no suitable response from remote hg! |
131 [255] |
131 [255] |
132 |
132 |
137 |
137 |
138 updating rc |
138 updating rc |
139 |
139 |
140 $ echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc |
140 $ echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc |
141 $ echo "[ui]" >> .hg/hgrc |
141 $ echo "[ui]" >> .hg/hgrc |
142 $ echo "ssh = $PYTHON \"$TESTDIR/dummyssh\"" >> .hg/hgrc |
142 $ echo "ssh = \"$PYTHON\" \"$TESTDIR/dummyssh\"" >> .hg/hgrc |
143 |
143 |
144 find outgoing |
144 find outgoing |
145 |
145 |
146 $ hg out ssh://user@dummy/remote |
146 $ hg out ssh://user@dummy/remote |
147 comparing with ssh://user@dummy/remote |
147 comparing with ssh://user@dummy/remote |
154 summary: add |
154 summary: add |
155 |
155 |
156 |
156 |
157 find incoming on the remote side |
157 find incoming on the remote side |
158 |
158 |
159 $ hg incoming -R ../remote -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/local |
159 $ hg incoming -R ../remote -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/local |
160 comparing with ssh://user@dummy/local |
160 comparing with ssh://user@dummy/local |
161 searching for changes |
161 searching for changes |
162 changeset: 3:a28a9d1a809c |
162 changeset: 3:a28a9d1a809c |
163 tag: tip |
163 tag: tip |
164 parent: 0:1160648e36ce |
164 parent: 0:1160648e36ce |
167 summary: add |
167 summary: add |
168 |
168 |
169 |
169 |
170 find incoming on the remote side (using absolute path) |
170 find incoming on the remote side (using absolute path) |
171 |
171 |
172 $ hg incoming -R ../remote -e "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`" |
172 $ hg incoming -R ../remote -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`" |
173 comparing with ssh://user@dummy/$TESTTMP/local |
173 comparing with ssh://user@dummy/$TESTTMP/local |
174 searching for changes |
174 searching for changes |
175 changeset: 3:a28a9d1a809c |
175 changeset: 3:a28a9d1a809c |
176 tag: tip |
176 tag: tip |
177 parent: 0:1160648e36ce |
177 parent: 0:1160648e36ce |
229 pushing to ssh://user@dummy/remote |
229 pushing to ssh://user@dummy/remote |
230 searching for changes |
230 searching for changes |
231 no changes found |
231 no changes found |
232 exporting bookmark foo |
232 exporting bookmark foo |
233 [1] |
233 [1] |
234 $ hg debugpushkey --config ui.ssh="$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks |
234 $ hg debugpushkey --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks |
235 foo 1160648e36cec0054048a7edc4110c6f84fde594 |
235 foo 1160648e36cec0054048a7edc4110c6f84fde594 |
236 $ hg book -f foo |
236 $ hg book -f foo |
237 $ hg push --traceback |
237 $ hg push --traceback |
238 pushing to ssh://user@dummy/remote |
238 pushing to ssh://user@dummy/remote |
239 searching for changes |
239 searching for changes |
309 clone bookmarks |
309 clone bookmarks |
310 |
310 |
311 $ hg -R ../remote bookmark test |
311 $ hg -R ../remote bookmark test |
312 $ hg -R ../remote bookmarks |
312 $ hg -R ../remote bookmarks |
313 * test 4:6c0482d977a3 |
313 * test 4:6c0482d977a3 |
314 $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks |
314 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks |
315 requesting all changes |
315 requesting all changes |
316 adding changesets |
316 adding changesets |
317 adding manifests |
317 adding manifests |
318 adding file changes |
318 adding file changes |
319 added 6 changesets with 5 changes to 4 files (+1 heads) |
319 added 6 changesets with 5 changes to 4 files (+1 heads) |
336 hide outer repo |
336 hide outer repo |
337 $ hg init |
337 $ hg init |
338 |
338 |
339 Test remote paths with spaces (issue2983): |
339 Test remote paths with spaces (issue2983): |
340 |
340 |
341 $ hg init --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" |
341 $ hg init --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" |
342 $ touch "$TESTTMP/a repo/test" |
342 $ touch "$TESTTMP/a repo/test" |
343 $ hg -R 'a repo' commit -A -m "test" |
343 $ hg -R 'a repo' commit -A -m "test" |
344 adding test |
344 adding test |
345 $ hg -R 'a repo' tag tag |
345 $ hg -R 'a repo' tag tag |
346 $ hg id --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" |
346 $ hg id --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" |
347 73649e48688a |
347 73649e48688a |
348 |
348 |
349 $ hg id --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO" |
349 $ hg id --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO" |
350 abort: unknown revision 'noNoNO'! |
350 abort: unknown revision 'noNoNO'! |
351 [255] |
351 [255] |
352 |
352 |
353 Test (non-)escaping of remote paths with spaces when cloning (issue3145): |
353 Test (non-)escaping of remote paths with spaces when cloning (issue3145): |
354 |
354 |
355 $ hg clone --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" |
355 $ hg clone --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" |
356 destination directory: a repo |
356 destination directory: a repo |
357 abort: destination 'a repo' is not empty |
357 abort: destination 'a repo' is not empty |
358 [255] |
358 [255] |
359 |
359 |
360 Make sure hg is really paranoid in serve --stdio mode. It used to be |
360 Make sure hg is really paranoid in serve --stdio mode. It used to be |
378 > userhost="\$1" |
378 > userhost="\$1" |
379 > SSH_ORIGINAL_COMMAND="\$2" |
379 > SSH_ORIGINAL_COMMAND="\$2" |
380 > export SSH_ORIGINAL_COMMAND |
380 > export SSH_ORIGINAL_COMMAND |
381 > PYTHONPATH="$PYTHONPATH" |
381 > PYTHONPATH="$PYTHONPATH" |
382 > export PYTHONPATH |
382 > export PYTHONPATH |
383 > $PYTHON "$TESTDIR/../contrib/hg-ssh" "$TESTTMP/a repo" |
383 > "$PYTHON" "$TESTDIR/../contrib/hg-ssh" "$TESTTMP/a repo" |
384 > EOF |
384 > EOF |
385 |
385 |
386 $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a repo" |
386 $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a repo" |
387 73649e48688a |
387 73649e48688a |
388 |
388 |
406 > userhost="\$1" |
406 > userhost="\$1" |
407 > SSH_ORIGINAL_COMMAND="\$2" |
407 > SSH_ORIGINAL_COMMAND="\$2" |
408 > export SSH_ORIGINAL_COMMAND |
408 > export SSH_ORIGINAL_COMMAND |
409 > PYTHONPATH="$PYTHONPATH" |
409 > PYTHONPATH="$PYTHONPATH" |
410 > export PYTHONPATH |
410 > export PYTHONPATH |
411 > $PYTHON "$TESTDIR/../contrib/hg-ssh" --read-only "$TESTTMP/remote" |
411 > "$PYTHON" "$TESTDIR/../contrib/hg-ssh" --read-only "$TESTTMP/remote" |
412 > EOF |
412 > EOF |
413 |
413 |
414 $ hg clone --ssh "sh ssh.sh" "ssh://user@dummy/$TESTTMP/remote" read-only-local |
414 $ hg clone --ssh "sh ssh.sh" "ssh://user@dummy/$TESTTMP/remote" read-only-local |
415 requesting all changes |
415 requesting all changes |
416 adding changesets |
416 adding changesets |
453 |
453 |
454 $ cat >> .hg/hgrc << EOF |
454 $ cat >> .hg/hgrc << EOF |
455 > [paths] |
455 > [paths] |
456 > default-push = ssh://user@dummy/remote |
456 > default-push = ssh://user@dummy/remote |
457 > [ui] |
457 > [ui] |
458 > ssh = $PYTHON "$TESTDIR/dummyssh" |
458 > ssh = "$PYTHON" "$TESTDIR/dummyssh" |
459 > [extensions] |
459 > [extensions] |
460 > localwrite = localwrite.py |
460 > localwrite = localwrite.py |
461 > EOF |
461 > EOF |
462 |
462 |
463 $ echo localwrite > foo |
463 $ echo localwrite > foo |
541 > return 1 |
541 > return 1 |
542 > EOF |
542 > EOF |
543 |
543 |
544 $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc |
544 $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc |
545 |
545 |
546 $ hg -q --config ui.ssh="$PYTHON $TESTDIR/dummyssh" clone ssh://user@dummy/remote hookout |
546 $ hg -q --config ui.ssh="\"$PYTHON\" $TESTDIR/dummyssh" clone ssh://user@dummy/remote hookout |
547 $ cd hookout |
547 $ cd hookout |
548 $ touch hookfailure |
548 $ touch hookfailure |
549 $ hg -q commit -A -m 'remote hook failure' |
549 $ hg -q commit -A -m 'remote hook failure' |
550 $ hg --config ui.ssh="$PYTHON $TESTDIR/dummyssh" push |
550 $ hg --config ui.ssh="\"$PYTHON\" $TESTDIR/dummyssh" push |
551 pushing to ssh://user@dummy/remote |
551 pushing to ssh://user@dummy/remote |
552 searching for changes |
552 searching for changes |
553 remote: adding changesets |
553 remote: adding changesets |
554 remote: adding manifests |
554 remote: adding manifests |
555 remote: adding file changes |
555 remote: adding file changes |
567 $ hg -R ../remote commit --message "more foo to be pulled" |
567 $ hg -R ../remote commit --message "more foo to be pulled" |
568 $ cat >> ../remote/.hg/hgrc << EOF |
568 $ cat >> ../remote/.hg/hgrc << EOF |
569 > [extensions] |
569 > [extensions] |
570 > crash = ${TESTDIR}/crashgetbundler.py |
570 > crash = ${TESTDIR}/crashgetbundler.py |
571 > EOF |
571 > EOF |
572 $ hg --config ui.ssh="$PYTHON $TESTDIR/dummyssh" pull |
572 $ hg --config ui.ssh="\"$PYTHON\" $TESTDIR/dummyssh" pull |
573 pulling from ssh://user@dummy/remote |
573 pulling from ssh://user@dummy/remote |
574 searching for changes |
574 searching for changes |
575 remote: abort: this is an exercise |
575 remote: abort: this is an exercise |
576 abort: pull failed on remote |
576 abort: pull failed on remote |
577 [255] |
577 [255] |