Mercurial > hg
annotate tests/test-update-names.t @ 41304:76873548b051 stable
partialdiscovery: avoid `undecided` related computation sooner than necessary
Changeset 1d30be90c move the update of the `undecided` set within the
`partialdiscovery` object in order to clarify the API.
The update to the `undecided` set was unconditional in 1d30be90c and the first
access to the `self.undecided` property triggered the initial computation of
the set of undecided revisions. As a result, the set was computed much
earlier, at a time where less information is available, immediately followed
by an update of this set to remove common revisions.
To fix this regression, we ignore the `undecided` related logic in
`addcommons` when that `undecided` set has not been computed yet. Code that
actually needs to know the `undecided` set will trigger its computation later.
The change has no effects on semantic because the initial computation
`undecided` set takes all knowns `common` into account.
Example performance running `hg debugdiscovery` from a pypy repo missing 10
changesets:
870a89c6909d: 52.3ms (regression parent)
1d30be90c9dc: 72.0ms (regression)
5a5f504a7175: 64.8ms (this fix parent)
this fix: 52.6ms
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Wed, 23 Jan 2019 18:07:42 -0500 |
parents | c8514f858788 |
children |
rev | line source |
---|---|
29480
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
1 Test update logic when there are renames or weird same-name cases between dirs |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
2 and files |
10874
4f11978ae45d
copies: properly visit file context ancestors on working file contexts
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
diff
changeset
|
3 |
12328
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12316
diff
changeset
|
4 Update with local changes across a file rename |
12299
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
5 |
29480
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
6 $ hg init r1 && cd r1 |
12299
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
7 |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
8 $ echo a > a |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
9 $ hg add a |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
10 $ hg ci -m a |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
11 |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
12 $ hg mv a b |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
13 $ hg ci -m rename |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
14 |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
15 $ echo b > b |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
16 $ hg ci -m change |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
17 |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
18 $ hg up -q 0 |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
19 |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
20 $ echo c > a |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
21 |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
22 $ hg up |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
23 merging a and b to b |
26614
ef1eb6df7071
simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents:
16911
diff
changeset
|
24 warning: conflicts while merging b! (edit, then use 'hg resolve --mark') |
12299
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
25 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
a73684df0f8a
tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents:
10874
diff
changeset
|
26 use 'hg resolve' to retry unresolved file merges |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12299
diff
changeset
|
27 [1] |
29480
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
28 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
29 Test update when local untracked directory exists with the same name as a |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
30 tracked file in a commit we are updating to |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
31 $ hg init r2 && cd r2 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
32 $ echo root > root && hg ci -Am root # rev 0 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
33 adding root |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
34 $ echo text > name && hg ci -Am "name is a file" # rev 1 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
35 adding name |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
36 $ hg up 0 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
37 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
38 $ mkdir name |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
39 $ hg up 1 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
40 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
41 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
42 Test update when local untracked directory exists with some files in it and has |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
43 the same name a tracked file in a commit we are updating to. In future this |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
44 should be updated to give an friendlier error message, but now we should just |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
45 make sure that this does not erase untracked data |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
46 $ hg up 0 |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
47 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
48 $ mkdir name |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
49 $ echo text > name/file |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
50 $ hg st |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
51 ? name/file |
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
52 $ hg up 1 |
39593
c8514f858788
tests: stabilize change for handling not quoting non-empty-directory
Matt Harbison <matt_harbison@yahoo.com>
parents:
39577
diff
changeset
|
53 abort: Unlinking directory not permitted: *$TESTTMP/r1/r2/name* (glob) (windows !) |
39577
cb1329738d64
tests: handle Python 3 not quoting non-empty-directory error
Augie Fackler <augie@google.com>
parents:
39478
diff
changeset
|
54 abort: Directory not empty: '?\$TESTTMP/r1/r2/name'? (re) (no-windows !) |
39196
8c6775e812d8
merge: do not delete untracked files silently (issue5962)
Yuya Nishihara <yuya@tcha.org>
parents:
34942
diff
changeset
|
55 [255] |
8c6775e812d8
merge: do not delete untracked files silently (issue5962)
Yuya Nishihara <yuya@tcha.org>
parents:
34942
diff
changeset
|
56 $ cat name/file |
8c6775e812d8
merge: do not delete untracked files silently (issue5962)
Yuya Nishihara <yuya@tcha.org>
parents:
34942
diff
changeset
|
57 text |
29480
1e4512eac59e
update: teach hg to override untracked dir with a tracked file on update
Kostia Balytskyi <ikostia@fb.com>
parents:
26614
diff
changeset
|
58 $ cd .. |
29629
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
59 |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
60 #if symlink |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
61 |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
62 Test update when two commits have symlinks that point to different folders |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
63 $ hg init r3 && cd r3 |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
64 $ echo root > root && hg ci -Am root |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
65 adding root |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
66 $ mkdir folder1 && mkdir folder2 |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
67 $ ln -s folder1 folder |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
68 $ hg ci -Am "symlink to folder1" |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
69 adding folder |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
70 $ rm folder |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
71 $ ln -s folder2 folder |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
72 $ hg ci -Am "symlink to folder2" |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
73 $ hg up 1 |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
74 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
75 $ cd .. |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
76 |
b33c0c38d68f
update: fix bug when update tries to modify folder symlink
Kostia Balytskyi <ikostia@fb.com>
parents:
29480
diff
changeset
|
77 #endif |
30172
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
78 |
30230
46a0203dfb89
tests: run "cwd was removed" test only if cwd can actually be removed
Yuya Nishihara <yuya@tcha.org>
parents:
30172
diff
changeset
|
79 #if rmcwd |
46a0203dfb89
tests: run "cwd was removed" test only if cwd can actually be removed
Yuya Nishihara <yuya@tcha.org>
parents:
30172
diff
changeset
|
80 |
30172
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
81 Test that warning is printed if cwd is deleted during update |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
82 $ hg init r4 && cd r4 |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
83 $ mkdir dir |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
84 $ cd dir |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
85 $ echo a > a |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
86 $ echo b > b |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
87 $ hg add a b |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
88 $ hg ci -m "file and dir" |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
89 $ hg up -q null |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
90 current directory was removed |
90a6c18a7c1d
update: warn if cwd was deleted
Stanislau Hlebik <stash@fb.com>
parents:
29629
diff
changeset
|
91 (consider changing to repo root: $TESTTMP/r1/r4) |
30230
46a0203dfb89
tests: run "cwd was removed" test only if cwd can actually be removed
Yuya Nishihara <yuya@tcha.org>
parents:
30172
diff
changeset
|
92 |
46a0203dfb89
tests: run "cwd was removed" test only if cwd can actually be removed
Yuya Nishihara <yuya@tcha.org>
parents:
30172
diff
changeset
|
93 #endif |