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

r24720:c560d8c6 default
r25878:800e090e stable
Show More
test-cat.t
70 lines | 1.1 KiB | text/troff | Tads3Lexer
Martin Geisler
tests: unify test-cat
r11874 $ hg init
$ echo 0 > a
$ echo 0 > b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -A -m m
Martin Geisler
tests: unify test-cat
r11874 adding a
adding b
$ hg rm a
$ hg cat a
0
$ hg cat --decode a # more tests in test-encode
0
$ echo 1 > b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -m m
Martin Geisler
tests: unify test-cat
r11874 $ echo 2 > b
$ hg cat -r 0 a
0
$ hg cat -r 0 b
0
$ hg cat -r 1 a
Martin Geisler
tests: remove unneeded -d flags...
r12156 a: no such file in rev 7040230c159c
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Martin Geisler
tests: unify test-cat
r11874 $ hg cat -r 1 b
1
Patrick Mezard
fileset: fix generator vs list bug in fast path...
r17371
Martin von Zweigbergk
context.walk: walk all files when file and '.' given...
r24381 Test multiple files
Patrick Mezard
fileset: fix generator vs list bug in fast path...
r17371
$ echo 3 > c
$ hg ci -Am addmore c
Martin von Zweigbergk
context.walk: walk all files when file and '.' given...
r24381 $ hg cat b c
1
3
$ hg cat .
1
3
$ hg cat . c
1
3
Test fileset
Patrick Mezard
fileset: fix generator vs list bug in fast path...
r17371 $ hg cat 'set:not(b) or a'
3
$ hg cat 'set:c or b'
1
3
Matt Harbison
cat: explicitly document the supported formatter rules...
r21078 $ mkdir tmp
$ hg cat --output tmp/HH_%H c
$ hg cat --output tmp/RR_%R c
$ hg cat --output tmp/h_%h c
$ hg cat --output tmp/r_%r c
$ hg cat --output tmp/%s_s c
$ hg cat --output tmp/%d%%_d c
$ hg cat --output tmp/%p_p c
$ hg log -r . --template "{rev}: {node|short}\n"
2: 45116003780e
$ find tmp -type f | sort
tmp/.%_d
tmp/HH_45116003780e3678b333fb2c99fa7d559c8457e9
tmp/RR_2
tmp/c_p
tmp/c_s
tmp/h_45116003780e
tmp/r_2
Yuya Nishihara
cat: disable optimization of single file case for workingctx...
r24720 Test working directory
$ echo b-wdir > b
$ hg cat -r 'wdir()' b
b-wdir