##// END OF EJS Templates
dispatch: protect against malicious 'hg serve --stdio' invocations (sec)...
dispatch: protect against malicious 'hg serve --stdio' invocations (sec) Some shared-ssh installations assume that 'hg serve --stdio' is a safe command to run for minimally trusted users. Unfortunately, the messy implementation of argument parsing here meant that trying to access a repo named '--debugger' would give the user a pdb prompt, thereby sidestepping any hoped-for sandboxing. Serving repositories over HTTP(S) is unaffected. We're not currently hardening any subcommands other than 'serve'. If your service exposes other commands to users with arbitrary repository names, it is imperative that you defend against repository names of '--debugger' and anything starting with '--config'. The read-only mode of hg-ssh stopped working because it provided its hook configuration to "hg serve --stdio" via --config parameter. This is banned for security reasons now. This patch switches it to directly call ui.setconfig(). If your custom hosting infrastructure relies on passing --config to "hg serve --stdio", you'll need to find a different way to get that configuration into Mercurial, either by using ui.setconfig() as hg-ssh does in this patch, or by placing an hgrc file someplace where Mercurial will read it. mitrandir@fb.com provided some extra fixes for the dispatch code and for hg-ssh in places that I overlooked.

File last commit:

r31794:54b1af73 default
r32050:77eaf953 4.1.3 stable
Show More
test-bundle-type.t
227 lines | 5.2 KiB | text/troff | Tads3Lexer
/ tests / test-bundle-type.t
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925
$ cat << EOF >> $HGRCPATH
> [format]
> usegeneraldelta=yes
> EOF
Martin Geisler
tests: unify test-bundle-type
r11872 bundle w/o type option
$ hg init t1
$ hg init t2
$ cd t1
$ echo blablablablabla > file.txt
$ hg ci -Ama
adding file.txt
$ hg log | grep summary
summary: a
$ hg bundle ../b1 ../t2
searching for changes
1 changesets found
$ cd ../t2
$ hg pull ../b1
pulling from ../b1
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg log | grep summary
summary: a
$ cd ..
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473 Unknown compression type is rejected
$ hg init t3
$ cd t3
$ hg -q pull ../b1
$ hg bundle -a -t unknown out.hg
abort: unknown is not a recognized bundle specification
(see 'hg help bundle' for supported values for --type)
[255]
$ hg bundle -a -t unknown-v2 out.hg
abort: unknown compression is not supported
(see 'hg help bundle' for supported values for --type)
[255]
$ cd ..
Martin Geisler
tests: unify test-bundle-type
r11872 test bundle types
Gregory Szorc
util: implement zstd compression engine...
r30442 $ testbundle() {
> echo % test bundle type $1
> hg init t$1
Martin Geisler
tests: unify test-bundle-type
r11872 > cd t1
Gregory Szorc
util: implement zstd compression engine...
r30442 > hg bundle -t $1 ../b$1 ../t$1
> f -q -B6 -D ../b$1; echo
> cd ../t$1
> hg debugbundle ../b$1
> hg debugbundle --spec ../b$1
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511 > echo
Martin Geisler
tests: unify test-bundle-type
r11872 > cd ..
Gregory Szorc
util: implement zstd compression engine...
r30442 > }
$ for t in "None" "bzip2" "gzip" "none-v2" "v2" "v1" "gzip-v1"; do
> testbundle $t
Martin Geisler
tests: unify test-bundle-type
r11872 > done
% test bundle type None
searching for changes
1 changesets found
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 HG20\x00\x00 (esc)
Stream params: {}
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 none-v2
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511
Martin Geisler
tests: unify test-bundle-type
r11872 % test bundle type bzip2
searching for changes
1 changesets found
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 HG20\x00\x00 (esc)
Gregory Szorc
util: implement a deterministic __repr__ on sortdict...
r29592 Stream params: sortdict([('Compression', 'BZ')])
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 bzip2-v2
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511
Martin Geisler
tests: unify test-bundle-type
r11872 % test bundle type gzip
searching for changes
1 changesets found
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 HG20\x00\x00 (esc)
Gregory Szorc
util: implement a deterministic __repr__ on sortdict...
r29592 Stream params: sortdict([('Compression', 'GZ')])
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 gzip-v2
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531 % test bundle type none-v2
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Stream params: {}
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 none-v2
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
% test bundle type v2
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Gregory Szorc
util: implement a deterministic __repr__ on sortdict...
r29592 Stream params: sortdict([('Compression', 'BZ')])
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 bzip2-v2
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
% test bundle type v1
searching for changes
1 changesets found
HG10BZ
c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 bzip2-v1
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
% test bundle type gzip-v1
searching for changes
1 changesets found
HG10GZ
c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 gzip-v1
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
Gregory Szorc
commands: config option to control bundle compression level...
r30758
Compression level can be adjusted for bundle2 bundles
$ hg init test-complevel
$ cd test-complevel
$ cat > file0 << EOF
> this is a file
> with some text
> and some more text
> and other content
> EOF
$ cat > file1 << EOF
> this is another file
> with some other content
> and repeated, repeated, repeated, repeated content
> EOF
$ hg -q commit -A -m initial
$ hg bundle -a -t gzip-v2 gzip-v2.hg
1 changesets found
$ f --size gzip-v2.hg
gzip-v2.hg: size=427
$ hg --config experimental.bundlecomplevel=1 bundle -a -t gzip-v2 gzip-v2-level1.hg
1 changesets found
$ f --size gzip-v2-level1.hg
gzip-v2-level1.hg: size=435
$ cd ..
Gregory Szorc
util: implement zstd compression engine...
r30442 #if zstd
$ for t in "zstd" "zstd-v2"; do
> testbundle $t
> done
% test bundle type zstd
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Stream params: sortdict([('Compression', 'ZS')])
changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
zstd-v2
% test bundle type zstd-v2
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Stream params: sortdict([('Compression', 'ZS')])
changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
zstd-v2
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473
Explicit request for zstd on non-generaldelta repos
$ hg --config format.usegeneraldelta=false init nogd
$ hg -q -R nogd pull t1
$ hg -R nogd bundle -a -t zstd nogd-zstd
Gregory Szorc
exchange: use v2 bundles for modern compression engines (issue5506)...
r31474 1 changesets found
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473
zstd-v1 always fails
$ hg -R tzstd bundle -a -t zstd-v1 zstd-v1
abort: compression engine zstd is not supported on v1 bundles
(see 'hg help bundle' for supported values for --type)
[255]
Gregory Szorc
util: implement zstd compression engine...
r30442 #else
zstd is a valid engine but isn't available
$ hg -R t1 bundle -a -t zstd irrelevant.hg
abort: compression engine zstd could not be loaded
[255]
#endif
Martin Geisler
tests: unify test-bundle-type
r11872
test garbage file
$ echo garbage > bgarbage
$ hg init tgarbage
$ cd tgarbage
$ hg pull ../bgarbage
Thomas Arendsen Hein
pull: print "pulling from foo" before accessing the other repo...
r24138 pulling from ../bgarbage
Matt Mackall
bundlerepo: remove duplication of bundle decompressors
r12044 abort: ../bgarbage: not a Mercurial bundle
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-bundle-type
r11872 $ cd ..
test invalid bundle type
$ cd t1
$ hg bundle -a -t garbage ../bgarbage
Gregory Szorc
exchange: refactor bundle specification parsing...
r26640 abort: garbage is not a recognized bundle specification
timeless
bundle: use single quotes in use warning
r29971 (see 'hg help bundle' for supported values for --type)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-bundle-type
r11872 $ cd ..