annotate tests/test-execute-bit.t @ 24787:9d5c27890790

largefiles: for update -C, only update largefiles when necessary Before, a --clean update with largefiles would use the "optimization" that it didn't read hashes from standin files before and after the update. Instead of trusting the content of the standin files, it would rehash all the actual largefiles that lfdirstate reported clean and update the standins that didn't have the expected content. It could thus in some "impossible" situations automatically recover from some "largefile got out sync with its standin" issues (even there apparently still were weird corner cases where it could fail). This extra checking is similar to what core --clean intentionally do not do, and it made update --clean unbearable slow. Usually in core Mercurial, --clean will rely on the dirstate to find the files it should update. (It is thus intentionally possible (when trying to trick the system or if there should be bugs) to end up in situations where --clean not will restore the working directory content correctly.) Checking every file when we "know" it is ok is however not an option - that would be too slow. Instead, trust the content of the standin files. Use the same logic for --clean as for linear updates and trust the dirstate and that our "logic" will keep them in sync. It is much cheaper to just rehash the largefiles reported dirty by a status walk and read all standins than to hash largefiles. Most of the changes are just a change of indentation now when the different kinds of updates no longer are handled that differently. Standins for added files are however only written when doing a normal update, while deleted and removed files only will be updated for --clean updates.
author Mads Kiilerich <madski@unity3d.com>
date Wed, 15 Apr 2015 15:22:16 -0400
parents 7a9cbb315d84
children b7fde9237c92
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 18334
diff changeset
1 #require execbit
5490
bf2bb53e5d2b See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
2
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
3 $ hg init
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
4 $ echo a > a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
5 $ hg ci -Am'not executable'
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
6 adding a
5495
363ba35f55bd test-execute-bit: skip if execute-bit is not supported
Patrick Mezard <pmezard@gmail.com>
parents: 5490
diff changeset
7
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
8 $ chmod +x a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
9 $ hg ci -m'executable'
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
10 $ hg id
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
11 79abf14474dc tip
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
12
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
13 Make sure we notice the change of mode if the cached size == -1:
5490
bf2bb53e5d2b See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
14
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
15 $ hg rm a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
16 $ hg revert -r 0 a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
17 $ hg debugstate
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
18 n 0 -1 unset a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
19 $ hg status
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
20 M a
5490
bf2bb53e5d2b See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
21
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
22 $ hg up 0
18334
44bda93df90e merge: changing the mode of a file is also an update
Mads Kiilerich <mads@kiilerich.com>
parents: 12190
diff changeset
23 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
24 $ hg id
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
25 d69afc33ff8a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
26 $ test -x a && echo executable -- bad || echo not executable -- good
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
27 not executable -- good
6158
23ffe82615d8 repo.status: also compare flags for files in the lookup list.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5495
diff changeset
28