##// 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:

r27626:157675d0 default
r32050:77eaf953 4.1.3 stable
Show More
test-rebase-mq.t
360 lines | 6.9 KiB | text/troff | Tads3Lexer
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
> mq=
>
> [mq]
> plain=true
>
> [alias]
> tglog = log -G --template "{rev}: '{desc}' tags: {tags}\n"
> EOF
$ hg init a
$ cd a
$ hg qinit -c
$ echo c1 > f
$ hg add f
$ hg ci -m C1
$ echo r1 > f
$ hg ci -m R1
$ hg up -q 0
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 $ hg qnew f.patch -d '1 0'
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ echo mq1 > f
$ hg qref -m P0
$ hg qnew f2.patch
$ echo mq2 > f
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 $ hg qref -m P1 -d '2 0'
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg tglog
@ 3: 'P1' tags: f2.patch qtip tip
|
o 2: 'P0' tags: f.patch qbase
|
| o 1: 'R1' tags:
|/
o 0: 'C1' tags: qparent
Rebase - try to rebase on an applied mq patch:
$ hg rebase -s 1 -d 3
abort: cannot rebase onto an applied mq patch
[255]
Rebase - same thing, but mq patch is default dest:
$ hg up -q 1
$ hg rebase
abort: cannot rebase onto an applied mq patch
[255]
$ hg up -q qtip
Rebase - generate a conflict:
$ hg rebase -s 2 -d 1
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:3504f44bffc0 "P0" (f.patch qbase)
Adrian Buehlmann
tests: unify test-rebase*
r12608 merging f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
Augie Fackler
rebase: switch from util.Abort to util.InterventionRequired where appropriate (bc)
r18933 unresolved conflicts (see hg resolve, then hg rebase --continue)
Augie Fackler
dispatch: exit with status 1 for an InterventionRequired exception (bc)
r18935 [1]
Adrian Buehlmann
tests: unify test-rebase*
r12608
Fix the 1st conflict:
$ echo mq1r1 > f
$ hg resolve -m f
Pierre-Yves David
resolve: add parenthesis around "no more unresolved files" message...
r21947 (no more unresolved files)
timeless
rebase: hook afterresolvedstates
r27626 continue: hg rebase --continue
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ hg rebase -c
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:3504f44bffc0 "P0" (f.patch qbase)
rebasing 3:929394423cd3 "P1" (f2.patch qtip tip)
Adrian Buehlmann
tests: unify test-rebase*
r12608 merging f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
Augie Fackler
rebase: switch from util.Abort to util.InterventionRequired where appropriate (bc)
r18933 unresolved conflicts (see hg resolve, then hg rebase --continue)
Augie Fackler
dispatch: exit with status 1 for an InterventionRequired exception (bc)
r18935 [1]
Adrian Buehlmann
tests: unify test-rebase*
r12608
Fix the 2nd conflict:
$ echo mq1r1mq2 > f
$ hg resolve -m f
Pierre-Yves David
resolve: add parenthesis around "no more unresolved files" message...
r21947 (no more unresolved files)
timeless
rebase: hook afterresolvedstates
r27626 continue: hg rebase --continue
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ hg rebase -c
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 already rebased 2:3504f44bffc0 "P0" (f.patch qbase) as ebe9914c0d1c
rebasing 3:929394423cd3 "P1" (f2.patch qtip)
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/a/.hg/strip-backup/3504f44bffc0-30595b40-backup.hg (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg tglog
@ 3: 'P1' tags: f2.patch qtip tip
|
o 2: 'P0' tags: f.patch qbase
|
o 1: 'R1' tags: qparent
|
o 0: 'C1' tags:
$ hg up -q qbase
$ cat f
mq1r1
$ cat .hg/patches/f.patch
# HG changeset patch
# User test
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 # Date 1 0
# Thu Jan 01 00:00:01 1970 +0000
# Node ID ebe9914c0d1c3f60096e952fa4dbb3d377dea3ab
Adrian Buehlmann
tests: unify test-rebase*
r12608 # Parent bac9ed9960d8992bcad75864a879fa76cadaf1b0
P0
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 diff -r bac9ed9960d8 -r ebe9914c0d1c f
Adrian Buehlmann
tests: unify test-rebase*
r12608 --- a/f Thu Jan 01 00:00:00 1970 +0000
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 +++ b/f Thu Jan 01 00:00:01 1970 +0000
Adrian Buehlmann
tests: unify test-rebase*
r12608 @@ -1,1 +1,1 @@
-r1
+mq1r1
Update to qtip:
$ hg up -q qtip
$ cat f
mq1r1mq2
$ cat .hg/patches/f2.patch
# HG changeset patch
# User test
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 # Date 2 0
# Thu Jan 01 00:00:02 1970 +0000
# Node ID 462012cf340c97d44d62377c985a423f6bb82f07
# Parent ebe9914c0d1c3f60096e952fa4dbb3d377dea3ab
Adrian Buehlmann
tests: unify test-rebase*
r12608 P1
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 diff -r ebe9914c0d1c -r 462012cf340c f
--- a/f Thu Jan 01 00:00:01 1970 +0000
+++ b/f Thu Jan 01 00:00:02 1970 +0000
Adrian Buehlmann
tests: unify test-rebase*
r12608 @@ -1,1 +1,1 @@
-mq1r1
+mq1r1mq2
Adding one git-style patch and one normal:
$ hg qpop -a
popping f2.patch
popping f.patch
patch queue now empty
$ rm -fr .hg/patches
$ hg qinit -c
$ hg up -q 0
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 $ hg qnew --git f_git.patch -d '3 0'
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ echo mq1 > p
$ hg add p
$ hg qref --git -m 'P0 (git)'
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 $ hg qnew f.patch -d '4 0'
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ echo mq2 > p
$ hg qref -m P1
$ hg qci -m 'save patch state'
$ hg qseries -s
f_git.patch: P0 (git)
f.patch: P1
$ hg -R .hg/patches manifest
.hgignore
f.patch
f_git.patch
series
$ cat .hg/patches/f_git.patch
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 Date: 3 0
Adrian Buehlmann
tests: unify test-rebase*
r12608 P0 (git)
diff --git a/p b/p
new file mode 100644
--- /dev/null
+++ b/p
@@ -0,0 +1,1 @@
+mq1
$ cat .hg/patches/f.patch
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 Date: 4 0
Adrian Buehlmann
tests: unify test-rebase*
r12608 P1
diff -r ???????????? p (glob)
--- a/p ??? ??? ?? ??:??:?? ???? ????? (glob)
+++ b/p ??? ??? ?? ??:??:?? ???? ????? (glob)
@@ -1,1 +1,1 @@
-mq1
+mq2
Rebase the applied mq patches:
$ hg rebase -s 2 -d 1
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:0c587ffcb480 "P0 (git)" (f_git.patch qbase)
rebasing 3:c7f18665e4bc "P1" (f.patch qtip tip)
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/a/.hg/strip-backup/0c587ffcb480-0ea5695f-backup.hg (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg qci -m 'save patch state'
$ hg qseries -s
f_git.patch: P0 (git)
f.patch: P1
$ hg -R .hg/patches manifest
.hgignore
f.patch
f_git.patch
series
$ cat .hg/patches/f_git.patch
# HG changeset patch
# User test
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 # Date 3 0
# Thu Jan 01 00:00:03 1970 +0000
# Node ID 12d9f6a3bbe560dee50c7c454d434add7fb8e837
Adrian Buehlmann
tests: unify test-rebase*
r12608 # Parent bac9ed9960d8992bcad75864a879fa76cadaf1b0
P0 (git)
diff --git a/p b/p
new file mode 100644
--- /dev/null
+++ b/p
@@ -0,0 +1,1 @@
+mq1
$ cat .hg/patches/f.patch
# HG changeset patch
# User test
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 # Date 4 0
# Thu Jan 01 00:00:04 1970 +0000
# Node ID c77a2661c64c60d82f63c4f7aefd95b3a948a557
# Parent 12d9f6a3bbe560dee50c7c454d434add7fb8e837
Adrian Buehlmann
tests: unify test-rebase*
r12608 P1
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 diff -r 12d9f6a3bbe5 -r c77a2661c64c p
--- a/p Thu Jan 01 00:00:03 1970 +0000
+++ b/p Thu Jan 01 00:00:04 1970 +0000
Adrian Buehlmann
tests: unify test-rebase*
r12608 @@ -1,1 +1,1 @@
-mq1
+mq2
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912 $ cd ..
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
Rebase with guards
$ hg init foo
$ cd foo
$ echo a > a
$ hg ci -Am a
adding a
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 Create mq repo with guarded patches foo and bar and empty patch:
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
$ hg qinit
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 $ echo guarded > guarded
$ hg add guarded
$ hg qnew guarded
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 $ hg qnew empty-important -m 'important commit message' -d '1 0'
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 $ echo bar > bar
$ hg add bar
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 $ hg qnew bar -d '2 0'
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 $ echo foo > foo
Idan Kamara
rebase: preserve mq series order after rebasing (issue2849)
r14599 $ hg add foo
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 $ hg qnew foo
$ hg qpop -a
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 popping foo
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 popping bar
popping empty-important
popping guarded
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 patch queue now empty
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 $ hg qguard guarded +guarded
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 $ hg qguard bar +baz
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 $ hg qguard foo +baz
$ hg qselect baz
number of unguarded, unapplied patches has changed from 1 to 3
$ hg qpush bar
applying empty-important
patch empty-important is empty
applying bar
now at: bar
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
$ hg qguard -l
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 guarded: +guarded
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 empty-important: unguarded
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 bar: +baz
foo: +baz
$ hg tglog
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 @ 2: 'imported patch bar' tags: bar qtip tip
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 |
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 o 1: 'important commit message' tags: empty-important qbase
|
o 0: 'a' tags: qparent
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
Create new head to rebase bar onto:
$ hg up -C 0
Idan Kamara
rebase: preserve mq series order after rebasing (issue2849)
r14599 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 $ echo b > b
$ hg add b
$ hg ci -m b
created new head
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 $ hg up -C 2
Idan Kamara
rebase: preserve mq series order after rebasing (issue2849)
r14599 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 $ echo a >> a
$ hg qref
$ hg tglog
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 @ 3: '[mq]: bar' tags: bar qtip tip
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 |
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 | o 2: 'b' tags:
| |
o | 1: 'important commit message' tags: empty-important qbase
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 |/
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 o 0: 'a' tags: qparent
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 Rebase bar (make sure series order is preserved and empty-important also is
removed from the series):
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
Idan Kamara
rebase: preserve mq series order after rebasing (issue2849)
r14599 $ hg qseries
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 guarded
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 empty-important
bar
foo
$ [ -f .hg/patches/empty-important ]
$ hg -q rebase -d 2
Mads Kiilerich
rebase: show warning when rebase creates no changes to commit...
r23518 note: rebase of 1:0aaf4c3af7eb created no changes to commit
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 $ hg qseries
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 guarded
Idan Kamara
rebase: preserve mq series order after rebasing (issue2849)
r14599 bar
foo
Mads Kiilerich
rebase: write series file without removed mq patches...
r15904 $ [ -f .hg/patches/empty-important ]
[1]
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
$ hg qguard -l
Patrick Mezard
rebase: preserve mq series order, guarded patches (issue2849)...
r16531 guarded: +guarded
Idan Kamara
rebase: preserve mq series order after rebasing (issue2849)
r14599 bar: +baz
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 foo: +baz
$ hg tglog
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 @ 2: '[mq]: bar' tags: bar qbase qtip tip
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 |
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 o 1: 'b' tags: qparent
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766 |
Mads Kiilerich
tests: stabilise mq rebase tests...
r23515 o 0: 'a' tags:
Stefano Tortarolo
rebase: restore mq guards after rebasing (issue2107)...
r13766
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912 $ cd ..