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

r31196:3af9a962 default
r32050:77eaf953 4.1.3 stable
Show More
test-revert-interactive.t
439 lines | 7.2 KiB | text/troff | Tads3Lexer
/ tests / test-revert-interactive.t
Laurent Charignon
revert: add flag to make revert interactive
r24359 Revert interactive tests
1 add and commit file f
2 add commit file folder1/g
3 add and commit file folder2/h
4 add and commit file folder1/i
5 commit change to file f
6 commit changes to files folder1/g folder2/h
7 commit changes to files folder1/g folder2/h
8 revert interactive to commit id 2 (line 3 above), check that folder1/i is removed and
9 make workdir match 7
10 run the same test than 8 from within folder1 and check same expectations
$ cat <<EOF >> $HGRCPATH
> [ui]
> interactive = true
> [extensions]
> record =
liscju
revert: makes interactive mode ask to forget added files (issue4936)...
r27985 > purge =
Laurent Charignon
revert: add flag to make revert interactive
r24359 > EOF
Yuya Nishihara
test-revert-interactive: eliminate bashism in wildcard pattern...
r24389 $ mkdir -p a/folder1 a/folder2
Laurent Charignon
revert: add flag to make revert interactive
r24359 $ cd a
$ hg init
Matt Harbison
test-interactive: use stable EOL in various file generating routines...
r24434 >>> open('f', 'wb').write("1\n2\n3\n4\n5\n")
$ hg add f ; hg commit -m "adding f"
Matt Harbison
tests: replace uses of 'seq' with portable 'seq.py'
r24361 $ cat f > folder1/g ; hg add folder1/g ; hg commit -m "adding folder1/g"
$ cat f > folder2/h ; hg add folder2/h ; hg commit -m "adding folder2/h"
$ cat f > folder1/i ; hg add folder1/i ; hg commit -m "adding folder1/i"
Matt Harbison
test-interactive: use stable EOL in various file generating routines...
r24434 >>> open('f', 'wb').write("a\n1\n2\n3\n4\n5\nb\n")
$ hg commit -m "modifying f"
>>> open('folder1/g', 'wb').write("c\n1\n2\n3\n4\n5\nd\n")
$ hg commit -m "modifying folder1/g"
>>> open('folder2/h', 'wb').write("e\n1\n2\n3\n4\n5\nf\n")
$ hg commit -m "modifying folder2/h"
Laurent Charignon
revert: add flag to make revert interactive
r24359 $ hg tip
changeset: 6:59dd6e4ab63a
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: modifying folder2/h
$ hg revert -i -r 2 --all -- << EOF
> y
> y
> y
> y
> y
Denis Laxalde
revert: prompt before removing files in interactive mode...
r30532 > y
Laurent Charignon
revert: add flag to make revert interactive
r24359 > n
> n
> EOF
reverting f
reverting folder1/g (glob)
removing folder1/i (glob)
reverting folder2/h (glob)
Denis Laxalde
revert: prompt before removing files in interactive mode...
r30532 remove added file folder1/i (Yn)? y
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/f b/f
Laurent Charignon
revert: add flag to make revert interactive
r24359 2 hunks, 2 lines changed
examine changes to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +1,6 @@
+a
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 1/6 to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +2,6 @@
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Laurent Charignon
revert: change the direction of revert -i...
r25657 +b
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 2/6 to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/folder1/g b/folder1/g
Laurent Charignon
revert: add flag to make revert interactive
r24359 2 hunks, 2 lines changed
examine changes to 'folder1/g'? [Ynesfdaq?] y
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +1,6 @@
+c
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 3/6 to 'folder1/g'? [Ynesfdaq?] y
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +2,6 @@
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Laurent Charignon
revert: change the direction of revert -i...
r25657 +d
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 4/6 to 'folder1/g'? [Ynesfdaq?] n
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/folder2/h b/folder2/h
Laurent Charignon
revert: add flag to make revert interactive
r24359 2 hunks, 2 lines changed
examine changes to 'folder2/h'? [Ynesfdaq?] n
$ cat f
1
2
3
4
5
$ cat folder1/g
1
2
3
4
5
d
$ cat folder2/h
e
1
2
3
4
5
f
Pierre-Yves David
revert: do not requires '--all' if '--interative' is present...
r24698
Test that --interactive lift the need for --all
$ echo q | hg revert -i -r 2
reverting folder1/g (glob)
reverting folder2/h (glob)
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/folder1/g b/folder1/g
Pierre-Yves David
revert: do not requires '--all' if '--interative' is present...
r24698 1 hunks, 1 lines changed
examine changes to 'folder1/g'? [Ynesfdaq?] q
abort: user quit
[255]
skarlage
revert: don't backup if no files reverted in interactive mode (issue4793)...
r29498 $ ls folder1/
g
Mads Kiilerich
spelling: fixes of non-dictionary words
r30332 Test that a noop revert doesn't do an unnecessary backup
skarlage
revert: don't backup if no files reverted in interactive mode (issue4793)...
r29498 $ (echo y; echo n) | hg revert -i -r 2 folder1/g
diff --git a/folder1/g b/folder1/g
1 hunks, 1 lines changed
examine changes to 'folder1/g'? [Ynesfdaq?] y
@@ -3,3 +3,4 @@
3
4
5
+d
revert this change to 'folder1/g'? [Ynesfdaq?] n
$ ls folder1/
g
Test --no-backup
$ (echo y; echo y) | hg revert -i -C -r 2 folder1/g
diff --git a/folder1/g b/folder1/g
1 hunks, 1 lines changed
examine changes to 'folder1/g'? [Ynesfdaq?] y
@@ -3,3 +3,4 @@
3
4
5
+d
revert this change to 'folder1/g'? [Ynesfdaq?] y
$ ls folder1/
g
>>> open('folder1/g', 'wb').write("1\n2\n3\n4\n5\nd\n")
Pierre-Yves David
revert: do not requires '--all' if '--interative' is present...
r24698
Laurent Charignon
revert: add flag to make revert interactive
r24359 $ hg update -C 6
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg revert -i -r 2 --all -- << EOF
Denis Laxalde
revert: prompt before removing files in interactive mode...
r30532 > n
Laurent Charignon
revert: add flag to make revert interactive
r24359 > y
> y
> y
> y
> y
> n
> n
> EOF
reverting f
reverting folder1/g (glob)
removing folder1/i (glob)
reverting folder2/h (glob)
Denis Laxalde
revert: prompt before removing files in interactive mode...
r30532 remove added file folder1/i (Yn)? n
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/f b/f
Laurent Charignon
revert: add flag to make revert interactive
r24359 2 hunks, 2 lines changed
examine changes to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +1,6 @@
+a
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 1/6 to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +2,6 @@
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Laurent Charignon
revert: change the direction of revert -i...
r25657 +b
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 2/6 to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/folder1/g b/folder1/g
Laurent Charignon
revert: add flag to make revert interactive
r24359 2 hunks, 2 lines changed
examine changes to 'folder1/g'? [Ynesfdaq?] y
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +1,6 @@
+c
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 3/6 to 'folder1/g'? [Ynesfdaq?] y
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +2,6 @@
Laurent Charignon
revert: add flag to make revert interactive
r24359 1
2
3
4
5
Laurent Charignon
revert: change the direction of revert -i...
r25657 +d
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 revert change 4/6 to 'folder1/g'? [Ynesfdaq?] n
Laurent Charignon
revert: add flag to make revert interactive
r24359
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/folder2/h b/folder2/h
Laurent Charignon
revert: add flag to make revert interactive
r24359 2 hunks, 2 lines changed
examine changes to 'folder2/h'? [Ynesfdaq?] n
$ cat f
1
2
3
4
5
$ cat folder1/g
1
2
3
4
5
d
$ cat folder2/h
e
1
2
3
4
5
f
Laurent Charignon
revert: fix --interactive on local modification (issue4576)...
r24475 $ hg st
M f
M folder1/g
$ hg revert --interactive f << EOF
> y
> y
> n
> n
> EOF
Laurent Charignon
revert: make revert --interactive use git style diff...
r25258 diff --git a/f b/f
Laurent Charignon
revert: fix --interactive on local modification (issue4576)...
r24475 2 hunks, 2 lines changed
examine changes to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,6 +1,5 @@
-a
Laurent Charignon
revert: fix --interactive on local modification (issue4576)...
r24475 1
2
3
4
5
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 discard change 1/2 to 'f'? [Ynesfdaq?] y
Laurent Charignon
revert: fix --interactive on local modification (issue4576)...
r24475
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -2,6 +1,5 @@
Laurent Charignon
revert: fix --interactive on local modification (issue4576)...
r24475 1
2
3
4
5
Laurent Charignon
revert: change the direction of revert -i...
r25657 -b
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 discard change 2/2 to 'f'? [Ynesfdaq?] n
Laurent Charignon
revert: fix --interactive on local modification (issue4576)...
r24475
$ hg st
M f
M folder1/g
? f.orig
$ cat f
a
1
2
3
4
5
$ cat f.orig
1
2
3
4
5
Laurent Charignon
revert: fix edition of newly added file during --interactive...
r25259 $ rm f.orig
$ hg update -C .
Denis Laxalde
revert: prompt before removing files in interactive mode...
r30532 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Laurent Charignon
revert: fix edition of newly added file during --interactive...
r25259
Check editing files newly added by a revert
1) Create a dummy editor changing 1 to 42
$ cat > $TESTTMP/editor.sh << '__EOF__'
> cat "$1" | sed "s/1/42/g" > tt
> mv tt "$1"
> __EOF__
Laurent Charignon
revert: change a test to make the change of direction of revert -i easier...
r25656 2) Add k
$ printf "1\n" > k
$ hg add k
$ hg commit -m "add k"
Laurent Charignon
revert: fix edition of newly added file during --interactive...
r25259
Laurent Charignon
revert: change a test to make the change of direction of revert -i easier...
r25656 3) Use interactive revert with editing (replacing +1 with +42):
$ printf "0\n2\n" > k
$ HGEDITOR="\"sh\" \"${TESTTMP}/editor.sh\"" hg revert -i <<EOF
Laurent Charignon
revert: fix edition of newly added file during --interactive...
r25259 > y
> e
> EOF
Laurent Charignon
revert: change a test to make the change of direction of revert -i easier...
r25656 reverting k
diff --git a/k b/k
1 hunks, 2 lines changed
examine changes to 'k'? [Ynesfdaq?] y
Laurent Charignon
revert: fix edition of newly added file during --interactive...
r25259
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,1 +1,2 @@
-1
+0
+2
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 discard this change to 'k'? [Ynesfdaq?] e
Laurent Charignon
revert: fix edition of newly added file during --interactive...
r25259
Laurent Charignon
revert: change a test to make the change of direction of revert -i easier...
r25656 $ cat k
Laurent Charignon
revert: fix edition of newly added file during --interactive...
r25259 42
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424
Check the experimental config to invert the selection:
$ cat <<EOF >> $HGRCPATH
> [experimental]
Laurent Charignon
revert: change the direction of revert -i...
r25657 > revertalternateinteractivemode=False
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 > EOF
$ hg up -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ printf 'firstline\nc\n1\n2\n3\n 3\n5\nd\nlastline\n' > folder1/g
$ hg diff --nodates
Laurent Charignon
revert: change a test to make the change of direction of revert -i easier...
r25656 diff -r a3d963a027aa folder1/g
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 --- a/folder1/g
+++ b/folder1/g
@@ -1,7 +1,9 @@
+firstline
c
1
2
3
-4
+ 3
5
d
+lastline
$ hg revert -i <<EOF
> y
> y
> y
> n
> EOF
reverting folder1/g (glob)
diff --git a/folder1/g b/folder1/g
3 hunks, 3 lines changed
examine changes to 'folder1/g'? [Ynesfdaq?] y
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -1,5 +1,4 @@
-firstline
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 c
1
2
3
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 discard change 1/3 to 'folder1/g'? [Ynesfdaq?] y
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -2,7 +1,7 @@
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 c
1
2
3
Laurent Charignon
revert: change the direction of revert -i...
r25657 - 3
+4
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 5
d
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 discard change 2/3 to 'folder1/g'? [Ynesfdaq?] y
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424
Laurent Charignon
revert: change the direction of revert -i...
r25657 @@ -7,3 +6,2 @@
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 5
d
Laurent Charignon
revert: change the direction of revert -i...
r25657 -lastline
Denis Laxalde
revert: use "discard"/"revert" verb when reverting interactively (issue5143)...
r29283 discard change 3/3 to 'folder1/g'? [Ynesfdaq?] n
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424
$ hg diff --nodates
Laurent Charignon
revert: change a test to make the change of direction of revert -i easier...
r25656 diff -r a3d963a027aa folder1/g
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 --- a/folder1/g
+++ b/folder1/g
@@ -5,3 +5,4 @@
4
5
d
+lastline
liscju
revert: makes interactive mode ask to forget added files (issue4936)...
r27985
$ hg update -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg purge
$ touch newfile
$ hg add newfile
$ hg status
A newfile
$ hg revert -i <<EOF
> n
> EOF
forgetting newfile
Denis Laxalde
revert: indicate the default choice when prompting to forget files
r30531 forget added file newfile (Yn)? n
liscju
revert: makes interactive mode ask to forget added files (issue4936)...
r27985 $ hg status
A newfile
$ hg revert -i <<EOF
> y
> EOF
forgetting newfile
Denis Laxalde
revert: indicate the default choice when prompting to forget files
r30531 forget added file newfile (Yn)? y
liscju
revert: makes interactive mode ask to forget added files (issue4936)...
r27985 $ hg status
? newfile