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

r24471:1ff35d76 default
r25878:800e090e stable
Show More
test-mq-subrepo-svn.t
56 lines | 1.2 KiB | text/troff | Tads3Lexer
/ tests / test-mq-subrepo-svn.t
Matt Mackall
tests: replace exit 80 with #require
r22046 #require svn13
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
> [extensions]
> mq =
> [diff]
> nodates = 1
> EOF
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300
Kevin Bullock
test-subrepo-mq-svn.t: correct comment...
r13326 fn to create new repository, and cd into it
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300 $ mkrepo() {
> hg init $1
> cd $1
> hg qinit
> }
handle svn subrepos safely
$ svnadmin create svn-repo-2499
Mads Kiilerich
tests: cleanup of svn url handling...
r17033
$ SVNREPOPATH=`pwd`/svn-repo-2499/project
#if windows
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ SVNREPOURL=file:///`$PYTHON -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"`
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 #else
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ SVNREPOURL=file://`$PYTHON -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"`
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 #endif
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300 $ mkdir -p svn-project-2499/trunk
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 $ svn import -m 'init project' svn-project-2499 "$SVNREPOURL"
Eduard-Cristian Stefan
test-mq-subrepo-svn: enable for Windows
r16894 Adding svn-project-2499/trunk (glob)
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300
Committed revision 1.
qnew on repo w/svn subrepo
$ mkrepo repo-2499-svn-subrepo
Mads Kiilerich
tests: cleanup of svn url handling...
r17033 $ svn co "$SVNREPOURL"/trunk sub
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300 Checked out revision 1.
$ echo 'sub = [svn]sub' >> .hgsub
$ hg add .hgsub
Matt Mackall
tests: fixes for svn 1.4.2
r13410 $ hg status -S -X '**/format'
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300 A .hgsub
$ hg qnew -m0 0.diff
$ cd sub
$ echo a > a
$ svn add a
A a
$ svn st
Matt Mackall
tests: fixes for svn 1.4.2
r13410 A* a (glob)
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300 $ cd ..
$ hg status -S # doesn't show status for svn subrepos (yet)
$ hg qnew -m1 1.diff
FUJIWARA Katsunori
subrepo: add bailifchanged to centralize raising Abort if subrepo is dirty...
r24471 abort: uncommitted changes in subrepository 'sub'
Kevin Bullock
subrepo: separate out mq+svn subrepo tests...
r13300 [255]
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..