##// END OF EJS Templates
obsolete: fix n^2 marker computation behavior...
obsolete: fix n^2 marker computation behavior Previously, if you ran obsolete.createmarkers with a bunch of markers that did not have successors (like when you do a prune), it encountered a n^2 computation behavior because the loop would read the changelog (to get ctx.parents()), then add a marker, in a loop. Adding a marker invalidated the computehidden cache, and reading the changelog recomputed it. This resulted in pruning 150 commits taking 150+ seconds in a large repo. The fix is to break the reading part of the loop to be separate from the writing part.

File last commit:

r25657:dcc56e10 default
r27984:e60e13a8 default
Show More
test-revert-interactive.t
379 lines | 6.0 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 =
> 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
> n
> n
> EOF
reverting f
reverting folder1/g (glob)
removing folder1/i (glob)
reverting folder2/h (glob)
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
record change 1/6 to 'f'? [Ynesfdaq?] y
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
Laurent Charignon
revert: add flag to make revert interactive
r24359 record change 2/6 to 'f'? [Ynesfdaq?] y
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
record change 3/6 to 'folder1/g'? [Ynesfdaq?] y
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
Laurent Charignon
revert: add flag to make revert interactive
r24359 record change 4/6 to 'folder1/g'? [Ynesfdaq?] n
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]
$ rm folder1/g.orig
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
> y
> y
> y
> y
> y
> n
> n
> EOF
reverting f
reverting folder1/g (glob)
removing folder1/i (glob)
reverting folder2/h (glob)
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
record change 1/6 to 'f'? [Ynesfdaq?] y
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
Laurent Charignon
revert: add flag to make revert interactive
r24359 record change 2/6 to 'f'? [Ynesfdaq?] y
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
record change 3/6 to 'folder1/g'? [Ynesfdaq?] y
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
Laurent Charignon
revert: add flag to make revert interactive
r24359 record change 4/6 to 'folder1/g'? [Ynesfdaq?] n
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
R folder1/i
$ 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
record change 1/2 to 'f'? [Ynesfdaq?] y
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
Laurent Charignon
revert: fix --interactive on local modification (issue4576)...
r24475 record change 2/2 to 'f'? [Ynesfdaq?] n
$ hg st
M f
M folder1/g
R folder1/i
? 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 .
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
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
Laurent Charignon
revert: change a test to make the change of direction of revert -i easier...
r25656 record 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
record change 1/3 to 'folder1/g'? [Ynesfdaq?] y
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
record change 2/3 to 'folder1/g'? [Ynesfdaq?] y
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
Laurent Charignon
revert: add an experimental config to use inverted selection...
r25424 record change 3/3 to 'folder1/g'? [Ynesfdaq?] n
$ 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