test-diff-change.t
298 lines
| 7.3 KiB
| text/troff
|
Tads3Lexer
/ tests / test-diff-change.t
Martin von Zweigbergk
|
r46703 | Testing diff --change, --from, --to | ||
Adrian Buehlmann
|
r12136 | |||
$ hg init a | ||||
$ cd a | ||||
$ echo "first" > file.txt | ||||
$ hg add file.txt | ||||
$ hg commit -m 'first commit' # 0 | ||||
$ echo "second" > file.txt | ||||
$ hg commit -m 'second commit' # 1 | ||||
$ echo "third" > file.txt | ||||
$ hg commit -m 'third commit' # 2 | ||||
$ hg diff --nodates --change 1 | ||||
diff -r 4bb65dda5db4 -r e9b286083166 file.txt | ||||
--- a/file.txt | ||||
+++ b/file.txt | ||||
@@ -1,1 +1,1 @@ | ||||
-first | ||||
+second | ||||
$ hg diff --change e9b286083166 | ||||
diff -r 4bb65dda5db4 -r e9b286083166 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-first | ||||
+second | ||||
Martin von Zweigbergk
|
r46703 | Test --from and --to | ||
$ hg diff --from . --rev . | ||||
abort: cannot specify both --from and --rev | ||||
[10] | ||||
$ hg diff --to . --rev . | ||||
abort: cannot specify both --to and --rev | ||||
[10] | ||||
$ hg diff --from . --change . | ||||
abort: cannot specify both --from and --change | ||||
[10] | ||||
$ hg diff --to . --change . | ||||
abort: cannot specify both --to and --change | ||||
[10] | ||||
$ echo dirty > file.txt | ||||
$ hg diff --from . | ||||
diff -r bf5ff72eb7e0 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-third | ||||
+dirty | ||||
$ hg diff --from . --reverse | ||||
diff -r bf5ff72eb7e0 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-dirty | ||||
+third | ||||
$ hg diff --to . | ||||
diff -r bf5ff72eb7e0 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-dirty | ||||
+third | ||||
$ hg diff --from 0 --to 2 | ||||
diff -r 4bb65dda5db4 -r bf5ff72eb7e0 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-first | ||||
+third | ||||
$ hg diff --from 2 --to 0 | ||||
diff -r bf5ff72eb7e0 -r 4bb65dda5db4 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-third | ||||
+first | ||||
$ hg co -C . | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Yuya Nishihara
|
r26019 | $ cd .. | ||
Yuya Nishihara
|
r26020 | Test dumb revspecs: top-level "x:y", "x:", ":y" and ":" ranges should be handled | ||
as pairs even if x == y, but not for "f(x:y)" nor "x::y" (issue3474, issue4774) | ||||
Matt Mackall
|
r16790 | |||
Yuya Nishihara
|
r26019 | $ hg clone -q a dumbspec | ||
$ cd dumbspec | ||||
$ echo "wdir" > file.txt | ||||
Matt Mackall
|
r16790 | $ hg diff -r 2:2 | ||
Yuya Nishihara
|
r26020 | $ hg diff -r 2:. | ||
$ hg diff -r 2: | ||||
$ hg diff -r :0 | ||||
$ hg diff -r '2:first(2:2)' | ||||
$ hg diff -r 'first(2:2)' --nodates | ||||
diff -r bf5ff72eb7e0 file.txt | ||||
--- a/file.txt | ||||
+++ b/file.txt | ||||
@@ -1,1 +1,1 @@ | ||||
-third | ||||
+wdir | ||||
Yuya Nishihara
|
r29771 | $ hg diff -r '(2:2)' --nodates | ||
diff -r bf5ff72eb7e0 file.txt | ||||
--- a/file.txt | ||||
+++ b/file.txt | ||||
@@ -1,1 +1,1 @@ | ||||
-third | ||||
+wdir | ||||
Yuya Nishihara
|
r26020 | $ hg diff -r 2::2 --nodates | ||
diff -r bf5ff72eb7e0 file.txt | ||||
--- a/file.txt | ||||
+++ b/file.txt | ||||
@@ -1,1 +1,1 @@ | ||||
-third | ||||
+wdir | ||||
Matt Mackall
|
r16790 | $ hg diff -r "2 and 1" | ||
abort: empty revision range | ||||
[255] | ||||
Adrian Buehlmann
|
r12136 | |||
Yuya Nishihara
|
r26019 | $ cd .. | ||
Yuya Nishihara
|
r26020 | $ hg clone -qr0 a dumbspec-rev0 | ||
$ cd dumbspec-rev0 | ||||
$ echo "wdir" > file.txt | ||||
$ hg diff -r : | ||||
$ hg diff -r 'first(:)' --nodates | ||||
diff -r 4bb65dda5db4 file.txt | ||||
--- a/file.txt | ||||
+++ b/file.txt | ||||
@@ -1,1 +1,1 @@ | ||||
-first | ||||
+wdir | ||||
$ cd .. | ||||
Adrian Buehlmann
|
r12136 | Testing diff --change when merge: | ||
Yuya Nishihara
|
r26019 | $ cd a | ||
Adrian Buehlmann
|
r12136 | $ for i in 1 2 3 4 5 6 7 8 9 10; do | ||
Mads Kiilerich
|
r16487 | > echo $i >> file.txt | ||
> done | ||||
Adrian Buehlmann
|
r12136 | $ hg commit -m "lots of text" # 3 | ||
$ sed -e 's,^2$,x,' file.txt > file.txt.tmp | ||||
$ mv file.txt.tmp file.txt | ||||
$ hg commit -m "change 2 to x" # 4 | ||||
$ hg up -r 3 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ sed -e 's,^8$,y,' file.txt > file.txt.tmp | ||||
$ mv file.txt.tmp file.txt | ||||
$ hg commit -m "change 8 to y" | ||||
created new head | ||||
$ hg up -C -r 4 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg merge -r 5 | ||||
merging file.txt | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg commit -m "merge 8 to y" # 6 | ||||
$ hg diff --change 5 | ||||
diff -r ae119d680c82 -r 9085c5c02e52 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -6,6 +6,6 @@ | ||||
5 | ||||
6 | ||||
7 | ||||
-8 | ||||
+y | ||||
9 | ||||
10 | ||||
must be similar to 'hg diff --change 5': | ||||
$ hg diff -c 6 | ||||
diff -r 273b50f17c6d -r 979ca961fd2e file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -6,6 +6,6 @@ | ||||
5 | ||||
6 | ||||
7 | ||||
-8 | ||||
+y | ||||
9 | ||||
10 | ||||
Augie Fackler
|
r47177 | merge diff should show only manual edits to a merge: | ||
$ hg diff --merge -c 6 | ||||
(no diff output is expected here) | ||||
Construct an "evil merge" that does something other than just the merge. | ||||
$ hg co ".^" | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg merge -r 5 | ||||
merging file.txt | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ echo 11 >> file.txt | ||||
$ hg ci -m 'merge 8 to y with manual edit of 11' # 7 | ||||
created new head | ||||
$ hg diff -c 7 | ||||
diff -r 273b50f17c6d -r 8ad85e839ba7 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -6,6 +6,7 @@ | ||||
5 | ||||
6 | ||||
7 | ||||
-8 | ||||
+y | ||||
9 | ||||
10 | ||||
+11 | ||||
Contrast with the `hg diff -c 7` version above: only the manual edit shows | ||||
up, making it easy to identify changes someone is otherwise trying to sneak | ||||
into a merge. | ||||
$ hg diff --merge -c 7 | ||||
diff -r 8ad85e839ba7 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -9,3 +9,4 @@ | ||||
y | ||||
9 | ||||
10 | ||||
+11 | ||||
Set up a conflict. | ||||
$ hg co ".^" | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ sed -e 's,^8$,z,' file.txt > file.txt.tmp | ||||
$ mv file.txt.tmp file.txt | ||||
$ hg ci -m 'conflicting edit: 8 to z' | ||||
created new head | ||||
$ echo "this file is new in p1 of the merge" > new-file-p1.txt | ||||
$ hg ci -Am 'new file' new-file-p1.txt | ||||
$ hg log -r . --template 'p1 will be rev {rev}\n' | ||||
p1 will be rev 9 | ||||
$ hg co 5 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo "this file is new in p2 of the merge" > new-file-p2.txt | ||||
$ hg ci -Am 'new file' new-file-p2.txt | ||||
created new head | ||||
$ hg log -r . --template 'p2 will be rev {rev}\n' | ||||
p2 will be rev 10 | ||||
$ hg co -- 9 | ||||
2 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg merge -r 10 | ||||
merging file.txt | ||||
warning: conflicts while merging file.txt! (edit, then use 'hg resolve --mark') | ||||
1 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | ||||
[1] | ||||
$ hg revert file.txt -r . | ||||
$ hg resolve -ma | ||||
(no more unresolved files) | ||||
$ hg commit -m 'merge conflicted edit' | ||||
Without --merge, it's a diff against p1 | ||||
$ hg diff --no-merge -c 11 | ||||
diff -r fd1f17c90d7c -r 5010caab09f6 new-file-p2.txt | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/new-file-p2.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,1 @@ | ||||
+this file is new in p2 of the merge | ||||
With --merge, it's a diff against the conflicted content. | ||||
$ hg diff --merge -c 11 | ||||
diff -r 5010caab09f6 file.txt | ||||
--- a/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -6,12 +6,6 @@ | ||||
5 | ||||
6 | ||||
7 | ||||
-<<<<<<< local: fd1f17c90d7c - test: new file | ||||
z | ||||
-||||||| base | ||||
-8 | ||||
-======= | ||||
-y | ||||
->>>>>>> other: d9e7de69eac3 - test: new file | ||||
9 | ||||
10 | ||||
There must _NOT_ be a .hg/merge directory leftover. | ||||
$ test ! -d .hg/merge | ||||
(No output is expected) | ||||
Mads Kiilerich
|
r16913 | $ cd .. | ||