Mercurial > hg
annotate tests/test-dirstate-backup.t @ 34940:c2b30348930f stable
dirstate: clean up when restoring identical backups
When a dirstate backup is restored, it is possible that no actual changes to
the dirstate have been made. In this case, the backup is still a hardlink
to the original dirstate.
Unfortunately, `os.rename` silently fails (nothing happens, and no error
occurs) when `src` and `dst` are hardlinks to the same file. As a result,
the backup is left lying around. Over time, these files accumulate.
When restoring dirstate backups, check if the backup and the dirstate are
the same file, and if so, just delete the backup.
Differential Revision: https://phab.mercurial-scm.org/D1201
author | Mark Thomas <mbthomas@fb.com> |
---|---|
date | Fri, 20 Oct 2017 05:53:35 -0700 |
parents | 2c80a864e83e |
children | 8d72e29ad1e0 |
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 |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
5 |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
6 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
|
7 |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
8 $ 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
|
9 > EOF |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
10 applying patch from stdin |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
11 abort: stdin: no diffs found |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
12 [255] |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
13 |
34940
c2b30348930f
dirstate: clean up when restoring identical backups
Mark Thomas <mbthomas@fb.com>
parents:
34939
diff
changeset
|
14 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
|
15 |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
16 $ ls .hg/dirstate* | sort |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
17 .hg/dirstate |
2c80a864e83e
tests: add a test demonstrating failure to clean up dirstate backups
Mark Thomas <mbthomas@fb.com>
parents:
diff
changeset
|
18 |