annotate tests/test-absorb-unfinished.t @ 50195:11e6eee4b063

transaction: use the standard transaction mechanism to backup branch Branch is a bit special : - It currently does not collaborate with the transaction (or any scoping) for writing (this is bad) - It can change without the lock being taken (it is protected by `wlock`) So we rely on the same mechanism as for the backup of the other dirstate file: - we only do a backup if we hold the wlock - we force a backup though the transaction Since "branch" write does not collaborate with the transaction, we cannot back it up "at the last minute" as we do for the dirstate. We have to back it up "upfront". Since we have a backup, the transaction is no longer doing its "quick_abort" and get noisy. Which is quite annoying. To work around this, and to avoid jumping in yet-another-rabbit-hole of "getting branch written properly", I am doing horrible things to the transaction in the meantime. We should be able to get this code go away during the next cycle. In the meantime, I prefer to take this small stop so that we stop abusing the "journal" and "undo" mechanism instead of the proper backup mechanism of the transaction. Also note that this change regress the warning message for the legacy fallback introduced in 2008 when issue902 got fixed in dd5a501cb97f (Mercurial 1.0). I feel like this is fine as issue 902 remains fixed, and this would only affect people deploying a mix of 15 year old Mercurial and modern mercurial, and using branch and rollback extensively.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 23 Feb 2023 15:37:46 +0100
parents 527ce85c2e60
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42128
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
1 $ cat >> $HGRCPATH << EOF
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
2 > [extensions]
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
3 > absorb=
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
4 > EOF
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
5
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
6 Abort absorb if there is an unfinished operation.
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
7
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
8 $ hg init abortunresolved
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
9 $ cd abortunresolved
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
10
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
11 $ echo "foo1" > foo.whole
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
12 $ hg commit -Aqm "foo 1"
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
13
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
14 $ hg update null
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
15 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
16 $ echo "foo2" > foo.whole
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
17 $ hg commit -Aqm "foo 2"
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
18
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
19 $ hg --config extensions.rebase= rebase -r 1 -d 0
45771
f90a5c211251 rebase: change and standarize template for rebase's one-line summary
Martin von Zweigbergk <martinvonz@google.com>
parents: 45215
diff changeset
20 rebasing 1:c3b6dc0e177a tip "foo 2"
42128
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
21 merging foo.whole
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
22 warning: conflicts while merging foo.whole! (edit, then use 'hg resolve --mark')
45150
dc5e5577af39 error: unify the error message formats for 'rebase' and 'unshelve'
Daniel Ploch <dploch@google.com>
parents: 42128
diff changeset
23 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
45826
21733e8c924f errors: add config that lets user get more detailed exit codes
Martin von Zweigbergk <martinvonz@google.com>
parents: 45771
diff changeset
24 [240]
42128
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
25
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
26 $ hg --config extensions.rebase= absorb
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
27 abort: rebase in progress
45215
a253ded5b03d morestatus: mention --stop even if not using --verbose
Kyle Lippincott <spectral@google.com>
parents: 45150
diff changeset
28 (use 'hg rebase --continue', 'hg rebase --abort', or 'hg rebase --stop')
45840
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45826
diff changeset
29 [20]
42128
537a8aeb9977 absorb: aborting if another operation is in progress
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
diff changeset
30