Mercurial > hg
annotate tests/test-revert-unknown.t @ 28240:1ac8ce137377
changegroup: fix treemanifests on merges
The current code for generating treemanifest revisions takes the list
of files in the changeset and finds the directories from them. This
does not work for merges, since a merge may pick file A from one side
and file B from another and neither of them would appear in the
changeset's "files" list, but the manifest would still change.
Fix this by instead walking the root manifest log for all needed
revisions, storing all needed file and subdirectory revisions, then
recursively visiting the subdirectories. This also turns out to be
faster: cloning a version of hg core converted to treemanifests went
from ~28s to ~19s (timing somewhat unfair: before this patch, timed
until crash; after this patch, timed until manifests complete).
The new algorithm is used only on treemanifest repos. Although it
works equally well on flat manifests, we leave the iteration over
files in the changeset for flat manifests for now.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 12 Feb 2016 23:09:09 -0800 |
parents | 4c94b6d0fb1c |
children | 5c2a4f37eace |
rev | line source |
---|---|
12111
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
1 $ hg init |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
2 $ touch unknown |
1236
67a28636ea64
Fix bug with co -C across branches, update tests
mpm@selenic.com
parents:
diff
changeset
|
3 |
12111
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
4 $ touch a |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
5 $ hg add a |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
12111
diff
changeset
|
6 $ hg ci -m "1" |
1236
67a28636ea64
Fix bug with co -C across branches, update tests
mpm@selenic.com
parents:
diff
changeset
|
7 |
12111
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
8 $ touch b |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
9 $ hg add b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
12111
diff
changeset
|
10 $ hg ci -m "2" |
12111
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
11 |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
12 Should show unknown |
1236
67a28636ea64
Fix bug with co -C across branches, update tests
mpm@selenic.com
parents:
diff
changeset
|
13 |
12111
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
14 $ hg status |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
15 ? unknown |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
16 $ hg revert -r 0 --all |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
17 removing b |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
18 |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
19 Should show unknown and b removed |
1236
67a28636ea64
Fix bug with co -C across branches, update tests
mpm@selenic.com
parents:
diff
changeset
|
20 |
12111
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
21 $ hg status |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
22 R b |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
23 ? unknown |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
24 |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
25 Should show a and unknown |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
26 |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
27 $ ls |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
28 a |
327dee7f7327
tests: unify test-revert-unknown
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
2982
diff
changeset
|
29 unknown |