Mercurial > hg
annotate tests/test-convert-hg-sink.t @ 18625:2cbd27f4f3c4
dirstate: walk returns None for files that have a symlink in their path
Previously dirstate.walk would return a stat object for files in the dmap
that have a symlink to a directory in their path. Now it will return None
to indicate that they are no longer considered part of the repository. This
currently only affects walks that traverse the entire directory tree (ex:
hg status) and not walks that only list the contents of the dmap (ex: hg diff).
In a situation like this:
mkdir foo && touch foo/a && hg commit -Am "a"
mv foo bar
ln -s bar foo
'hg status' will now show '! foo/a', whereas before it incorrectly considered
'foo/a' to be unchanged.
In addition to making 'hg status' report the correct information, this will
allow callers to dirstate.walk to not have to detect symlinks themselves,
which can be very expensive.
author | Durham Goode <durham@fb.com> |
---|---|
date | Mon, 04 Feb 2013 14:27:15 -0800 |
parents | 81bf25ddd76a |
children | 77872b002e73 |
rev | line source |
---|---|
5278
70e9a527cc61
convert: avoid dirstate checks; add a test
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
1 |
12525
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
2 $ cat >> $HGRCPATH <<EOF |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
3 > [extensions] |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
4 > convert= |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
5 > [convert] |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
6 > hg.saverev=False |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
7 > EOF |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
8 $ hg init orig |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
9 $ cd orig |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
10 $ echo foo > foo |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
11 $ echo bar > bar |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
12 $ hg ci -qAm 'add foo and bar' |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
13 $ hg rm foo |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
14 $ hg ci -m 'remove foo' |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
15 $ mkdir foo |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
16 $ echo file > foo/file |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
17 $ hg ci -qAm 'add foo/file' |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
18 $ hg tag some-tag |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
19 $ hg log |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
20 changeset: 3:593cbf6fb2b4 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
21 tag: tip |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
22 user: test |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
23 date: Thu Jan 01 00:00:00 1970 +0000 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
24 summary: Added tag some-tag for changeset ad681a868e44 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
25 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
26 changeset: 2:ad681a868e44 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
27 tag: some-tag |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
28 user: test |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
29 date: Thu Jan 01 00:00:00 1970 +0000 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
30 summary: add foo/file |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
31 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
32 changeset: 1:cbba8ecc03b7 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
33 user: test |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
34 date: Thu Jan 01 00:00:00 1970 +0000 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
35 summary: remove foo |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
36 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
37 changeset: 0:327daa9251fa |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
38 user: test |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
39 date: Thu Jan 01 00:00:00 1970 +0000 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
40 summary: add foo and bar |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
41 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
42 $ cd .. |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
43 $ hg convert orig new 2>&1 | grep -v 'subversion python bindings could not be loaded' |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
44 initializing destination new repository |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
45 scanning source... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
46 sorting... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
47 converting... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
48 3 add foo and bar |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
49 2 remove foo |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
50 1 add foo/file |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
51 0 Added tag some-tag for changeset ad681a868e44 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
52 $ cd new |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
53 $ hg out ../orig |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
54 comparing with ../orig |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
55 searching for changes |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
56 no changes found |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
57 [1] |
5278
70e9a527cc61
convert: avoid dirstate checks; add a test
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
58 |
12525
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
59 dirstate should be empty: |
5279
2dbd750b3ddd
convert: clear the dirstate before a conversion, invalidate it afterwards
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5278
diff
changeset
|
60 |
12525
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
61 $ hg debugstate |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
62 $ hg parents -q |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
63 $ hg up -C |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
64 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
65 $ hg copy bar baz |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
66 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
67 put something in the dirstate: |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
68 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
69 $ hg debugstate > debugstate |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
70 $ grep baz debugstate |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
71 a 0 -1 unset baz |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
72 copy: bar -> baz |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
73 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
74 add a new revision in the original repo |
5279
2dbd750b3ddd
convert: clear the dirstate before a conversion, invalidate it afterwards
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5278
diff
changeset
|
75 |
12525
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
76 $ cd ../orig |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
77 $ echo baz > baz |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
78 $ hg ci -qAm 'add baz' |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
79 $ cd .. |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
80 $ hg convert orig new 2>&1 | grep -v 'subversion python bindings could not be loaded' |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
81 scanning source... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
82 sorting... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
83 converting... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
84 0 add baz |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
85 $ cd new |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
86 $ hg out ../orig |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
87 comparing with ../orig |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
88 searching for changes |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
89 no changes found |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
90 [1] |
5279
2dbd750b3ddd
convert: clear the dirstate before a conversion, invalidate it afterwards
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5278
diff
changeset
|
91 |
12525
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
92 dirstate should be the same (no output below): |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
93 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
94 $ hg debugstate > new-debugstate |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
95 $ diff debugstate new-debugstate |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
96 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
97 no copies |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
98 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
99 $ hg up -C |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
100 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
101 $ hg debugrename baz |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
102 baz not renamed |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
103 $ cd .. |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
104 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
105 test tag rewriting |
5279
2dbd750b3ddd
convert: clear the dirstate before a conversion, invalidate it afterwards
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5278
diff
changeset
|
106 |
12525
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
107 $ cat > filemap <<EOF |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
108 > exclude foo |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
109 > EOF |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
110 $ hg convert --filemap filemap orig new-filemap 2>&1 | grep -v 'subversion python bindings could not be loaded' |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
111 initializing destination new-filemap repository |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
112 scanning source... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
113 sorting... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
114 converting... |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
115 4 add foo and bar |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
116 3 remove foo |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
117 2 add foo/file |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
118 1 Added tag some-tag for changeset ad681a868e44 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
119 0 add baz |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
120 $ cd new-filemap |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
121 $ hg tags |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
122 tip 2:6f4fd1df87fb |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
123 some-tag 0:ba8636729451 |
81bf25ddd76a
tests: unify test-convert-hg-sink
Matt Mackall <mpm@selenic.com>
parents:
8693
diff
changeset
|
124 $ cd .. |