##// END OF EJS Templates
localrepo: make journal.dirstate contain in-memory changes before transaction...
localrepo: make journal.dirstate contain in-memory changes before transaction Before this patch, in-memory dirstate changes aren't written out at opening transaction, even though 'journal.dirstate' is created directly from '.hg/dirstate'. Therefore, subsequent 'hg rollback' uses incomplete 'undo.dirstate' to restore dirstate, if dirstate is changed and isn't written out before opening transaction. In cases below, the condition "dirstate is changed and isn't written out before opening transaction" isn't satisfied and this problem doesn't appear: - "wlock scope" and "transaction scope" are almost equivalent e.g. 'commit --amend', 'import' and so on - dirstate changes are written out before opening transaction e.g. 'rebase' (via 'dirstateguard') and 'commit -A' (by separated wlock scopes) On the other hand, 'backout' may satisfy the condition above. To make 'journal.dirstate' contain in-memory changes before opening transaction, this patch explicitly invokes 'dirstate.write()' in 'localrepository.transaction()'. 'dirstate.write()' is placed before not "writing journal files out" but "invoking pretxnopen hooks" for visibility of dirstate changes to external hook processes. BTW, in the test script, 'touch -t 200001010000' and 'hg status' are invoked to make file 'c' surely clean in dirstate, because "clean but unsure" files indirectly cause 'dirstate.write()' at 'repo.status()' in 'repo.commit()' (see fe03f522dda9 for detail) and prevents from certainly reproducing the issue.

File last commit:

r24496:9a4ef1b1 default
r25878:800e090e stable
Show More
test-diff-unified.t
336 lines | 4.5 KiB | text/troff | Tads3Lexer
/ tests / test-diff-unified.t
Adrian Buehlmann
tests: unify test-diff-unified
r12141 $ hg init repo
$ cd repo
$ cat > a <<EOF
> c
> c
> a
> a
> b
> a
> a
> c
> c
> EOF
$ hg ci -Am adda
adding a
$ cat > a <<EOF
> c
> c
> a
> a
> dd
> a
> a
> c
> c
> EOF
default context
$ hg diff --nodates
diff -r cf9f4ba66af2 a
--- a/a
+++ b/a
@@ -2,7 +2,7 @@
c
a
a
-b
+dd
a
a
c
invalid --unified
$ hg diff --nodates -U foo
abort: diff context lines count must be an integer, not 'foo'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-diff-unified
r12141
$ hg diff --nodates -U 2
diff -r cf9f4ba66af2 a
--- a/a
+++ b/a
@@ -3,5 +3,5 @@
a
a
-b
+dd
a
a
$ hg --config diff.unified=2 diff --nodates
diff -r cf9f4ba66af2 a
--- a/a
+++ b/a
@@ -3,5 +3,5 @@
a
a
-b
+dd
a
a
$ hg diff --nodates -U 1
diff -r cf9f4ba66af2 a
--- a/a
+++ b/a
@@ -4,3 +4,3 @@
a
-b
+dd
a
invalid diff.unified
$ hg --config diff.unified=foo diff --nodates
abort: diff context lines count must be an integer, not 'foo'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-diff-unified
r12141
Siddharth Agarwal
diff: add a --noprefix option...
r23298 noprefix config and option
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297
$ hg --config diff.noprefix=True diff --nodates
diff -r cf9f4ba66af2 a
Siddharth Agarwal
mdiff.unidiff: add support for noprefix
r23299 --- a
+++ a
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297 @@ -2,7 +2,7 @@
c
a
a
-b
+dd
a
a
c
Siddharth Agarwal
diff: add a --noprefix option...
r23298 $ hg diff --noprefix --nodates
diff -r cf9f4ba66af2 a
Siddharth Agarwal
mdiff.unidiff: add support for noprefix
r23299 --- a
+++ a
Siddharth Agarwal
diff: add a --noprefix option...
r23298 @@ -2,7 +2,7 @@
c
a
a
-b
+dd
a
a
c
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297
Siddharth Agarwal
diff: add a --noprefix option...
r23298 noprefix config disabled in plain mode, but option still enabled
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297
$ HGPLAIN=1 hg --config diff.noprefix=True diff --nodates
diff -r cf9f4ba66af2 a
--- a/a
+++ b/a
@@ -2,7 +2,7 @@
c
a
a
-b
+dd
a
a
c
Siddharth Agarwal
diff: add a --noprefix option...
r23298 $ HGPLAIN=1 hg diff --noprefix --nodates
diff -r cf9f4ba66af2 a
Siddharth Agarwal
mdiff.unidiff: add support for noprefix
r23299 --- a
+++ a
Siddharth Agarwal
diff: add a --noprefix option...
r23298 @@ -2,7 +2,7 @@
c
a
a
-b
+dd
a
a
c
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912 $ cd ..
Nicolas Venegas
mdiff/patch: fix bad hunk handling for unified diffs with zero context...
r15462 0 lines of context hunk header matches gnu diff hunk header
$ hg init diffzero
$ cd diffzero
$ cat > f1 << EOF
> c2
> c4
> c5
> EOF
$ hg commit -Am0
adding f1
$ cat > f2 << EOF
> c1
> c2
> c3
> c4
> EOF
$ mv f2 f1
$ hg diff -U0 --nodates
diff -r 55d8ff78db23 f1
--- a/f1
+++ b/f1
@@ -0,0 +1,1 @@
+c1
@@ -1,0 +3,1 @@
+c3
@@ -3,1 +4,0 @@
-c5
Adrian Buehlmann
tests: unify test-diff-unified
r12141
Nicolas Venegas
mdiff/patch: fix bad hunk handling for unified diffs with zero context...
r15462 $ hg diff -U0 --nodates --git
diff --git a/f1 b/f1
--- a/f1
+++ b/f1
@@ -0,0 +1,1 @@
+c1
@@ -1,0 +3,1 @@
+c3
@@ -3,1 +4,0 @@
-c5
$ hg diff -U0 --nodates -p
diff -r 55d8ff78db23 f1
--- a/f1
+++ b/f1
@@ -0,0 +1,1 @@
+c1
@@ -1,0 +3,1 @@ c2
+c3
@@ -3,1 +4,0 @@ c4
-c5
Patrick Mezard
mdiff: fix diff header generation for files with spaces (issue3357)...
r16362
$ echo a > f1
$ hg ci -m movef2
Test diff headers terminating with TAB when necessary (issue3357)
Regular diff --nodates, file creation
$ hg mv f1 'f 1'
$ echo b > 'f 1'
$ hg diff --nodates 'f 1'
diff -r 7574207d0d15 f 1
--- /dev/null
+++ b/f 1
@@ -0,0 +1,1 @@
+b
Git diff, adding space
$ hg diff --git
diff --git a/f1 b/f 1
rename from f1
rename to f 1
--- a/f1
+++ b/f 1
@@ -1,1 +1,1 @@
-a
+b
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297 Git diff with noprefix
$ hg --config diff.noprefix=True diff --git --nodates
Siddharth Agarwal
patch.trydiff: add support for noprefix
r23300 diff --git f1 f 1
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297 rename from f1
rename to f 1
Siddharth Agarwal
mdiff.unidiff: add support for noprefix
r23299 --- f1
+++ f 1
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297 @@ -1,1 +1,1 @@
-a
+b
Siddharth Agarwal
diff: add a --noprefix option...
r23298 noprefix config disabled in plain mode, but option still enabled
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297
$ HGPLAIN=1 hg --config diff.noprefix=True diff --git --nodates
diff --git a/f1 b/f 1
rename from f1
rename to f 1
--- a/f1
+++ b/f 1
@@ -1,1 +1,1 @@
-a
+b
Siddharth Agarwal
diff: add a --noprefix option...
r23298 $ HGPLAIN=1 hg diff --git --noprefix --nodates
Siddharth Agarwal
patch.trydiff: add support for noprefix
r23300 diff --git f1 f 1
Siddharth Agarwal
diff: add a --noprefix option...
r23298 rename from f1
rename to f 1
Siddharth Agarwal
mdiff.unidiff: add support for noprefix
r23299 --- f1
+++ f 1
Siddharth Agarwal
diff: add a --noprefix option...
r23298 @@ -1,1 +1,1 @@
-a
+b
Siddharth Agarwal
patch.diffopts: add support for noprefix...
r23297
Patrick Mezard
mdiff: fix diff header generation for files with spaces (issue3357)...
r16362 Regular diff --nodates, file deletion
$ hg ci -m addspace
$ hg mv 'f 1' f1
$ echo a > f1
$ hg diff --nodates 'f 1'
diff -r ca50fe67c9c7 f 1
--- a/f 1
+++ /dev/null
@@ -1,1 +0,0 @@
-b
Git diff, removing space
$ hg diff --git
diff --git a/f 1 b/f1
rename from f 1
rename to f1
--- a/f 1
+++ b/f1
@@ -1,1 +1,1 @@
-b
+a
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912
Mathias De Maré
tests: add testing for diff.showfunc...
r24496 showfunc diff
$ cat > f1 << EOF
> int main() {
> int a = 0;
> int b = 1;
> int c = 2;
> int d = 3;
> return a + b + c + d;
> }
> EOF
$ hg commit -m addfunction
$ cat > f1 << EOF
> int main() {
> int a = 0;
> int b = 1;
> int c = 2;
> int e = 3;
> return a + b + c + e;
> }
> EOF
$ hg diff --git
diff --git a/f1 b/f1
--- a/f1
+++ b/f1
@@ -2,6 +2,6 @@
int a = 0;
int b = 1;
int c = 2;
- int d = 3;
- return a + b + c + d;
+ int e = 3;
+ return a + b + c + e;
}
$ hg diff --config diff.showfunc=True --git
diff --git a/f1 b/f1
--- a/f1
+++ b/f1
@@ -2,6 +2,6 @@ int main() {
int a = 0;
int b = 1;
int c = 2;
- int d = 3;
- return a + b + c + d;
+ int e = 3;
+ return a + b + c + e;
}
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912 $ cd ..