##// END OF EJS Templates
narrow: fix flaky behavior described in issue6150...
narrow: fix flaky behavior described in issue6150 This has been plaguing the CI for a good while, and it doesn't appear to have an easy fix proposed yet. The solution in this change is to always do an unambiguous (but expensive) lookup in case of comparison. This should always be correct, albeit suboptimal. Differential Revision: https://phab.mercurial-scm.org/D10034

File last commit:

r46868:f6259840 default
r47280:b994db7c stable
Show More
test-ssh.t
707 lines | 21.1 KiB | text/troff | Tads3Lexer
Gregory Szorc
tests: test using both versions of SSH protocol...
r36235 #testcases sshv1 sshv2
#if sshv2
$ cat >> $HGRCPATH << EOF
> [experimental]
> sshpeer.advertise-v2 = true
> sshserver.support-v2 = true
> EOF
#endif
Matt Mackall
tests: unify test-ssh
r12414
This test tries to exercise the ssh functionality with a dummy script
Mads Kiilerich
tests: fix test-ssh.t after 6bd9778ae749
r14185 creating 'remote' repo
Matt Mackall
tests: unify test-ssh
r12414
$ hg init remote
$ cd remote
$ echo this > foo
$ echo this > fooO
$ hg ci -A -m "init" foo fooO
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
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
tests: fix test-ssh.t after 6bd9778ae749
r14185 $ cat <<EOF > .hg/hgrc
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 > [server]
> uncompressed = True
>
> [hooks]
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
r41793 > changegroup = sh -c "printenv.py --line changegroup-in-remote 0 ../dummylog"
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 > EOF
Matt Harbison
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP
Matt Mackall
tests: unify test-ssh
r12414
repo not found error
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 remote: abort: repository nonexistent not found
abort: no suitable response from remote hg
Matt Mackall
tests: unify test-ssh
r12414 [255]
Valentin Gatien-Baron
sshpeer: add test showing that -q silences remote errors...
r45386 $ hg clone -q -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 remote: abort: repository nonexistent not found
abort: no suitable response from remote hg
Valentin Gatien-Baron
sshpeer: add test showing that -q silences remote errors...
r45386 [255]
Matt Mackall
tests: unify test-ssh
r12414
non-existent absolute path
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/`pwd`/nonexistent local
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 remote: abort: repository $TESTTMP/nonexistent not found
abort: no suitable response from remote hg
Matt Mackall
tests: unify test-ssh
r12414 [255]
clone remote via stream
Gregory Szorc
tests: disable tests for advanced clone features with simple store...
r37367 #if no-reposimplestore
Gregory Szorc
commands: rename clone --uncompressed to --stream and document...
r34394 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/remote local-stream
Matt Mackall
tests: unify test-ssh
r12414 streaming all changes
av6
bundle2: make server.bundle2.stream default to True...
r39758 8 files to transfer, 827 bytes of data
transferred 827 bytes in * seconds (*) (glob)
Matt Mackall
tests: unify test-ssh
r12414 updating to branch default
Matt Mackall
tests: unify test-ssh
r12489 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
tests: unify test-ssh
r12414 $ cd local-stream
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 3 changesets with 2 changes to 2 files
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 $ hg branches
default 0:1160648e36ce
Matt Harbison
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP
Matt Mackall
tests: unify test-ssh
r12414
Durham Goode
clone: fix copying bookmarks in uncompressed clones (issue4430)...
r23116 clone bookmarks via stream
$ hg -R local-stream book mybook
Gregory Szorc
commands: rename clone --uncompressed to --stream and document...
r34394 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2
Durham Goode
clone: fix copying bookmarks in uncompressed clones (issue4430)...
r23116 streaming all changes
clone: make sure we warm the cache after a clone...
r47032 16 files to transfer, * of data (glob)
transferred * in * seconds (*) (glob)
Durham Goode
clone: fix copying bookmarks in uncompressed clones (issue4430)...
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
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP
Durham Goode
clone: fix copying bookmarks in uncompressed clones (issue4430)...
r23116 $ rm -rf local-stream stream2
Gregory Szorc
tests: disable tests for advanced clone features with simple store...
r37367 #endif
Matt Mackall
tests: unify test-ssh
r12414 clone remote via pull
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local
Matt Mackall
tests: unify test-ssh
r12414 requesting all changes
adding changesets
adding manifests
adding file changes
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 added 3 changesets with 2 changes to 2 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 1160648e36ce:ad076bfb429d
Matt Mackall
tests: unify test-ssh
r12414 updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
verify
$ cd local
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 3 changesets with 2 changes to 2 files
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> [hooks]
> changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog"
> EOF
Matt Mackall
tests: unify test-ssh
r12414
empty default pull
$ hg paths
default = ssh://user@dummy/remote
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\""
Matt Mackall
tests: unify test-ssh
r12414 pulling from ssh://user@dummy/remote
searching for changes
no changes found
Thomas Arendsen Hein
pull: print "pulling from foo" before accessing the other repo...
r24138 pull from wrong ssh URL
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist
Thomas Arendsen Hein
pull: print "pulling from foo" before accessing the other repo...
r24138 pulling from ssh://user@dummy/doesnotexist
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 remote: abort: repository doesnotexist not found
abort: no suitable response from remote hg
Thomas Arendsen Hein
pull: print "pulling from foo" before accessing the other repo...
r24138 [255]
Matt Mackall
tests: unify test-ssh
r12414 local change
$ echo bleah > foo
$ hg ci -m "add"
updating rc
$ echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc
$ echo "[ui]" >> .hg/hgrc
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ echo "ssh = \"$PYTHON\" \"$TESTDIR/dummyssh\"" >> .hg/hgrc
Matt Mackall
tests: unify test-ssh
r12414
find outgoing
$ hg out ssh://user@dummy/remote
comparing with ssh://user@dummy/remote
searching for changes
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 changeset: 3:a28a9d1a809c
Matt Mackall
tests: unify test-ssh
r12414 tag: tip
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 parent: 0:1160648e36ce
Matt Mackall
tests: unify test-ssh
r12414 user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add
find incoming on the remote side
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg incoming -R ../remote -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/local
Matt Mackall
tests: unify test-ssh
r12414 comparing with ssh://user@dummy/local
searching for changes
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 changeset: 3:a28a9d1a809c
Matt Mackall
tests: unify test-ssh
r12414 tag: tip
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 parent: 0:1160648e36ce
Matt Mackall
tests: unify test-ssh
r12414 user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add
Brodie Rao
test-ssh: test absolute path that exists
r12504 find incoming on the remote side (using absolute path)
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg incoming -R ../remote -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`"
Mads Kiilerich
tests: remove redundant globs...
r12640 comparing with ssh://user@dummy/$TESTTMP/local
Brodie Rao
test-ssh: test absolute path that exists
r12504 searching for changes
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 changeset: 3:a28a9d1a809c
Brodie Rao
test-ssh: test absolute path that exists
r12504 tag: tip
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 parent: 0:1160648e36ce
Brodie Rao
test-ssh: test absolute path that exists
r12504 user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add
Matt Mackall
tests: unify test-ssh
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
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP/remote
Matt Mackall
tests: unify test-ssh
r12414
check remote tip
$ hg tip
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 changeset: 3:a28a9d1a809c
Matt Mackall
tests: unify test-ssh
r12414 tag: tip
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 parent: 0:1160648e36ce
Matt Mackall
tests: unify test-ssh
r12414 user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 4 changesets with 3 changes to 2 files
Matt Mackall
tests: unify test-ssh
r12414 $ hg cat -r tip foo
bleah
$ echo z > z
$ hg ci -A -m z z
created new head
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 test pushkeys and bookmarks
Matt Harbison
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP/local
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg debugpushkey --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote namespaces
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 bookmarks
Mads Kiilerich <mads at kiilerich.com>
debugpushkey: list keys sorted
r18255 namespaces
Pierre-Yves David
phases: add basic pushkey support
r15648 phases
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 $ hg book foo -r 0
Matt Harbison
outgoing: pay attention to `default:pushurl` for bookmarks and subrepos...
r38188 $ hg out -B --config paths.default=bogus://invalid --config paths.default:pushurl=`hg paths default`
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
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
push: don't treat bookmark as a found change...
r16038 [1]
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg debugpushkey --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 foo 1160648e36cec0054048a7edc4110c6f84fde594
$ hg book -f foo
Matt Mackall
pushkey: use UTF-8
r13050 $ hg push --traceback
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 pushing to ssh://user@dummy/remote
searching for changes
no changes found
updating bookmark foo
Matt Mackall
push: return 1 if no changes found (issue3228)...
r16023 [1]
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
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
bookmarks: move push/pull command features to core
r13368 pushing to ssh://user@dummy/remote
searching for changes
no changes found
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969 deleting remote bookmark foo
Matt Mackall
push: don't treat bookmark as a found change...
r16038 [1]
Matt Mackall
pushkey: force HTTP POST on push and add tests (issue2489)
r12969
Matt Mackall
tests: unify test-ssh
r12414 a bad, evil hook that prints to stdout
Mads Kiilerich
tests: share dummyssh
r14186 $ cat <<EOF > $TESTTMP/badhook
> import sys
> sys.stdout.write("KABOOM\n")
Yuya Nishihara
test-ssh: add some flush() to make output deterministic...
r37962 > sys.stdout.flush()
Mads Kiilerich
tests: share dummyssh
r14186 > EOF
Yuya Nishihara
hook: flush stdout before restoring stderr redirection...
r30364 $ cat <<EOF > $TESTTMP/badpyhook.py
> import sys
> def hook(ui, repo, hooktype, **kwargs):
> sys.stdout.write("KABOOM IN PROCESS\n")
Yuya Nishihara
test-ssh: add some flush() to make output deterministic...
r37962 > sys.stdout.flush()
Yuya Nishihara
hook: flush stdout before restoring stderr redirection...
r30364 > EOF
$ cat <<EOF >> ../remote/.hg/hgrc
> [hooks]
Matt Harbison
tests: quote PYTHON usage...
r39743 > changegroup.stdout = "$PYTHON" $TESTTMP/badhook
Yuya Nishihara
hook: flush stdout before restoring stderr redirection...
r30364 > changegroup.pystdout = python:$TESTTMP/badpyhook.py:hook
> EOF
Matt Mackall
tests: unify test-ssh
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
discovery: improve "note: unsynced remote changes!" warning...
r20501 remote has heads on branch 'default' that are not known locally: 6c0482d977a3
Matt Mackall
tests: unify test-ssh
r12414 remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
remote: KABOOM
Yuya Nishihara
hook: flush stdout before restoring stderr redirection...
r30364 remote: KABOOM IN PROCESS
Matt Mackall
tests: unify test-ssh
r12414 $ hg -R ../remote heads
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 changeset: 5:1383141674ec
Matt Mackall
tests: unify test-ssh
r12414 tag: tip
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 parent: 3:a28a9d1a809c
Matt Mackall
tests: unify test-ssh
r12414 user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: z
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 changeset: 4:6c0482d977a3
Matt Mackall
tests: unify test-ssh
r12414 parent: 0:1160648e36ce
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: z
Adrian Buehlmann
sshrepo: catch passwords in ssh urls...
r13464
Yuya Nishihara
test-ssh: show that stdio redirection doesn't work with chg...
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
procutil: compare fd number to see if stdio protection is needed (issue5992)...
r39873 remote: adding changesets
remote: adding manifests
remote: adding file changes
Pulkit Goyal
tests: conditionalize output in test-ssh.t with chg+py3...
r46701 remote: added 1 changesets with 1 changes to 1 files (py3 !)
Yuya Nishihara
chgserver: do not send system() back to client if stdio redirected (issue5992)...
r39875 remote: KABOOM
remote: KABOOM IN PROCESS
Pulkit Goyal
tests: conditionalize output in test-ssh.t with chg+py3...
r46701 remote: added 1 changesets with 1 changes to 1 files (no-py3 !)
Yuya Nishihara
test-ssh: show that stdio redirection doesn't work with chg...
r39872
#endif
David Soria Parra
hg: add support for cloning bookmarks
r13604 clone bookmarks
$ hg -R ../remote bookmark test
$ hg -R ../remote bookmarks
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 * test 4:6c0482d977a3
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks
David Soria Parra
hg: add support for cloning bookmarks
r13604 requesting all changes
adding changesets
adding manifests
adding file changes
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 added 6 changesets with 5 changes to 4 files (+1 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 1160648e36ce:1383141674ec
David Soria Parra
hg: add support for cloning bookmarks
r13604 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R local-bookmarks bookmarks
Matt Mackall
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 test 4:6c0482d977a3
David Soria Parra
hg: add support for cloning bookmarks
r13604
Adrian Buehlmann
sshrepo: catch passwords in ssh urls...
r13464 passwords in ssh urls are not supported
Matt Mackall
ssh: fix password test...
r13755 (we use a glob here because different Python versions give different
results here)
Adrian Buehlmann
sshrepo: catch passwords in ssh urls...
r13464
$ hg push ssh://user:erroneouspwd@dummy/remote
Matt Mackall
ssh: fix password test...
r13755 pushing to ssh://user:*@dummy/remote (glob)
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: password in URL not supported
Adrian Buehlmann
sshrepo: catch passwords in ssh urls...
r13464 [255]
Matt Harbison
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP
Mads Kiilerich
ssh: quote remote paths (issue2983)
r15581
Mads Kiilerich
tests: add missing no-outer-repo requirements...
r17015 hide outer repo
$ hg init
Mads Kiilerich
ssh: quote remote paths (issue2983)
r15581 Test remote paths with spaces (issue2983):
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg init --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
Brad Hall
tag: don't allow tagging the null revision (issue1915)...
r17260 $ touch "$TESTTMP/a repo/test"
$ hg -R 'a repo' commit -A -m "test"
adding test
Mads Kiilerich
ssh: quote remote paths (issue2983)
r15581 $ hg -R 'a repo' tag tag
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg id --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
Brad Hall
tag: don't allow tagging the null revision (issue1915)...
r17260 73649e48688a
Mads Kiilerich
ssh: quote remote paths (issue2983)
r15581
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg id --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO"
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: unknown revision 'noNoNO'
Mads Kiilerich
httppeer: reintroduce _abort that accidentally was removed in 167047ba3cfa...
r21188 [255]
Matt Mackall
clone: don't %-escape the default destination (issue3145)
r17844 Test (non-)escaping of remote paths with spaces when cloning (issue3145):
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg clone --ssh "\"$PYTHON\" \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
Matt Mackall
clone: don't %-escape the default destination (issue3145)
r17844 destination directory: a repo
abort: destination 'a repo' is not empty
Martin von Zweigbergk
errors: use InputError for some errors on `hg clone`...
r46451 [10]
Matt Mackall
clone: don't %-escape the default destination (issue3145)
r17844
Augie Fackler
dispatch: protect against malicious 'hg serve --stdio' invocations (sec)...
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]
Mads Kiilerich
tests: improve test of hg-ssh and make the test pass on windows
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
hg-ssh: use shlex for shell-like parsing of SSH_ORIGINAL_COMMAND...
r15897
Mads Kiilerich
tests: improve test of hg-ssh and make the test pass on windows
r16608 $ cat > ssh.sh << EOF
> userhost="\$1"
> SSH_ORIGINAL_COMMAND="\$2"
> export SSH_ORIGINAL_COMMAND
> PYTHONPATH="$PYTHONPATH"
> export PYTHONPATH
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 > "$PYTHON" "$TESTDIR/../contrib/hg-ssh" "$TESTTMP/a repo"
Mads Kiilerich
tests: improve test of hg-ssh and make the test pass on windows
r16608 > EOF
$ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a repo"
Brad Hall
tag: don't allow tagging the null revision (issue1915)...
r17260 73649e48688a
Mads Kiilerich
hg-ssh: use %s for printing paths in error messages...
r16606
Mads Kiilerich
tests: improve test of hg-ssh and make the test pass on windows
r16608 $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a'repo"
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 remote: Illegal repository "$TESTTMP/a'repo"
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: no suitable response from remote hg
Mads Kiilerich
hg-ssh: use shlex for shell-like parsing of SSH_ORIGINAL_COMMAND...
r15897 [255]
Mads Kiilerich
hg-ssh: use %s for printing paths in error messages...
r16606
Mads Kiilerich
tests: improve test of hg-ssh and make the test pass on windows
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
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: no suitable response from remote hg
Mads Kiilerich
hg-ssh: use shlex for shell-like parsing of SSH_ORIGINAL_COMMAND...
r15897 [255]
Matt Harbison
tests: quote PYTHON usage...
r39743 $ SSH_ORIGINAL_COMMAND="'hg' -R 'a'repo' serve --stdio" "$PYTHON" "$TESTDIR/../contrib/hg-ssh"
Mads Kiilerich
tests: improve test of hg-ssh and make the test pass on windows
r16608 Illegal command "'hg' -R 'a'repo' serve --stdio": No closing quotation
[255]
David Schleimer
hg-ssh: read-only flag...
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
tests: quote $PYTHON for Windows...
r33335 > "$PYTHON" "$TESTDIR/../contrib/hg-ssh" --read-only "$TESTTMP/remote"
David Schleimer
hg-ssh: read-only flag...
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
clone: properly mark branches closed with --uncompressed (issue4428)...
r23126 added 6 changesets with 5 changes to 4 files (+1 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 1160648e36ce:1383141674ec
David Schleimer
hg-ssh: read-only flag...
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
tests/run-tests: avoid C:/ in arguments...
r16897 pushing to ssh://user@dummy/*/remote (glob)
David Schleimer
hg-ssh: read-only flag...
r16836 searching for changes
Pierre-Yves David
sshpeer: use the doublepipe object for the server to client channel...
r25422 remote: Permission denied
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnopen.hg-ssh hook failed
abort: push failed on remote
Pierre-Yves David
test: use bundle2 in test-ssh...
r25376 [255]
David Schleimer
hg-ssh: read-only flag...
r16836
Matt Harbison
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP
David Schleimer
hg-ssh: read-only flag...
r16836
Gregory Szorc
test-ssh: verify that stderr from remote is printed (issue4336)...
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
py3: add b'' prefixes in tests/test-ssh.t and tests/test-ssh-bundle1.t...
r38120 > repo.ui.write(b'local stdout\n')
Yuya Nishihara
test-ssh: add some flush() to make output deterministic...
r37962 > repo.ui.flush()
Gregory Szorc
test-ssh: verify that stderr from remote is printed (issue4336)...
r22247 > return res
>
> def extsetup(ui):
Pulkit Goyal
py3: add b'' prefixes in tests/test-ssh.t and tests/test-ssh-bundle1.t...
r38120 > extensions.wrapfunction(exchange, b'push', wrappedpush)
Gregory Szorc
test-ssh: verify that stderr from remote is printed (issue4336)...
r22247 > EOF
$ cat >> .hg/hgrc << EOF
> [paths]
> default-push = ssh://user@dummy/remote
> [ui]
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 > ssh = "$PYTHON" "$TESTDIR/dummyssh"
Gregory Szorc
test-ssh: verify that stderr from remote is printed (issue4336)...
r22247 > [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
remote: added 1 changesets with 1 changes to 1 files
remote: KABOOM
Yuya Nishihara
hook: flush stdout before restoring stderr redirection...
r30364 remote: KABOOM IN PROCESS
Gregory Szorc
test-ssh: verify that stderr from remote is printed (issue4336)...
r22247 local stdout
Pierre-Yves David
ssh: test some no-op pull through ssh with --debug...
r25338 debug output
Boris Feld
sshpeer: add support for request tracing...
r35717 $ hg pull --debug ssh://user@dummy/remote --config devel.debug.peer-request=yes
Pierre-Yves David
ssh: test some no-op pull through ssh with --debug...
r25338 pulling from ssh://user@dummy/remote
Jun Wu
ssh: quote parameters using shellquote (SEC)...
r33732 running .* ".*/dummyssh" ['"]user@dummy['"] ('|")hg -R remote serve --stdio('|") (re)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
Boris Feld
sshpeer: reflect actual command activity one handshake...
r37831 devel-peer-request: hello+between
devel-peer-request: pairs: 81 bytes
Pierre-Yves David
ssh: test some no-op pull through ssh with --debug...
r25338 sending hello command
sending between command
Valentin Gatien-Baron
exchange: turn on option that makes concurrent pushes work better...
r44896 remote: 463 (sshv1 !)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 protocol upgraded to exp-ssh-v2-0003 (sshv2 !)
Boris Feld
test: enable sparse-revlog for test-ssh.t...
r40947 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
Gregory Szorc
tests: test using both versions of SSH protocol...
r36235 remote: 1 (sshv1 !)
Joerg Sonnenberger
wireproto: provide accessors for client capabilities...
r37411 devel-peer-request: protocaps
devel-peer-request: caps: * bytes (glob)
sending protocaps command
Pierre-Yves David
ssh: test some no-op pull through ssh with --debug...
r25338 query 1; heads
Boris Feld
peer-request: include more details about batch commands...
r36963 devel-peer-request: batched-content
devel-peer-request: - heads (0 arguments)
devel-peer-request: - known (1 arguments)
Boris Feld
sshpeer: add support for request tracing...
r35717 devel-peer-request: batch
devel-peer-request: cmds: 141 bytes
Pierre-Yves David
ssh: test some no-op pull through ssh with --debug...
r25338 sending batch command
searching for changes
all remote heads known locally
no changes found
Boris Feld
sshpeer: add support for request tracing...
r35717 devel-peer-request: getbundle
devel-peer-request: bookmarks: 1 bytes
Valentin Gatien-Baron
exchange: turn on option that makes concurrent pushes work better...
r44896 devel-peer-request: bundlecaps: 289 bytes
Boris Feld
sshpeer: add support for request tracing...
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
test: use bundle2 in test-ssh...
r25376 sending getbundle command
bundle2-input-bundle: with-transaction
Boris Feld
pull: retrieve bookmarks through the binary part when possible...
r35269 bundle2-input-part: "bookmarks" supported
bundle2-input-part: total payload size 26
Pierre-Yves David
test: use bundle2 in test-ssh...
r25376 bundle2-input-part: "listkeys" (params: 1 mandatory) supported
bundle2-input-part: total payload size 45
Boris Feld
pull: use 'phase-heads' to retrieve phase information...
r34323 bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 72
Martin von Zweigbergk
bundle2: fix an off-by-one in debug message of number of parts...
r43201 bundle2-input-bundle: 3 parts total
Pierre-Yves David
test: use bundle2 in test-ssh...
r25376 checking for updated bookmarks
Pierre-Yves David
ssh: test some no-op pull through ssh with --debug...
r25338
Matt Harbison
tests: replace `cd ..` with an absolute path in a couple ssh tests...
r40305 $ cd $TESTTMP
Gregory Szorc
test-ssh: verify that stderr from remote is printed (issue4336)...
r22247
Matt Mackall
tests: unify test-ssh
r12414 $ cat dummylog
Mads Kiilerich
sshrepo: don't quote obviously safe strings (issue2983)...
r15622 Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
Valentin Gatien-Baron
sshpeer: add test showing that -q silences remote errors...
r45386 Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
Yuya Nishihara
test-ssh: remove superfluous triple slashes from absolute path test...
r26141 Got arguments 1:user@dummy 2:hg -R $TESTTMP/nonexistent serve --stdio
Mads Kiilerich
sshrepo: don't quote obviously safe strings (issue2983)...
r15622 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Gregory Szorc
tests: disable tests for advanced clone features with simple store...
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
pull: print "pulling from foo" before accessing the other repo...
r24138 Got arguments 1:user@dummy 2:hg -R doesnotexist serve --stdio
Mads Kiilerich
sshrepo: don't quote obviously safe strings (issue2983)...
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
test: use `printenv.py --line` in `test-ssh.t`...
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$
transaction: include txnname in the hookargs dictionary...
r42062 HG_TXNNAME=serve
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
r41793 HG_URL=remote:ssh:$LOCALIP
Mads Kiilerich
sshrepo: don't quote obviously safe strings (issue2983)...
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
test: use `printenv.py --line` in `test-ssh.t`...
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$
transaction: include txnname in the hookargs dictionary...
r42062 HG_TXNNAME=serve
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
r41793 HG_URL=remote:ssh:$LOCALIP
Yuya Nishihara
test-ssh: show that stdio redirection doesn't work with chg...
r39872 Got arguments 1:user@dummy 2:chg -R remote serve --stdio (chg !)
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
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 !)
transaction: include txnname in the hookargs dictionary...
r42062 HG_TXNNAME=serve (chg !)
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
r41793 HG_URL=remote:ssh:$LOCALIP (chg !)
(chg !)
Mads Kiilerich
sshrepo: don't quote obviously safe strings (issue2983)...
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
clone: don't %-escape the default destination (issue3145)
r17844 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
Mads Kiilerich
httppeer: reintroduce _abort that accidentally was removed in 167047ba3cfa...
r21188 Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
Gregory Szorc
test-ssh: verify that stderr from remote is printed (issue4336)...
r22247 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
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$
transaction: include txnname in the hookargs dictionary...
r42062 HG_TXNNAME=serve
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
r41793 HG_URL=remote:ssh:$LOCALIP
Pierre-Yves David
ssh: test some no-op pull through ssh with --debug...
r25338 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Gregory Szorc
tests: add tests for remote hook output (issue4788)...
r26828
Boris Feld
test: use `printenv.py --line` in `test-ssh.t`...
r41793
Gregory Szorc
tests: add tests for remote hook output (issue4788)...
r26828 remote hook failure is attributed to remote
$ cat > $TESTTMP/failhook << EOF
> def hook(ui, repo, **kwargs):
Pulkit Goyal
py3: add b'' prefixes in tests/test-ssh.t and tests/test-ssh-bundle1.t...
r38120 > ui.write(b'hook failure!\n')
Gregory Szorc
tests: add tests for remote hook output (issue4788)...
r26828 > ui.flush()
> return 1
> EOF
$ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg -q --config ui.ssh="\"$PYTHON\" $TESTDIR/dummyssh" clone ssh://user@dummy/remote hookout
Gregory Szorc
tests: add tests for remote hook output (issue4788)...
r26828 $ cd hookout
$ touch hookfailure
$ hg -q commit -A -m 'remote hook failure'
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg --config ui.ssh="\"$PYTHON\" $TESTDIR/dummyssh" push
Gregory Szorc
tests: add tests for remote hook output (issue4788)...
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
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnchangegroup.fail hook failed
abort: push failed on remote
Gregory Szorc
tests: add tests for remote hook output (issue4788)...
r26828 [255]
Pierre-Yves David
wireproto: properly report server Abort during 'getbundle'...
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
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 $ hg --config ui.ssh="\"$PYTHON\" $TESTDIR/dummyssh" pull
Pierre-Yves David
wireproto: properly report server Abort during 'getbundle'...
r30914 pulling from ssh://user@dummy/remote
searching for changes
remote: abort: this is an exercise
abort: pull failed on remote
[255]
Zuzanna Mroczek
sshpeer: add a configurable hint for the ssh error message...
r35107
abort with no error hint when there is a ssh problem when pulling
Yuya Nishihara
test-ssh: do not actually look up "brokenrepository" by DNS
r35172 $ hg pull ssh://brokenrepository -e "\"$PYTHON\" \"$TESTDIR/dummyssh\""
Zuzanna Mroczek
sshpeer: add a configurable hint for the ssh error message...
r35107 pulling from ssh://brokenrepository/
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: no suitable response from remote hg
Zuzanna Mroczek
sshpeer: add a configurable hint for the ssh error message...
r35107 [255]
abort with configured error hint when there is a ssh problem when pulling
Yuya Nishihara
test-ssh: do not actually look up "brokenrepository" by DNS
r35172 $ hg pull ssh://brokenrepository -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" \
> --config ui.ssherrorhint="Please see http://company/internalwiki/ssh.html"
Zuzanna Mroczek
sshpeer: add a configurable hint for the ssh error message...
r35107 pulling from ssh://brokenrepository/
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: no suitable response from remote hg
Zuzanna Mroczek
sshpeer: add a configurable hint for the ssh error message...
r35107 (Please see http://company/internalwiki/ssh.html)
[255]
Kostia Balytskyi
sshpeer: allow for additional environment passing to ssh exe...
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
test-ssh: stabilize for Windows...
r35500 $ hg pull ssh://something --config ui.ssh="sh dumpenv"
Kostia Balytskyi
sshpeer: allow for additional environment passing to ssh exe...
r35452 pulling from ssh://something/
remote:
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: no suitable response from remote hg
Kostia Balytskyi
sshpeer: allow for additional environment passing to ssh exe...
r35452 [255]
Matt Harbison
test-ssh: stabilize for Windows...
r35500 $ hg pull ssh://something --config ui.ssh="sh dumpenv" --config sshenv.VAR=17
Kostia Balytskyi
sshpeer: allow for additional environment passing to ssh exe...
r35452 pulling from ssh://something/
remote: 17
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: no suitable response from remote hg
Kostia Balytskyi
sshpeer: allow for additional environment passing to ssh exe...
r35452 [255]