annotate tests/test-dirstate-backup.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 ffd19d73518d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34939
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
1 Set up
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
2
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
3 $ hg init repo
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
4 $ cd repo
49990
ffd19d73518d test: create some history in test-dirstate-backup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45827
diff changeset
5 $ echo a > a
ffd19d73518d test: create some history in test-dirstate-backup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45827
diff changeset
6 $ hg add a
ffd19d73518d test: create some history in test-dirstate-backup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45827
diff changeset
7 $ hg commit -m a
34939
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
8
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
9 Try to import an empty patch
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
10
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
11 $ hg import --no-commit - <<EOF
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
12 > EOF
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
13 applying patch from stdin
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
14 abort: stdin: no diffs found
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 34940
diff changeset
15 [10]
34939
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
16
34940
c2b30348930f dirstate: clean up when restoring identical backups
Mark Thomas <mbthomas@fb.com>
parents: 34939
diff changeset
17 No dirstate backups are left behind
34939
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
18
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
19 $ ls .hg/dirstate* | sort
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
20 .hg/dirstate
2c80a864e83e tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
21