Mercurial > hg
annotate tests/test-hgignore.t @ 48068:bf8837e3d7ce
dirstate: Remove the flat Rust DirstateMap implementation
Before this changeset we had two Rust implementations of `DirstateMap`.
This removes the "flat" DirstateMap so that the "tree" DirstateMap is always
used when Rust enabled. This simplifies the code a lot, and will enable
(in the next changeset) further removal of a trait abstraction.
This is a performance regression when:
* Rust is enabled, and
* The repository uses the legacy dirstate-v1 file format, and
* For `hg status`, unknown files are not listed (such as with `-mard`)
The regression is about 100 milliseconds for `hg status -mard` on a
semi-large repository (mozilla-central), from ~320ms to ~420ms.
We deem this to be small enough to be worth it.
The new dirstate-v2 is still experimental at this point, but we aim to
stabilize it (though not yet enable it by default for new repositories)
in Mercurial 6.0. Eventually, upgrating repositories to dirsate-v2 will
eliminate this regression (and enable other performance improvements).
# Background
The flat DirstateMap was introduced with the first Rust implementation of the
status algorithm. It works similarly to the previous Python + C one, with a
single `HashMap` that associates file paths to a `DirstateEntry` (where Python
has a dict).
We later added the tree DirstateMap where the root of the tree contains nodes
for files and directories that are directly at the root of the repository,
and nodes for directories can contain child nodes representing the files and
directly that *they* contain directly. The shape of this tree mirrors that of
the working directory in the filesystem. This enables the status algorithm to
traverse this tree in tandem with traversing the filesystem tree, which in
turns enables a more efficient algorithm.
Furthermore, the new dirstate-v2 file format is also based on a tree of the
same shape. The tree DirstateMap can access a dirstate-v2 file without parsing
it: binary data in a single large (possibly memory-mapped) bytes buffer is
traversed on demand. This allows `DirstateMap` creation to take `O(1)` time.
(Mutation works by creating new in-memory nodes with copy-on-write semantics,
and serialization is append-mostly.)
The tradeoff is that for "legacy" repositories that use the dirstate-v1 file
format, parsing that file into a tree DirstateMap takes more time. Profiling
shows that this time is dominated by `HashMap`. For a dirstate containing `F`
files with an average `D` directory depth, the flat DirstateMap does parsing
in `O(F)` number of HashMap operations but the tree DirstateMap in `O(F × D)`
operations, since each node has its own HashMap containing its child nodes.
This slower costs ~140ms on an old snapshot of mozilla-central, and ~80ms
on an old snapshot of the Netbeans repository.
The status algorithm is faster, but with `-mard` (when not listing unknown
files) it is typically not faster *enough* to compensate the slower parsing.
Both Rust implementations are always faster than the Python + C implementation
# Benchmark results
All benchmarks are run on changeset 98c0408324e6, with repositories that use
the dirstate-v1 file format, on a server with 4 CPU cores and 4 CPU threads
(no HyperThreading).
`hg status` benchmarks show wall clock times of the entire command as the
average and standard deviation of serveral runs, collected by
https://github.com/sharkdp/hyperfine and reformated.
Parsing benchmarks are wall clock time of the Rust function that converts a
bytes buffer of the dirstate file into the `DirstateMap` data structure as
used by the status algorithm. A single run each, collected by running
`hg status` this environment variable:
RUST_LOG=hg::dirstate::dirstate_map=trace,hg::dirstate_tree::dirstate_map=trace
Benchmark 1: Rust flat DirstateMap → Rust tree DirstateMap
hg status
mozilla-clean 562.3 ms ± 2.0 ms → 462.5 ms ± 0.6 ms 1.22 ± 0.00 times faster
mozilla-dirty 859.6 ms ± 2.2 ms → 719.5 ms ± 3.2 ms 1.19 ± 0.01 times faster
mozilla-ignored 558.2 ms ± 3.0 ms → 457.9 ms ± 2.9 ms 1.22 ± 0.01 times faster
mozilla-unknowns 859.4 ms ± 5.7 ms → 716.0 ms ± 4.7 ms 1.20 ± 0.01 times faster
netbeans-clean 336.5 ms ± 0.9 ms → 339.5 ms ± 0.4 ms 0.99 ± 0.00 times faster
netbeans-dirty 491.4 ms ± 1.6 ms → 475.1 ms ± 1.2 ms 1.03 ± 0.00 times faster
netbeans-ignored 343.7 ms ± 1.0 ms → 347.8 ms ± 0.4 ms 0.99 ± 0.00 times faster
netbeans-unknowns 484.3 ms ± 1.0 ms → 466.0 ms ± 1.2 ms 1.04 ± 0.00 times faster
hg status -mard
mozilla-clean 317.3 ms ± 0.6 ms → 422.5 ms ± 1.2 ms 0.75 ± 0.00 times faster
mozilla-dirty 315.4 ms ± 0.6 ms → 417.7 ms ± 1.1 ms 0.76 ± 0.00 times faster
mozilla-ignored 314.6 ms ± 0.6 ms → 417.4 ms ± 1.0 ms 0.75 ± 0.00 times faster
mozilla-unknowns 312.9 ms ± 0.9 ms → 417.3 ms ± 1.6 ms 0.75 ± 0.00 times faster
netbeans-clean 212.0 ms ± 0.6 ms → 283.6 ms ± 0.8 ms 0.75 ± 0.00 times faster
netbeans-dirty 211.4 ms ± 1.0 ms → 283.4 ms ± 1.6 ms 0.75 ± 0.01 times faster
netbeans-ignored 211.4 ms ± 0.9 ms → 283.9 ms ± 0.8 ms 0.74 ± 0.01 times faster
netbeans-unknowns 211.1 ms ± 0.6 ms → 283.4 ms ± 1.0 ms 0.74 ± 0.00 times faster
Parsing
mozilla-clean 38.4ms → 177.6ms
mozilla-dirty 38.8ms → 177.0ms
mozilla-ignored 38.8ms → 178.0ms
mozilla-unknowns 38.7ms → 176.9ms
netbeans-clean 16.5ms → 97.3ms
netbeans-dirty 16.5ms → 98.4ms
netbeans-ignored 16.9ms → 97.4ms
netbeans-unknowns 16.9ms → 96.3ms
Benchmark 2: Python + C dirstatemap → Rust tree DirstateMap
hg status
mozilla-clean 1261.0 ms ± 3.6 ms → 461.1 ms ± 0.5 ms 2.73 ± 0.00 times faster
mozilla-dirty 2293.4 ms ± 9.1 ms → 719.6 ms ± 3.6 ms 3.19 ± 0.01 times faster
mozilla-ignored 1240.4 ms ± 2.3 ms → 457.7 ms ± 1.9 ms 2.71 ± 0.00 times faster
mozilla-unknowns 2283.3 ms ± 9.0 ms → 719.7 ms ± 3.8 ms 3.17 ± 0.01 times faster
netbeans-clean 879.7 ms ± 3.5 ms → 339.9 ms ± 0.5 ms 2.59 ± 0.00 times faster
netbeans-dirty 1257.3 ms ± 4.7 ms → 474.6 ms ± 1.6 ms 2.65 ± 0.01 times faster
netbeans-ignored 943.9 ms ± 1.9 ms → 347.3 ms ± 1.1 ms 2.72 ± 0.00 times faster
netbeans-unknowns 1188.1 ms ± 5.0 ms → 465.2 ms ± 2.3 ms 2.55 ± 0.01 times faster
hg status -mard
mozilla-clean 903.2 ms ± 3.6 ms → 423.4 ms ± 2.2 ms 2.13 ± 0.01 times faster
mozilla-dirty 884.6 ms ± 4.5 ms → 417.3 ms ± 1.4 ms 2.12 ± 0.01 times faster
mozilla-ignored 881.9 ms ± 1.3 ms → 417.3 ms ± 0.8 ms 2.11 ± 0.00 times faster
mozilla-unknowns 878.5 ms ± 1.9 ms → 416.4 ms ± 0.9 ms 2.11 ± 0.00 times faster
netbeans-clean 434.9 ms ± 1.8 ms → 284.0 ms ± 0.8 ms 1.53 ± 0.01 times faster
netbeans-dirty 434.1 ms ± 0.8 ms → 283.1 ms ± 0.8 ms 1.53 ± 0.00 times faster
netbeans-ignored 431.7 ms ± 1.1 ms → 283.6 ms ± 1.8 ms 1.52 ± 0.01 times faster
netbeans-unknowns 433.0 ms ± 1.3 ms → 283.5 ms ± 0.7 ms 1.53 ± 0.00 times faster
Differential Revision: https://phab.mercurial-scm.org/D11516
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Mon, 27 Sep 2021 12:09:15 +0200 |
parents | ff97e793ed36 |
children | b4f83c9e7905 |
rev | line source |
---|---|
48068
bf8837e3d7ce
dirstate: Remove the flat Rust DirstateMap implementation
Simon Sapin <simon.sapin@octobus.net>
parents:
47674
diff
changeset
|
1 #testcases dirstate-v1 dirstate-v2 |
47129
93eb6c8035a9
dirstate-tree: Add a dirstate-v1-tree variant of some tests
Simon Sapin <simon.sapin@octobus.net>
parents:
42864
diff
changeset
|
2 |
47281
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
3 #if dirstate-v2 |
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
4 #require rust |
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
5 $ echo '[format]' >> $HGRCPATH |
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
6 $ echo 'exp-dirstate-v2=1' >> $HGRCPATH |
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
7 #endif |
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
8 |
25869
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
9 $ hg init ignorerepo |
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
10 $ cd ignorerepo |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
11 |
32605
e6ff007e107e
match: introduce nevermatcher for when no ignore files are present
Siddharth Agarwal <sid0@fb.com>
parents:
32502
diff
changeset
|
12 debugignore with no hgignore should be deterministic: |
e6ff007e107e
match: introduce nevermatcher for when no ignore files are present
Siddharth Agarwal <sid0@fb.com>
parents:
32502
diff
changeset
|
13 $ hg debugignore |
e6ff007e107e
match: introduce nevermatcher for when no ignore files are present
Siddharth Agarwal <sid0@fb.com>
parents:
32502
diff
changeset
|
14 <nevermatcher> |
e6ff007e107e
match: introduce nevermatcher for when no ignore files are present
Siddharth Agarwal <sid0@fb.com>
parents:
32502
diff
changeset
|
15 |
12399
4fee1fd3de9a
tests: added a short description to issue numbers
Martin Geisler <mg@aragost.com>
parents:
12376
diff
changeset
|
16 Issue562: .hgignore requires newline at end: |
4439
4e521a3ee5eb
Test issue 562: .hgignore requires newline at end
Patrick Mezard <pmezard@gmail.com>
parents:
2009
diff
changeset
|
17 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
18 $ touch foo |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
19 $ touch bar |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
20 $ touch baz |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
21 $ cat > makeignore.py <<EOF |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
22 > f = open(".hgignore", "w") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
23 > f.write("ignore\n") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
24 > f.write("foo\n") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
25 > # No EOL here |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
26 > f.write("bar") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
27 > f.close() |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
28 > EOF |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
29 |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
30 $ "$PYTHON" makeignore.py |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
31 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
32 Should display baz only: |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
33 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
34 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
35 ? baz |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
36 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
37 $ rm foo bar baz .hgignore makeignore.py |
4439
4e521a3ee5eb
Test issue 562: .hgignore requires newline at end
Patrick Mezard <pmezard@gmail.com>
parents:
2009
diff
changeset
|
38 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
39 $ touch a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
40 $ touch a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
41 $ touch syntax |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
42 $ mkdir dir |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
43 $ touch dir/a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
44 $ touch dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
45 $ touch dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
46 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
47 $ hg add dir/a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
48 $ hg commit -m 0 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
49 $ hg add dir/b.o |
4439
4e521a3ee5eb
Test issue 562: .hgignore requires newline at end
Patrick Mezard <pmezard@gmail.com>
parents:
2009
diff
changeset
|
50 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
51 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
52 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
53 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
54 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
55 ? dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
56 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
57 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
58 $ echo "*.o" > .hgignore |
12366
c01dc9087d9a
tests: drop a bunch of sed calls from unified tests
Matt Mackall <mpm@selenic.com>
parents:
12312
diff
changeset
|
59 $ hg status |
25869
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
60 abort: $TESTTMP/ignorerepo/.hgignore: invalid pattern (relre): *.o (glob) |
12366
c01dc9087d9a
tests: drop a bunch of sed calls from unified tests
Matt Mackall <mpm@selenic.com>
parents:
12312
diff
changeset
|
61 [255] |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
62 |
33507
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
63 Ensure given files are relative to cwd |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
64 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
65 $ echo "dir/.*\.o" > .hgignore |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
66 $ hg status -i |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
67 I dir/c.o |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
68 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
69 $ hg debugignore dir/c.o dir/missing.o |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
70 dir/c.o is ignored |
33507
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
71 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob) |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
72 dir/missing.o is ignored |
33507
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
73 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob) |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
74 $ cd dir |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
75 $ hg debugignore c.o missing.o |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
76 c.o is ignored |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
77 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob) |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
78 missing.o is ignored |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
79 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob) |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
80 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
81 For icasefs, inexact matches also work, except for missing files |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
82 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
83 #if icasefs |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
84 $ hg debugignore c.O missing.O |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
85 c.o is ignored |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
86 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob) |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
87 missing.O is not ignored |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
88 #endif |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
89 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
90 $ cd .. |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
91 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
92 $ echo ".*\.o" > .hgignore |
16487
4fe874697a4d
tests: fix incorrect markup of continued lines of sh commands
Mads Kiilerich <mads@kiilerich.com>
parents:
15447
diff
changeset
|
93 $ hg status |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
94 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
95 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
96 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
97 ? syntax |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
98 |
27326
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
99 Ensure that comments work: |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
100 |
42633
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
101 $ touch 'foo#bar' 'quux#' 'quu0#' |
27381
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
102 #if no-windows |
42633
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
103 $ touch 'baz\' 'baz\wat' 'ba0\#wat' 'ba1\\' 'ba1\\wat' 'quu0\' |
27381
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
104 #endif |
42633
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
105 |
27326
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
106 $ cat <<'EOF' >> .hgignore |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
107 > # full-line comment |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
108 > # whitespace-only comment line |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
109 > syntax# pattern, no whitespace, then comment |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
110 > a.c # pattern, then whitespace, then comment |
42631
24f0023bb8b1
hgignore: update \-escape test to reflect actual behavior
Yuya Nishihara <yuya@tcha.org>
parents:
41721
diff
changeset
|
111 > baz\\# # (escaped) backslash, then comment |
42632
c67e3f966867
hgignore: add a few more weird patterns to test case
Yuya Nishihara <yuya@tcha.org>
parents:
42631
diff
changeset
|
112 > ba0\\\#w # (escaped) backslash, escaped comment character, then comment |
c67e3f966867
hgignore: add a few more weird patterns to test case
Yuya Nishihara <yuya@tcha.org>
parents:
42631
diff
changeset
|
113 > ba1\\\\# # (escaped) backslashes, then comment |
27326
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
114 > foo\#b # escaped comment character |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
115 > quux\## escaped comment character at end of name |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
116 > EOF |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
117 $ hg status |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
118 A dir/b.o |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
119 ? .hgignore |
42633
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
120 ? quu0# |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
121 ? quu0\ (no-windows !) |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
122 |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
123 $ cat <<'EOF' > .hgignore |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
124 > .*\.o |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
125 > syntax: glob |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
126 > syntax# pattern, no whitespace, then comment |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
127 > a.c # pattern, then whitespace, then comment |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
128 > baz\\#* # (escaped) backslash, then comment |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
129 > ba0\\\#w* # (escaped) backslash, escaped comment character, then comment |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
130 > ba1\\\\#* # (escaped) backslashes, then comment |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
131 > foo\#b* # escaped comment character |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
132 > quux\## escaped comment character at end of name |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
133 > quu0[\#]# escaped comment character inside [...] |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
134 > EOF |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
135 $ hg status |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
136 A dir/b.o |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
137 ? .hgignore |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
138 ? ba1\\wat (no-windows !) |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
139 ? baz\wat (no-windows !) |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
140 ? quu0\ (no-windows !) |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
141 |
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
142 $ rm 'foo#bar' 'quux#' 'quu0#' |
27381
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
143 #if no-windows |
42633
f78f305454fd
hgignore: add escape syntax test for glob patterns
Yuya Nishihara <yuya@tcha.org>
parents:
42632
diff
changeset
|
144 $ rm 'baz\' 'baz\wat' 'ba0\#wat' 'ba1\\' 'ba1\\wat' 'quu0\' |
27381
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
145 #endif |
27326
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
146 |
33477
cc4632679cf9
tests: fix an incorrect description in test-ignore.t
Martin von Zweigbergk <martinvonz@google.com>
parents:
33214
diff
changeset
|
147 Check that '^\.' does not ignore the root directory: |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
148 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
149 $ echo "^\." > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
150 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
151 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
152 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
153 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
154 ? dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
155 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
156 |
23628
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
157 Test that patterns from ui.ignore options are read: |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
158 |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
159 $ echo > .hgignore |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
160 $ cat >> $HGRCPATH << EOF |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
161 > [ui] |
25869
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
162 > ignore.other = $TESTTMP/ignorerepo/.hg/testhgignore |
23628
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
163 > EOF |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
164 $ echo "glob:**.o" > .hg/testhgignore |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
165 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
166 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
167 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
168 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
169 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
170 |
23628
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
171 empty out testhgignore |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
172 $ echo > .hg/testhgignore |
23629
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
173 |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
174 Test relative ignore path (issue4473): |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
175 |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
176 $ cat >> $HGRCPATH << EOF |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
177 > [ui] |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
178 > ignore.relative = .hg/testhgignorerel |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
179 > EOF |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
180 $ echo "glob:*.o" > .hg/testhgignorerel |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
181 $ cd dir |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
182 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
183 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
184 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
185 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
186 ? syntax |
42862
96ddf83fc267
tests: show the pattern generated for a relative glob
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
42633
diff
changeset
|
187 $ hg debugignore |
42864
72890d8f9860
match: simplify the regexps created for glob patterns
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
42862
diff
changeset
|
188 <includematcher includes='.*\\.o(?:/|$)'> |
6479
31abcae33b4f
dirstate: do not ignore current directory '.' (issue 1078)
Patrick Mezard <pmezard@gmail.com>
parents:
5029
diff
changeset
|
189 |
23629
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
190 $ cd .. |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
191 $ echo > .hg/testhgignorerel |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
192 $ echo "syntax: glob" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
193 $ echo "re:.*\.o" >> .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
194 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
195 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
196 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
197 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
198 ? syntax |
5029
ac97e065cfc7
Fix re: and glob: patterns in .hgignore (reported by Brad Schick)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4439
diff
changeset
|
199 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
200 $ echo "syntax: invalid" > .hgignore |
12366
c01dc9087d9a
tests: drop a bunch of sed calls from unified tests
Matt Mackall <mpm@selenic.com>
parents:
12312
diff
changeset
|
201 $ hg status |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
202 $TESTTMP/ignorerepo/.hgignore: ignoring invalid syntax 'invalid' |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
203 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
204 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
205 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
206 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
207 ? dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
208 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
209 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
210 $ echo "syntax: glob" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
211 $ echo "*.o" >> .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
212 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
213 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
214 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
215 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
216 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
217 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
218 $ echo "relglob:syntax*" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
219 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
220 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
221 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
222 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
223 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
224 ? dir/c.o |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
225 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
226 $ echo "relglob:*" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
227 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
228 A dir/b.o |
1491
91c0e8d7ddcf
fix a bug in dirstate.changes when cwd != repo.root
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1478
diff
changeset
|
229 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
230 $ cd dir |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
231 $ hg status . |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
232 A b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
233 |
13396
3e66eec9a814
add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents:
12640
diff
changeset
|
234 $ hg debugignore |
42864
72890d8f9860
match: simplify the regexps created for glob patterns
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
42862
diff
changeset
|
235 <includematcher includes='.*(?:/|$)'> |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16487
diff
changeset
|
236 |
27671
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
237 $ hg debugignore b.o |
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
238 b.o is ignored |
27757
6ff556ef5a46
test-hgignore: add globs for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
27672
diff
changeset
|
239 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: '*') (glob) |
27671
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
240 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16487
diff
changeset
|
241 $ cd .. |
19128
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
242 |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
243 Check patterns that match only the directory |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
244 |
33214
7367b76ef75c
tests: add line specific for testing with fsmonitor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32940
diff
changeset
|
245 "(fsmonitor !)" below assumes that fsmonitor is enabled with |
7367b76ef75c
tests: add line specific for testing with fsmonitor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32940
diff
changeset
|
246 "walk_on_invalidate = false" (default), which doesn't involve |
7367b76ef75c
tests: add line specific for testing with fsmonitor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32940
diff
changeset
|
247 re-walking whole repository at detection of .hgignore change. |
7367b76ef75c
tests: add line specific for testing with fsmonitor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32940
diff
changeset
|
248 |
19128
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
249 $ echo "^dir\$" > .hgignore |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
250 $ hg status |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
251 A dir/b.o |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
252 ? .hgignore |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
253 ? a.c |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
254 ? a.o |
33214
7367b76ef75c
tests: add line specific for testing with fsmonitor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32940
diff
changeset
|
255 ? dir/c.o (fsmonitor !) |
19128
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
256 ? syntax |
21815
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
257 |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
258 Check recursive glob pattern matches no directories (dir/**/c.o matches dir/c.o) |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
259 |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
260 $ echo "syntax: glob" > .hgignore |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
261 $ echo "dir/**/c.o" >> .hgignore |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
262 $ touch dir/c.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
263 $ mkdir dir/subdir |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
264 $ touch dir/subdir/c.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
265 $ hg status |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
266 A dir/b.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
267 ? .hgignore |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
268 ? a.c |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
269 ? a.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
270 ? syntax |
27671
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
271 $ hg debugignore a.c |
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
272 a.c is not ignored |
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
273 $ hg debugignore dir/c.o |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
274 dir/c.o is ignored |
27757
6ff556ef5a46
test-hgignore: add globs for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
27672
diff
changeset
|
275 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 2: 'dir/**/c.o') (glob) |
25215
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
276 |
41282
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
277 Check rooted globs |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
278 |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
279 $ hg purge --all --config extensions.purge= |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
280 $ echo "syntax: rootglob" > .hgignore |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
281 $ echo "a/*.ext" >> .hgignore |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
282 $ for p in a b/a aa; do mkdir -p $p; touch $p/b.ext; done |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
283 $ hg status -A 'set:**.ext' |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
284 ? aa/b.ext |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
285 ? b/a/b.ext |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
286 I a/b.ext |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
287 |
25215
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
288 Check using 'include:' in ignore file |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
289 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
290 $ hg purge --all --config extensions.purge= |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
291 $ touch foo.included |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
292 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
293 $ echo ".*.included" > otherignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
294 $ hg status -I "include:otherignore" |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
295 ? foo.included |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
296 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
297 $ echo "include:otherignore" >> .hgignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
298 $ hg status |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
299 A dir/b.o |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
300 ? .hgignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
301 ? otherignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
302 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
303 Check recursive uses of 'include:' |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
304 |
25870
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
305 $ echo "include:nested/ignore" >> otherignore |
41282
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
306 $ mkdir nested nested/more |
25870
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
307 $ echo "glob:*ignore" > nested/ignore |
41282
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
308 $ echo "rootglob:a" >> nested/ignore |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
309 $ touch a nested/a nested/more/a |
25215
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
310 $ hg status |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
311 A dir/b.o |
41282
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
312 ? nested/a |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
313 ? nested/more/a |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
314 $ rm a nested/a nested/more/a |
25216
dc562165044a
ignore: use 'include:' rules instead of custom syntax
Durham Goode <durham@fb.com>
parents:
25215
diff
changeset
|
315 |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
316 $ cp otherignore goodignore |
25216
dc562165044a
ignore: use 'include:' rules instead of custom syntax
Durham Goode <durham@fb.com>
parents:
25215
diff
changeset
|
317 $ echo "include:badignore" >> otherignore |
dc562165044a
ignore: use 'include:' rules instead of custom syntax
Durham Goode <durham@fb.com>
parents:
25215
diff
changeset
|
318 $ hg status |
35230
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
33507
diff
changeset
|
319 skipping unreadable pattern file 'badignore': $ENOENT$ |
25216
dc562165044a
ignore: use 'include:' rules instead of custom syntax
Durham Goode <durham@fb.com>
parents:
25215
diff
changeset
|
320 A dir/b.o |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
321 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
322 $ mv goodignore otherignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
323 |
25870
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
324 Check using 'include:' while in a non-root directory |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
325 |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
326 $ cd .. |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
327 $ hg -R ignorerepo status |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
328 A dir/b.o |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
329 $ cd ignorerepo |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
330 |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
331 Check including subincludes |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
332 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
333 $ hg revert -q --all |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
334 $ hg purge --all --config extensions.purge= |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
335 $ echo ".hgignore" > .hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
336 $ mkdir dir1 dir2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
337 $ touch dir1/file1 dir1/file2 dir2/file1 dir2/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
338 $ echo "subinclude:dir2/.hgignore" >> .hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
339 $ echo "glob:file*2" > dir2/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
340 $ hg status |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
341 ? dir1/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
342 ? dir1/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
343 ? dir2/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
344 |
41282
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
345 Check including subincludes with other patterns |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
346 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
347 $ echo "subinclude:dir1/.hgignore" >> .hgignore |
41282
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
348 |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
349 $ mkdir dir1/subdir |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
350 $ touch dir1/subdir/file1 |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
351 $ echo "rootglob:f?le1" > dir1/.hgignore |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
352 $ hg status |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
353 ? dir1/file2 |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
354 ? dir1/subdir/file1 |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
355 ? dir2/file1 |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
356 $ rm dir1/subdir/file1 |
4fab8a7d2d72
match: support rooted globs in hgignore
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
40782
diff
changeset
|
357 |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
358 $ echo "regexp:f.le1" > dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
359 $ hg status |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
360 ? dir1/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
361 ? dir2/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
362 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
363 Check multiple levels of sub-ignores |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
364 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
365 $ touch dir1/subdir/subfile1 dir1/subdir/subfile3 dir1/subdir/subfile4 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
366 $ echo "subinclude:subdir/.hgignore" >> dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
367 $ echo "glob:subfil*3" >> dir1/subdir/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
368 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
369 $ hg status |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
370 ? dir1/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
371 ? dir1/subdir/subfile4 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
372 ? dir2/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
373 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
374 Check include subignore at the same level |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
375 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
376 $ mv dir1/subdir/.hgignore dir1/.hgignoretwo |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
377 $ echo "regexp:f.le1" > dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
378 $ echo "subinclude:.hgignoretwo" >> dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
379 $ echo "glob:file*2" > dir1/.hgignoretwo |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
380 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
381 $ hg status | grep file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
382 [1] |
27671
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
383 $ hg debugignore dir1/file2 |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
384 dir1/file2 is ignored |
27672
f2da9bb87ae0
debugignore: find out why a file is being ignored (issue4856)
Laurent Charignon <lcharignon@fb.com>
parents:
27671
diff
changeset
|
385 (ignore rule in dir2/.hgignore, line 1: 'file*2') |
28054
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
386 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
387 #if windows |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
388 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
389 Windows paths are accepted on input |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
390 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
391 $ rm dir1/.hgignore |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
392 $ echo "dir1/file*" >> .hgignore |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
393 $ hg debugignore "dir1\file2" |
41721
eb8a8af4cbd0
tests: correct the remaining fallout from recent path style changes on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
41282
diff
changeset
|
394 dir1/file2 is ignored |
28054
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
395 (ignore rule in $TESTTMP\ignorerepo\.hgignore, line 4: 'dir1/file*') |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
396 $ hg up -qC . |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
397 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
398 #endif |
47409
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
399 |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
400 #if dirstate-v2 |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
401 |
47674
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47476
diff
changeset
|
402 Check the hash of ignore patterns written in the dirstate |
47409
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
403 |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
404 $ hg status > /dev/null |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
405 $ cat .hg/testhgignore .hg/testhgignorerel .hgignore dir2/.hgignore dir1/.hgignore dir1/.hgignoretwo | $TESTDIR/f --sha1 |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
406 sha1=6e315b60f15fb5dfa02be00f3e2c8f923051f5ff |
47674
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47476
diff
changeset
|
407 $ hg debugdirstateignorepatternshash |
47409
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
408 6e315b60f15fb5dfa02be00f3e2c8f923051f5ff |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
409 |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
410 $ echo rel > .hg/testhgignorerel |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
411 $ hg status > /dev/null |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
412 $ cat .hg/testhgignore .hg/testhgignorerel .hgignore dir2/.hgignore dir1/.hgignore dir1/.hgignoretwo | $TESTDIR/f --sha1 |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
413 sha1=dea19cc7119213f24b6b582a4bae7b0cb063e34e |
47674
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47476
diff
changeset
|
414 $ hg debugdirstateignorepatternshash |
47409
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
415 dea19cc7119213f24b6b582a4bae7b0cb063e34e |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
416 |
0ef8231e413f
dirstate-v2: Store a hash of ignore patterns (.hgignore)
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
417 #endif |