test-ssh.t
699 lines
| 20.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-ssh.t
Matt Mackall
|
r12414 | This test tries to exercise the ssh functionality with a dummy script | ||
Mads Kiilerich
|
r14185 | creating 'remote' repo | ||
Matt Mackall
|
r12414 | |||
$ hg init remote | ||||
$ cd remote | ||||
$ echo this > foo | ||||
$ echo this > fooO | ||||
$ hg ci -A -m "init" foo fooO | ||||
Matt Mackall
|
r23126 | |||
insert a closed branch (issue4428) | ||||
$ hg up null | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ hg branch closed | ||||
marked working directory as branch closed | ||||
(branches are permanent and global, did you want a bookmark?) | ||||
$ hg ci -mc0 | ||||
$ hg ci --close-branch -mc1 | ||||
$ hg up -q default | ||||
configure for serving | ||||
Mads Kiilerich
|
r14185 | $ cat <<EOF > .hg/hgrc | ||
Matt Mackall
|
r12969 | > [server] | ||
> uncompressed = True | ||||
> | ||||
> [hooks] | ||||
Boris Feld
|
r41793 | > changegroup = sh -c "printenv.py --line changegroup-in-remote 0 ../dummylog" | ||
Matt Mackall
|
r12969 | > EOF | ||
Matt Harbison
|
r40305 | $ cd $TESTTMP | ||
Matt Mackall
|
r12414 | |||
repo not found error | ||||
Valentin Gatien-Baron
|
r48732 | $ hg clone ssh://user@dummy/nonexistent local | ||
Martin von Zweigbergk
|
r46518 | remote: abort: repository nonexistent not found | ||
abort: no suitable response from remote hg | ||||
Matt Mackall
|
r12414 | [255] | ||
Valentin Gatien-Baron
|
r48732 | $ hg clone -q ssh://user@dummy/nonexistent local | ||
Martin von Zweigbergk
|
r46518 | remote: abort: repository nonexistent not found | ||
abort: no suitable response from remote hg | ||||
Valentin Gatien-Baron
|
r45386 | [255] | ||
Matt Mackall
|
r12414 | |||
non-existent absolute path | ||||
Valentin Gatien-Baron
|
r48732 | $ hg clone ssh://user@dummy/`pwd`/nonexistent local | ||
Martin von Zweigbergk
|
r46518 | remote: abort: repository $TESTTMP/nonexistent not found | ||
abort: no suitable response from remote hg | ||||
Matt Mackall
|
r12414 | [255] | ||
clone remote via stream | ||||
Gregory Szorc
|
r37367 | #if no-reposimplestore | ||
Valentin Gatien-Baron
|
r48732 | $ hg clone --stream ssh://user@dummy/remote local-stream | ||
Matt Mackall
|
r12414 | streaming all changes | ||
r47636 | 8 files to transfer, 827 bytes of data (no-zstd !) | |||
transferred 827 bytes in * seconds (*) (glob) (no-zstd !) | ||||
8 files to transfer, 846 bytes of data (zstd !) | ||||
transferred * bytes in * seconds (* */sec) (glob) (zstd !) | ||||
Matt Mackall
|
r12414 | updating to branch default | ||
Matt Mackall
|
r12489 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Matt Mackall
|
r12414 | $ cd local-stream | ||
Raphaël Gomès
|
r50720 | $ hg verify -q | ||
Matt Mackall
|
r23126 | $ hg branches | ||
default 0:1160648e36ce | ||||
Matt Harbison
|
r40305 | $ cd $TESTTMP | ||
Matt Mackall
|
r12414 | |||
Durham Goode
|
r23116 | clone bookmarks via stream | ||
$ hg -R local-stream book mybook | ||||
Valentin Gatien-Baron
|
r48732 | $ hg clone --stream ssh://user@dummy/local-stream stream2 | ||
Durham Goode
|
r23116 | streaming all changes | ||
r47985 | 15 files to transfer, * of data (glob) | |||
r47032 | transferred * in * seconds (*) (glob) | |||
Durham Goode
|
r23116 | updating to branch default | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd stream2 | ||||
$ hg book | ||||
mybook 0:1160648e36ce | ||||
Matt Harbison
|
r40305 | $ cd $TESTTMP | ||
Durham Goode
|
r23116 | $ rm -rf local-stream stream2 | ||
Gregory Szorc
|
r37367 | #endif | ||
Matt Mackall
|
r12414 | clone remote via pull | ||
Valentin Gatien-Baron
|
r48732 | $ hg clone ssh://user@dummy/remote local | ||
Matt Mackall
|
r12414 | requesting all changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
Matt Mackall
|
r23126 | added 3 changesets with 2 changes to 2 files | ||
Denis Laxalde
|
r34662 | new changesets 1160648e36ce:ad076bfb429d | ||
Matt Mackall
|
r12414 | updating to branch default | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
verify | ||||
$ cd local | ||||
Raphaël Gomès
|
r50720 | $ hg verify -q | ||
FUJIWARA Katsunori
|
r30234 | $ cat >> .hg/hgrc <<EOF | ||
> [hooks] | ||||
> changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | ||||
> EOF | ||||
Matt Mackall
|
r12414 | |||
empty default pull | ||||
$ hg paths | ||||
default = ssh://user@dummy/remote | ||||
Valentin Gatien-Baron
|
r48732 | $ hg pull | ||
Matt Mackall
|
r12414 | pulling from ssh://user@dummy/remote | ||
searching for changes | ||||
no changes found | ||||
Thomas Arendsen Hein
|
r24138 | pull from wrong ssh URL | ||
Valentin Gatien-Baron
|
r48732 | $ hg pull ssh://user@dummy/doesnotexist | ||
Thomas Arendsen Hein
|
r24138 | pulling from ssh://user@dummy/doesnotexist | ||
Martin von Zweigbergk
|
r46518 | remote: abort: repository doesnotexist not found | ||
abort: no suitable response from remote hg | ||||
Thomas Arendsen Hein
|
r24138 | [255] | ||
Matt Mackall
|
r12414 | local change | ||
$ echo bleah > foo | ||||
$ hg ci -m "add" | ||||
updating rc | ||||
$ echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc | ||||
find outgoing | ||||
$ hg out ssh://user@dummy/remote | ||||
comparing with ssh://user@dummy/remote | ||||
searching for changes | ||||
Matt Mackall
|
r23126 | changeset: 3:a28a9d1a809c | ||
Matt Mackall
|
r12414 | tag: tip | ||
Matt Mackall
|
r23126 | parent: 0:1160648e36ce | ||
Matt Mackall
|
r12414 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add | ||||
find incoming on the remote side | ||||
Valentin Gatien-Baron
|
r48732 | $ hg incoming -R ../remote ssh://user@dummy/local | ||
Matt Mackall
|
r12414 | comparing with ssh://user@dummy/local | ||
searching for changes | ||||
Matt Mackall
|
r23126 | changeset: 3:a28a9d1a809c | ||
Matt Mackall
|
r12414 | tag: tip | ||
Matt Mackall
|
r23126 | parent: 0:1160648e36ce | ||
Matt Mackall
|
r12414 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add | ||||
Brodie Rao
|
r12504 | find incoming on the remote side (using absolute path) | ||
Valentin Gatien-Baron
|
r48732 | $ hg incoming -R ../remote "ssh://user@dummy/`pwd`" | ||
Mads Kiilerich
|
r12640 | comparing with ssh://user@dummy/$TESTTMP/local | ||
Brodie Rao
|
r12504 | searching for changes | ||
Matt Mackall
|
r23126 | changeset: 3:a28a9d1a809c | ||
Brodie Rao
|
r12504 | tag: tip | ||
Matt Mackall
|
r23126 | parent: 0:1160648e36ce | ||
Brodie Rao
|
r12504 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add | ||||
Matt Mackall
|
r12414 | push | ||
$ hg push | ||||
pushing to ssh://user@dummy/remote | ||||
searching for changes | ||||
remote: adding changesets | ||||
remote: adding manifests | ||||
remote: adding file changes | ||||
remote: added 1 changesets with 1 changes to 1 files | ||||
Matt Harbison
|
r40305 | $ cd $TESTTMP/remote | ||
Matt Mackall
|
r12414 | |||
check remote tip | ||||
$ hg tip | ||||
Matt Mackall
|
r23126 | changeset: 3:a28a9d1a809c | ||
Matt Mackall
|
r12414 | tag: tip | ||
Matt Mackall
|
r23126 | parent: 0:1160648e36ce | ||
Matt Mackall
|
r12414 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add | ||||
Raphaël Gomès
|
r50720 | $ hg verify -q | ||
Matt Mackall
|
r12414 | $ hg cat -r tip foo | ||
bleah | ||||
$ echo z > z | ||||
$ hg ci -A -m z z | ||||
created new head | ||||
Matt Mackall
|
r12969 | test pushkeys and bookmarks | ||
Matt Harbison
|
r40305 | $ cd $TESTTMP/local | ||
Valentin Gatien-Baron
|
r48732 | $ hg debugpushkey ssh://user@dummy/remote namespaces | ||
Matt Mackall
|
r12969 | bookmarks | ||
Mads Kiilerich <mads at kiilerich.com>
|
r18255 | namespaces | ||
Pierre-Yves David
|
r15648 | phases | ||
Matt Mackall
|
r12969 | $ hg book foo -r 0 | ||
Matt Harbison
|
r38188 | $ hg out -B --config paths.default=bogus://invalid --config paths.default:pushurl=`hg paths default` | ||
Matt Mackall
|
r12969 | comparing with ssh://user@dummy/remote | ||
searching for changed bookmarks | ||||
foo 1160648e36ce | ||||
$ hg push -B foo | ||||
pushing to ssh://user@dummy/remote | ||||
searching for changes | ||||
no changes found | ||||
exporting bookmark foo | ||||
Matt Mackall
|
r16038 | [1] | ||
Valentin Gatien-Baron
|
r48732 | $ hg debugpushkey ssh://user@dummy/remote bookmarks | ||
Matt Mackall
|
r12969 | foo 1160648e36cec0054048a7edc4110c6f84fde594 | ||
$ hg book -f foo | ||||
Matt Mackall
|
r13050 | $ hg push --traceback | ||
Matt Mackall
|
r12969 | pushing to ssh://user@dummy/remote | ||
searching for changes | ||||
no changes found | ||||
updating bookmark foo | ||||
Matt Mackall
|
r16023 | [1] | ||
Matt Mackall
|
r12969 | $ hg book -d foo | ||
$ hg in -B | ||||
comparing with ssh://user@dummy/remote | ||||
searching for changed bookmarks | ||||
foo a28a9d1a809c | ||||
$ hg book -f -r 0 foo | ||||
$ hg pull -B foo | ||||
pulling from ssh://user@dummy/remote | ||||
no changes found | ||||
updating bookmark foo | ||||
$ hg book -d foo | ||||
$ hg push -B foo | ||||
Matt Mackall
|
r13368 | pushing to ssh://user@dummy/remote | ||
searching for changes | ||||
no changes found | ||||
Matt Mackall
|
r12969 | deleting remote bookmark foo | ||
Matt Mackall
|
r16038 | [1] | ||
Matt Mackall
|
r12969 | |||
Matt Mackall
|
r12414 | a bad, evil hook that prints to stdout | ||
Mads Kiilerich
|
r14186 | $ cat <<EOF > $TESTTMP/badhook | ||
> import sys | ||||
> sys.stdout.write("KABOOM\n") | ||||
Yuya Nishihara
|
r37962 | > sys.stdout.flush() | ||
Mads Kiilerich
|
r14186 | > EOF | ||
Yuya Nishihara
|
r30364 | $ cat <<EOF > $TESTTMP/badpyhook.py | ||
> import sys | ||||
> def hook(ui, repo, hooktype, **kwargs): | ||||
> sys.stdout.write("KABOOM IN PROCESS\n") | ||||
Yuya Nishihara
|
r37962 | > sys.stdout.flush() | ||
Yuya Nishihara
|
r30364 | > EOF | ||
$ cat <<EOF >> ../remote/.hg/hgrc | ||||
> [hooks] | ||||
Matt Harbison
|
r39743 | > changegroup.stdout = "$PYTHON" $TESTTMP/badhook | ||
Yuya Nishihara
|
r30364 | > changegroup.pystdout = python:$TESTTMP/badpyhook.py:hook | ||
> EOF | ||||
Matt Mackall
|
r12414 | $ echo r > r | ||
$ hg ci -A -m z r | ||||
push should succeed even though it has an unexpected response | ||||
$ hg push | ||||
pushing to ssh://user@dummy/remote | ||||
searching for changes | ||||
Mads Kiilerich
|
r20501 | remote has heads on branch 'default' that are not known locally: 6c0482d977a3 | ||
Matt Mackall
|
r12414 | remote: adding changesets | ||
remote: adding manifests | ||||
remote: adding file changes | ||||
Matt Harbison
|
r50772 | remote: added 1 changesets with 1 changes to 1 files | ||
Matt Mackall
|
r12414 | remote: KABOOM | ||
Yuya Nishihara
|
r30364 | remote: KABOOM IN PROCESS | ||
Matt Mackall
|
r12414 | $ hg -R ../remote heads | ||
Matt Mackall
|
r23126 | changeset: 5:1383141674ec | ||
Matt Mackall
|
r12414 | tag: tip | ||
Matt Mackall
|
r23126 | parent: 3:a28a9d1a809c | ||
Matt Mackall
|
r12414 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: z | ||||
Matt Mackall
|
r23126 | changeset: 4:6c0482d977a3 | ||
Matt Mackall
|
r12414 | parent: 0:1160648e36ce | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: z | ||||
Adrian Buehlmann
|
r13464 | |||
Yuya Nishihara
|
r39872 | #if chg | ||
try again with remote chg, which should succeed as well | ||||
$ hg rollback -R ../remote | ||||
repository tip rolled back to revision 4 (undo serve) | ||||
$ hg push --config ui.remotecmd=chg | ||||
pushing to ssh://user@dummy/remote | ||||
searching for changes | ||||
remote has heads on branch 'default' that are not known locally: 6c0482d977a3 | ||||
Yuya Nishihara
|
r39873 | remote: adding changesets | ||
remote: adding manifests | ||||
remote: adding file changes | ||||
Matt Harbison
|
r50772 | remote: added 1 changesets with 1 changes to 1 files | ||
Yuya Nishihara
|
r39875 | remote: KABOOM | ||
remote: KABOOM IN PROCESS | ||||
Yuya Nishihara
|
r39872 | |||
#endif | ||||
David Soria Parra
|
r13604 | clone bookmarks | ||
$ hg -R ../remote bookmark test | ||||
$ hg -R ../remote bookmarks | ||||
Matt Mackall
|
r23126 | * test 4:6c0482d977a3 | ||
Valentin Gatien-Baron
|
r48732 | $ hg clone ssh://user@dummy/remote local-bookmarks | ||
David Soria Parra
|
r13604 | requesting all changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
Matt Mackall
|
r23126 | added 6 changesets with 5 changes to 4 files (+1 heads) | ||
Denis Laxalde
|
r34662 | new changesets 1160648e36ce:1383141674ec | ||
David Soria Parra
|
r13604 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R local-bookmarks bookmarks | ||||
Matt Mackall
|
r23126 | test 4:6c0482d977a3 | ||
David Soria Parra
|
r13604 | |||
Adrian Buehlmann
|
r13464 | passwords in ssh urls are not supported | ||
Matt Mackall
|
r13755 | (we use a glob here because different Python versions give different | ||
results here) | ||||
Adrian Buehlmann
|
r13464 | |||
$ hg push ssh://user:erroneouspwd@dummy/remote | ||||
Matt Mackall
|
r13755 | pushing to ssh://user:*@dummy/remote (glob) | ||
Martin von Zweigbergk
|
r46518 | abort: password in URL not supported | ||
Adrian Buehlmann
|
r13464 | [255] | ||
Matt Harbison
|
r40305 | $ cd $TESTTMP | ||
Mads Kiilerich
|
r15581 | |||
Mads Kiilerich
|
r17015 | hide outer repo | ||
$ hg init | ||||
Mads Kiilerich
|
r15581 | Test remote paths with spaces (issue2983): | ||
Valentin Gatien-Baron
|
r48732 | $ hg init "ssh://user@dummy/a repo" | ||
Brad Hall
|
r17260 | $ touch "$TESTTMP/a repo/test" | ||
$ hg -R 'a repo' commit -A -m "test" | ||||
adding test | ||||
Mads Kiilerich
|
r15581 | $ hg -R 'a repo' tag tag | ||
Valentin Gatien-Baron
|
r48732 | $ hg id "ssh://user@dummy/a repo" | ||
Brad Hall
|
r17260 | 73649e48688a | ||
Mads Kiilerich
|
r15581 | |||
Valentin Gatien-Baron
|
r48732 | $ hg id "ssh://user@dummy/a repo#noNoNO" | ||
Martin von Zweigbergk
|
r46518 | abort: unknown revision 'noNoNO' | ||
Mads Kiilerich
|
r21188 | [255] | ||
Matt Mackall
|
r17844 | Test (non-)escaping of remote paths with spaces when cloning (issue3145): | ||
Valentin Gatien-Baron
|
r48732 | $ hg clone "ssh://user@dummy/a repo" | ||
Matt Mackall
|
r17844 | destination directory: a repo | ||
abort: destination 'a repo' is not empty | ||||
Martin von Zweigbergk
|
r46451 | [10] | ||
Matt Mackall
|
r17844 | |||
Simon Sapin
|
r47471 | #if no-rhg | ||
Augie Fackler
|
r32050 | Make sure hg is really paranoid in serve --stdio mode. It used to be | ||
possible to get a debugger REPL by specifying a repo named --debugger. | ||||
$ hg -R --debugger serve --stdio | ||||
abort: potentially unsafe serve --stdio invocation: ['-R', '--debugger', 'serve', '--stdio'] | ||||
[255] | ||||
$ hg -R --config=ui.debugger=yes serve --stdio | ||||
abort: potentially unsafe serve --stdio invocation: ['-R', '--config=ui.debugger=yes', 'serve', '--stdio'] | ||||
[255] | ||||
Abbreviations of 'serve' also don't work, to avoid shenanigans. | ||||
$ hg -R narf serv --stdio | ||||
abort: potentially unsafe serve --stdio invocation: ['-R', 'narf', 'serv', '--stdio'] | ||||
[255] | ||||
Simon Sapin
|
r47471 | #else | ||
rhg aborts early on -R without a repository at that path | ||||
$ hg -R --debugger serve --stdio | ||||
abort: potentially unsafe serve --stdio invocation: ['-R', '--debugger', 'serve', '--stdio'] (missing-correct-output !) | ||||
abort: repository --debugger not found (known-bad-output !) | ||||
[255] | ||||
$ hg -R --config=ui.debugger=yes serve --stdio | ||||
abort: potentially unsafe serve --stdio invocation: ['-R', '--config=ui.debugger=yes', 'serve', '--stdio'] (missing-correct-output !) | ||||
abort: repository --config=ui.debugger=yes not found (known-bad-output !) | ||||
[255] | ||||
$ hg -R narf serv --stdio | ||||
abort: potentially unsafe serve --stdio invocation: ['-R', 'narf', 'serv', '--stdio'] (missing-correct-output !) | ||||
abort: repository narf not found (known-bad-output !) | ||||
[255] | ||||
If the repo does exist, rhg finds an unsupported command and falls back to Python | ||||
which still does the right thing | ||||
$ hg init narf | ||||
$ hg -R narf serv --stdio | ||||
abort: potentially unsafe serve --stdio invocation: ['-R', 'narf', 'serv', '--stdio'] | ||||
[255] | ||||
#endif | ||||
Augie Fackler
|
r32050 | |||
Mads Kiilerich
|
r16608 | Test hg-ssh using a helper script that will restore PYTHONPATH (which might | ||
have been cleared by a hg.exe wrapper) and invoke hg-ssh with the right | ||||
parameters: | ||||
Mads Kiilerich
|
r15897 | |||
Mads Kiilerich
|
r16608 | $ cat > ssh.sh << EOF | ||
> userhost="\$1" | ||||
> SSH_ORIGINAL_COMMAND="\$2" | ||||
> export SSH_ORIGINAL_COMMAND | ||||
> PYTHONPATH="$PYTHONPATH" | ||||
> export PYTHONPATH | ||||
Matt Harbison
|
r33335 | > "$PYTHON" "$TESTDIR/../contrib/hg-ssh" "$TESTTMP/a repo" | ||
Mads Kiilerich
|
r16608 | > EOF | ||
$ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a repo" | ||||
Brad Hall
|
r17260 | 73649e48688a | ||
Mads Kiilerich
|
r16606 | |||
Mads Kiilerich
|
r16608 | $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a'repo" | ||
Matt Harbison
|
r35394 | remote: Illegal repository "$TESTTMP/a'repo" | ||
Martin von Zweigbergk
|
r46518 | abort: no suitable response from remote hg | ||
Mads Kiilerich
|
r15897 | [255] | ||
Mads Kiilerich
|
r16606 | |||
Mads Kiilerich
|
r16608 | $ hg id --ssh "sh ssh.sh" --remotecmd hacking "ssh://user@dummy/a'repo" | ||
remote: Illegal command "hacking -R 'a'\''repo' serve --stdio" | ||||
Martin von Zweigbergk
|
r46518 | abort: no suitable response from remote hg | ||
Mads Kiilerich
|
r15897 | [255] | ||
Matt Harbison
|
r39743 | $ SSH_ORIGINAL_COMMAND="'hg' -R 'a'repo' serve --stdio" "$PYTHON" "$TESTDIR/../contrib/hg-ssh" | ||
Mads Kiilerich
|
r16608 | Illegal command "'hg' -R 'a'repo' serve --stdio": No closing quotation | ||
[255] | ||||
David Schleimer
|
r16836 | Test hg-ssh in read-only mode: | ||
$ cat > ssh.sh << EOF | ||||
> userhost="\$1" | ||||
> SSH_ORIGINAL_COMMAND="\$2" | ||||
> export SSH_ORIGINAL_COMMAND | ||||
> PYTHONPATH="$PYTHONPATH" | ||||
> export PYTHONPATH | ||||
Matt Harbison
|
r33335 | > "$PYTHON" "$TESTDIR/../contrib/hg-ssh" --read-only "$TESTTMP/remote" | ||
David Schleimer
|
r16836 | > EOF | ||
$ hg clone --ssh "sh ssh.sh" "ssh://user@dummy/$TESTTMP/remote" read-only-local | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
Matt Mackall
|
r23126 | added 6 changesets with 5 changes to 4 files (+1 heads) | ||
Denis Laxalde
|
r34662 | new changesets 1160648e36ce:1383141674ec | ||
David Schleimer
|
r16836 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd read-only-local | ||||
$ echo "baz" > bar | ||||
$ hg ci -A -m "unpushable commit" bar | ||||
$ hg push --ssh "sh ../ssh.sh" | ||||
Adrian Buehlmann
|
r16897 | pushing to ssh://user@dummy/*/remote (glob) | ||
David Schleimer
|
r16836 | searching for changes | ||
Arseniy Alekseyev
|
r51215 | remote: $EACCES$ | ||
Gregory Szorc
|
r26829 | remote: pretxnopen.hg-ssh hook failed | ||
abort: push failed on remote | ||||
Martin von Zweigbergk
|
r47739 | [100] | ||
David Schleimer
|
r16836 | |||
Matt Harbison
|
r40305 | $ cd $TESTTMP | ||
David Schleimer
|
r16836 | |||
Gregory Szorc
|
r22247 | stderr from remote commands should be printed before stdout from local code (issue4336) | ||
$ hg clone remote stderr-ordering | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd stderr-ordering | ||||
$ cat >> localwrite.py << EOF | ||||
> from mercurial import exchange, extensions | ||||
> | ||||
> def wrappedpush(orig, repo, *args, **kwargs): | ||||
> res = orig(repo, *args, **kwargs) | ||||
Pulkit Goyal
|
r38120 | > repo.ui.write(b'local stdout\n') | ||
Yuya Nishihara
|
r37962 | > repo.ui.flush() | ||
Gregory Szorc
|
r22247 | > return res | ||
> | ||||
> def extsetup(ui): | ||||
Pulkit Goyal
|
r38120 | > extensions.wrapfunction(exchange, b'push', wrappedpush) | ||
Gregory Szorc
|
r22247 | > EOF | ||
$ cat >> .hg/hgrc << EOF | ||||
> [paths] | ||||
> default-push = ssh://user@dummy/remote | ||||
> [extensions] | ||||
> localwrite = localwrite.py | ||||
> EOF | ||||
$ echo localwrite > foo | ||||
$ hg commit -m 'testing localwrite' | ||||
$ hg push | ||||
pushing to ssh://user@dummy/remote | ||||
searching for changes | ||||
remote: adding changesets | ||||
remote: adding manifests | ||||
remote: adding file changes | ||||
Matt Harbison
|
r50772 | remote: added 1 changesets with 1 changes to 1 files | ||
Gregory Szorc
|
r22247 | remote: KABOOM | ||
Yuya Nishihara
|
r30364 | remote: KABOOM IN PROCESS | ||
Gregory Szorc
|
r22247 | local stdout | ||
Pierre-Yves David
|
r25338 | debug output | ||
Boris Feld
|
r35717 | $ hg pull --debug ssh://user@dummy/remote --config devel.debug.peer-request=yes | ||
Pierre-Yves David
|
r25338 | pulling from ssh://user@dummy/remote | ||
Valentin Gatien-Baron
|
r48731 | running .* ".*[/\\]dummyssh" ['"]user@dummy['"] ['"]hg -R remote serve --stdio['"] (re) | ||
Boris Feld
|
r37831 | devel-peer-request: hello+between | ||
devel-peer-request: pairs: 81 bytes | ||||
Pierre-Yves David
|
r25338 | sending hello command | ||
sending between command | ||||
r49495 | remote: \d+ (re) | |||
remote: capabilities: batch branchmap \$USUAL_BUNDLE2_CAPS\$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=[^ ,]+(,[^ ,]+)* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (re) | ||||
Raphaël Gomès
|
r49357 | remote: 1 | ||
Joerg Sonnenberger
|
r37411 | devel-peer-request: protocaps | ||
devel-peer-request: caps: * bytes (glob) | ||||
sending protocaps command | ||||
Pierre-Yves David
|
r25338 | query 1; heads | ||
Boris Feld
|
r36963 | devel-peer-request: batched-content | ||
devel-peer-request: - heads (0 arguments) | ||||
devel-peer-request: - known (1 arguments) | ||||
Boris Feld
|
r35717 | devel-peer-request: batch | ||
devel-peer-request: cmds: 141 bytes | ||||
Pierre-Yves David
|
r25338 | sending batch command | ||
searching for changes | ||||
all remote heads known locally | ||||
no changes found | ||||
Boris Feld
|
r35717 | devel-peer-request: getbundle | ||
devel-peer-request: bookmarks: 1 bytes | ||||
Joerg Sonnenberger
|
r47378 | devel-peer-request: bundlecaps: 270 bytes | ||
Boris Feld
|
r35717 | devel-peer-request: cg: 1 bytes | ||
devel-peer-request: common: 122 bytes | ||||
devel-peer-request: heads: 122 bytes | ||||
devel-peer-request: listkeys: 9 bytes | ||||
devel-peer-request: phases: 1 bytes | ||||
Pierre-Yves David
|
r25376 | sending getbundle command | ||
bundle2-input-bundle: with-transaction | ||||
Boris Feld
|
r35269 | bundle2-input-part: "bookmarks" supported | ||
bundle2-input-part: total payload size 26 | ||||
Pierre-Yves David
|
r25376 | bundle2-input-part: "listkeys" (params: 1 mandatory) supported | ||
bundle2-input-part: total payload size 45 | ||||
Boris Feld
|
r34323 | bundle2-input-part: "phase-heads" supported | ||
bundle2-input-part: total payload size 72 | ||||
Martin von Zweigbergk
|
r43201 | bundle2-input-bundle: 3 parts total | ||
Pierre-Yves David
|
r25376 | checking for updated bookmarks | ||
Pierre-Yves David
|
r25338 | |||
Matt Harbison
|
r40305 | $ cd $TESTTMP | ||
Gregory Szorc
|
r22247 | |||
Matt Mackall
|
r12414 | $ cat dummylog | ||
Mads Kiilerich
|
r15622 | Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio | ||
Valentin Gatien-Baron
|
r45386 | Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio | ||
Yuya Nishihara
|
r26141 | Got arguments 1:user@dummy 2:hg -R $TESTTMP/nonexistent serve --stdio | ||
Mads Kiilerich
|
r15622 | Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||
Gregory Szorc
|
r37367 | Got arguments 1:user@dummy 2:hg -R local-stream serve --stdio (no-reposimplestore !) | ||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio (no-reposimplestore !) | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio (no-reposimplestore !) | ||||
Thomas Arendsen Hein
|
r24138 | Got arguments 1:user@dummy 2:hg -R doesnotexist serve --stdio | ||
Mads Kiilerich
|
r15622 | Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||
Got arguments 1:user@dummy 2:hg -R local serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R $TESTTMP/local serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Boris Feld
|
r41793 | changegroup-in-remote hook: HG_BUNDLE2=1 | ||
HG_HOOKNAME=changegroup | ||||
HG_HOOKTYPE=changegroup | ||||
HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 | ||||
HG_NODE_LAST=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 | ||||
HG_SOURCE=serve | ||||
HG_TXNID=TXN:$ID$ | ||||
r42062 | HG_TXNNAME=serve | |||
Boris Feld
|
r41793 | HG_URL=remote:ssh:$LOCALIP | ||
Mads Kiilerich
|
r15622 | Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||||
Boris Feld
|
r41793 | changegroup-in-remote hook: HG_BUNDLE2=1 | ||
HG_HOOKNAME=changegroup | ||||
HG_HOOKTYPE=changegroup | ||||
HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 | ||||
HG_NODE_LAST=1383141674ec756a6056f6a9097618482fe0f4a6 | ||||
HG_SOURCE=serve | ||||
HG_TXNID=TXN:$ID$ | ||||
r42062 | HG_TXNNAME=serve | |||
Boris Feld
|
r41793 | HG_URL=remote:ssh:$LOCALIP | ||
Yuya Nishihara
|
r39872 | Got arguments 1:user@dummy 2:chg -R remote serve --stdio (chg !) | ||
Boris Feld
|
r41793 | changegroup-in-remote hook: HG_BUNDLE2=1 (chg !) | ||
HG_HOOKNAME=changegroup (chg !) | ||||
HG_HOOKTYPE=changegroup (chg !) | ||||
HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 (chg !) | ||||
HG_NODE_LAST=1383141674ec756a6056f6a9097618482fe0f4a6 (chg !) | ||||
HG_SOURCE=serve (chg !) | ||||
HG_TXNID=TXN:$ID$ (chg !) | ||||
r42062 | HG_TXNNAME=serve (chg !) | |||
Boris Feld
|
r41793 | HG_URL=remote:ssh:$LOCALIP (chg !) | ||
(chg !) | ||||
Mads Kiilerich
|
r15622 | Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||
Got arguments 1:user@dummy 2:hg init 'a repo' | ||||
Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio | ||||
Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio | ||||
Matt Mackall
|
r17844 | Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio | ||
Mads Kiilerich
|
r21188 | Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio | ||
Gregory Szorc
|
r22247 | Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||
Boris Feld
|
r41793 | changegroup-in-remote hook: HG_BUNDLE2=1 | ||
HG_HOOKNAME=changegroup | ||||
HG_HOOKTYPE=changegroup | ||||
HG_NODE=65c38f4125f9602c8db4af56530cc221d93b8ef8 | ||||
HG_NODE_LAST=65c38f4125f9602c8db4af56530cc221d93b8ef8 | ||||
HG_SOURCE=serve | ||||
HG_TXNID=TXN:$ID$ | ||||
r42062 | HG_TXNNAME=serve | |||
Boris Feld
|
r41793 | HG_URL=remote:ssh:$LOCALIP | ||
Pierre-Yves David
|
r25338 | Got arguments 1:user@dummy 2:hg -R remote serve --stdio | ||
Gregory Szorc
|
r26828 | |||
Boris Feld
|
r41793 | |||
Gregory Szorc
|
r26828 | remote hook failure is attributed to remote | ||
$ cat > $TESTTMP/failhook << EOF | ||||
> def hook(ui, repo, **kwargs): | ||||
Pulkit Goyal
|
r38120 | > ui.write(b'hook failure!\n') | ||
Gregory Szorc
|
r26828 | > ui.flush() | ||
> return 1 | ||||
> EOF | ||||
$ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc | ||||
Valentin Gatien-Baron
|
r48732 | $ hg -q clone ssh://user@dummy/remote hookout | ||
Gregory Szorc
|
r26828 | $ cd hookout | ||
$ touch hookfailure | ||||
$ hg -q commit -A -m 'remote hook failure' | ||||
Valentin Gatien-Baron
|
r48732 | $ hg push | ||
Gregory Szorc
|
r26828 | pushing to ssh://user@dummy/remote | ||
searching for changes | ||||
remote: adding changesets | ||||
remote: adding manifests | ||||
remote: adding file changes | ||||
remote: hook failure! | ||||
remote: transaction abort! | ||||
remote: rollback completed | ||||
Gregory Szorc
|
r26829 | remote: pretxnchangegroup.fail hook failed | ||
abort: push failed on remote | ||||
Martin von Zweigbergk
|
r47739 | [100] | ||
Gregory Szorc
|
r26828 | |||
Pierre-Yves David
|
r30914 | abort during pull is properly reported as such | ||
$ echo morefoo >> ../remote/foo | ||||
$ hg -R ../remote commit --message "more foo to be pulled" | ||||
$ cat >> ../remote/.hg/hgrc << EOF | ||||
> [extensions] | ||||
> crash = ${TESTDIR}/crashgetbundler.py | ||||
> EOF | ||||
Valentin Gatien-Baron
|
r48732 | $ hg pull | ||
Pierre-Yves David
|
r30914 | pulling from ssh://user@dummy/remote | ||
searching for changes | ||||
remote: abort: this is an exercise | ||||
abort: pull failed on remote | ||||
Martin von Zweigbergk
|
r47739 | [100] | ||
Zuzanna Mroczek
|
r35107 | |||
abort with no error hint when there is a ssh problem when pulling | ||||
Valentin Gatien-Baron
|
r48732 | $ hg pull ssh://brokenrepository | ||
Zuzanna Mroczek
|
r35107 | pulling from ssh://brokenrepository/ | ||
Martin von Zweigbergk
|
r46518 | abort: no suitable response from remote hg | ||
Zuzanna Mroczek
|
r35107 | [255] | ||
abort with configured error hint when there is a ssh problem when pulling | ||||
Valentin Gatien-Baron
|
r48732 | $ hg pull ssh://brokenrepository \ | ||
Yuya Nishihara
|
r35172 | > --config ui.ssherrorhint="Please see http://company/internalwiki/ssh.html" | ||
Zuzanna Mroczek
|
r35107 | pulling from ssh://brokenrepository/ | ||
Martin von Zweigbergk
|
r46518 | abort: no suitable response from remote hg | ||
Zuzanna Mroczek
|
r35107 | (Please see http://company/internalwiki/ssh.html) | ||
[255] | ||||
Kostia Balytskyi
|
r35452 | |||
test that custom environment is passed down to ssh executable | ||||
$ cat >>dumpenv <<EOF | ||||
> #! /bin/sh | ||||
> echo \$VAR >&2 | ||||
> EOF | ||||
$ chmod +x dumpenv | ||||
Matt Harbison
|
r35500 | $ hg pull ssh://something --config ui.ssh="sh dumpenv" | ||
Kostia Balytskyi
|
r35452 | pulling from ssh://something/ | ||
remote: | ||||
Martin von Zweigbergk
|
r46518 | abort: no suitable response from remote hg | ||
Kostia Balytskyi
|
r35452 | [255] | ||
Matt Harbison
|
r35500 | $ hg pull ssh://something --config ui.ssh="sh dumpenv" --config sshenv.VAR=17 | ||
Kostia Balytskyi
|
r35452 | pulling from ssh://something/ | ||
remote: 17 | ||||
Martin von Zweigbergk
|
r46518 | abort: no suitable response from remote hg | ||
Kostia Balytskyi
|
r35452 | [255] | ||