Mercurial > hg
annotate tests/test-hgignore.t @ 39764:e4e881572382
localrepo: iteratively derive local repository type
This commit implements the dynamic local repository type derivation
that was explained in the recent commit
bfeab472e3c0 "localrepo: create new function for instantiating a local
repo object."
Instead of a static localrepository class/type which must be customized
after construction, we now dynamically construct a type by building up
base classes/types to represent specific repository interfaces.
Conceptually, the end state is similar to what was happening when
various extensions would monkeypatch the __class__ of newly-constructed
repo instances. However, the approach is inverted. Instead of making
the instance then customizing it, we do the customization up front
by influencing the behavior of the type then we instantiate that
custom type.
This approach gives us much more flexibility. For example, we can
use completely separate classes for implementing different aspects
of the repository. For example, we could have one class representing
revlog-based file storage and another representing non-revlog based
file storage. When then choose which implementation to use based on
the presence of repo requirements.
A concern with this approach is that it creates a lot more types
and complexity and that complexity adds overhead. Yes, it is true that
this approach will result in more types being created. Yes, this is
more complicated than traditional "instantiate a static type." However,
I believe the alternatives to supporting alternate storage backends
are just as complicated. (Before I arrived at this solution, I had
patches storing factory functions on local repo instances for e.g.
constructing a file storage instance. We ended up having a handful
of these. And this was logically identical to assigning custom
methods. Since we were logically changing the type of the instance,
I figured it would be better to just use specialized types instead
of introducing levels of abstraction at run-time.)
On the performance front, I don't believe that having N base classes
has any significant performance overhead compared to just a single base
class. Intuition says that Python will need to iterate the base classes
to find an attribute. However, CPython caches method lookups: as long as
the __class__ or MRO isn't changing, method attribute lookup should be
constant time after first access. And non-method attributes are stored
in __dict__, of which there is only 1 per object, so the number of
base classes for __dict__ is irrelevant.
Anyway, this commit splits up the monolithic completelocalrepository
interface into sub-interfaces: 1 for file storage and 1 representing
everything else.
We've taught ``makelocalrepository()`` to call a series of factory
functions which will produce types implementing specific interfaces.
It then calls type() to create a new type from the built-up list of
base types.
This commit should be considered a start and not the end state. I
suspect we'll hit a number of problems as we start to implement
alternate storage backends:
* Passing custom arguments to __init__ and setting custom attributes
on __dict__.
* Customizing the set of interfaces that are needed. e.g. the
"readonly" intent could translate to not requesting an interface
providing methods related to writing.
* More ergonomic way for extensions to insert themselves so their
callbacks aren't unconditionally called.
* Wanting to modify vfs instances, other arguments passed to __init__.
That being said, this code is usable in its current state and I'm
convinced future commits will demonstrate the value in this approach.
Differential Revision: https://phab.mercurial-scm.org/D4642
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 18 Sep 2018 15:29:42 -0700 |
parents | 5abc47d4ca6b |
children | 3984409e144b |
rev | line source |
---|---|
25869
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
1 $ hg init ignorerepo |
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
2 $ cd ignorerepo |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
3 |
32605
e6ff007e107e
match: introduce nevermatcher for when no ignore files are present
Siddharth Agarwal <sid0@fb.com>
parents:
32502
diff
changeset
|
4 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
|
5 $ hg debugignore |
e6ff007e107e
match: introduce nevermatcher for when no ignore files are present
Siddharth Agarwal <sid0@fb.com>
parents:
32502
diff
changeset
|
6 <nevermatcher> |
e6ff007e107e
match: introduce nevermatcher for when no ignore files are present
Siddharth Agarwal <sid0@fb.com>
parents:
32502
diff
changeset
|
7 |
12399
4fee1fd3de9a
tests: added a short description to issue numbers
Martin Geisler <mg@aragost.com>
parents:
12376
diff
changeset
|
8 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
|
9 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
10 $ touch foo |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
11 $ touch bar |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
12 $ touch baz |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
13 $ cat > makeignore.py <<EOF |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
14 > f = open(".hgignore", "w") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
15 > f.write("ignore\n") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
16 > f.write("foo\n") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
17 > # No EOL here |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
18 > f.write("bar") |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
19 > f.close() |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
20 > EOF |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
21 |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
22 $ "$PYTHON" makeignore.py |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
23 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
24 Should display baz only: |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
25 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
26 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
27 ? baz |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
28 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
29 $ 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
|
30 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
31 $ touch a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
32 $ touch a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
33 $ touch syntax |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
34 $ mkdir dir |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
35 $ touch dir/a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
36 $ touch dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
37 $ touch dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
38 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
39 $ hg add dir/a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
40 $ hg commit -m 0 |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
41 $ hg add dir/b.o |
4439
4e521a3ee5eb
Test issue 562: .hgignore requires newline at end
Patrick Mezard <pmezard@gmail.com>
parents:
2009
diff
changeset
|
42 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
43 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
44 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
45 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
46 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
47 ? dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
48 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
49 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
50 $ echo "*.o" > .hgignore |
12366
c01dc9087d9a
tests: drop a bunch of sed calls from unified tests
Matt Mackall <mpm@selenic.com>
parents:
12312
diff
changeset
|
51 $ hg status |
25869
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
52 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
|
53 [255] |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
54 |
33507
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
55 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
|
56 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
57 $ echo "dir/.*\.o" > .hgignore |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
58 $ hg status -i |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
59 I dir/c.o |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
60 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
61 $ 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
|
62 dir/c.o is ignored |
33507
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
63 (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
|
64 dir/missing.o is ignored |
33507
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
65 (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
|
66 $ cd dir |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
67 $ hg debugignore c.o missing.o |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
68 c.o is ignored |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
69 (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
|
70 missing.o is ignored |
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) |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
72 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
73 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
|
74 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
75 #if icasefs |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
76 $ hg debugignore c.O missing.O |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
77 c.o is ignored |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
78 (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
|
79 missing.O is not ignored |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
80 #endif |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
81 |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
82 $ cd .. |
e9672de52a23
debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com>
parents:
33477
diff
changeset
|
83 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
84 $ echo ".*\.o" > .hgignore |
16487
4fe874697a4d
tests: fix incorrect markup of continued lines of sh commands
Mads Kiilerich <mads@kiilerich.com>
parents:
15447
diff
changeset
|
85 $ hg status |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
86 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
87 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
88 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
89 ? syntax |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
90 |
27326
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
91 Ensure that comments work: |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
92 |
27381
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
93 $ touch 'foo#bar' 'quux#' |
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
94 #if no-windows |
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
95 $ touch 'baz\#wat' |
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
96 #endif |
27326
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
97 $ cat <<'EOF' >> .hgignore |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
98 > # full-line comment |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
99 > # whitespace-only comment line |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
100 > syntax# pattern, no whitespace, then comment |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
101 > a.c # pattern, then whitespace, then comment |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
102 > baz\\# # escaped comment character |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
103 > foo\#b # escaped comment character |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
104 > 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
|
105 > EOF |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
106 $ hg status |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
107 A dir/b.o |
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
108 ? .hgignore |
27381
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
109 $ rm 'foo#bar' 'quux#' |
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
110 #if no-windows |
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
111 $ rm 'baz\#wat' |
988367ac2a2a
test-hgignore: conditionalize an illegal Windows filename
Matt Harbison <matt_harbison@yahoo.com>
parents:
27326
diff
changeset
|
112 #endif |
27326
ee2d7b5daa8a
test-hgignore.t: add tests for comments
Bryan O'Sullivan <bos@serpentine.com>
parents:
25870
diff
changeset
|
113 |
33477
cc4632679cf9
tests: fix an incorrect description in test-ignore.t
Martin von Zweigbergk <martinvonz@google.com>
parents:
33214
diff
changeset
|
114 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
|
115 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
116 $ echo "^\." > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
117 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
118 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
119 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
120 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
121 ? dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
122 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
123 |
23628
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
124 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
|
125 |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
126 $ echo > .hgignore |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
127 $ cat >> $HGRCPATH << EOF |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
128 > [ui] |
25869
a72e304df528
test: move ignore test run into a subdirectory
Durham Goode <durham@fb.com>
parents:
25283
diff
changeset
|
129 > ignore.other = $TESTTMP/ignorerepo/.hg/testhgignore |
23628
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
130 > EOF |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
131 $ echo "glob:**.o" > .hg/testhgignore |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
132 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
133 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
134 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
135 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
136 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
137 |
23628
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
138 empty out testhgignore |
7d7a4848fff4
test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com>
parents:
21815
diff
changeset
|
139 $ echo > .hg/testhgignore |
23629
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
140 |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
141 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
|
142 |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
143 $ cat >> $HGRCPATH << EOF |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
144 > [ui] |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
145 > ignore.relative = .hg/testhgignorerel |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
146 > EOF |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
147 $ 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
|
148 $ cd dir |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
149 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
150 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
151 ? .hgignore |
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 ? syntax |
6479
31abcae33b4f
dirstate: do not ignore current directory '.' (issue 1078)
Patrick Mezard <pmezard@gmail.com>
parents:
5029
diff
changeset
|
154 |
23629
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
155 $ cd .. |
a04c7b74b3d5
ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com>
parents:
23628
diff
changeset
|
156 $ echo > .hg/testhgignorerel |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
157 $ echo "syntax: glob" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
158 $ echo "re:.*\.o" >> .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
159 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
160 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
161 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
162 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
163 ? syntax |
5029
ac97e065cfc7
Fix re: and glob: patterns in .hgignore (reported by Brad Schick)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4439
diff
changeset
|
164 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
165 $ 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
|
166 $ hg status |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
167 $TESTTMP/ignorerepo/.hgignore: ignoring invalid syntax 'invalid' |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
168 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
169 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
170 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
171 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
172 ? dir/c.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
173 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
174 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
175 $ echo "syntax: glob" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
176 $ echo "*.o" >> .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
177 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
178 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
179 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
180 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
181 ? syntax |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
182 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
183 $ echo "relglob:syntax*" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
184 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
185 A dir/b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
186 ? .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
187 ? a.c |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
188 ? a.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
189 ? dir/c.o |
1478
e6dd91a88b57
add a test for hgignore
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
190 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
191 $ echo "relglob:*" > .hgignore |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
192 $ hg status |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
193 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
|
194 |
12312
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
195 $ cd dir |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
196 $ hg status . |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
197 A b.o |
83a310f2f14a
tests: unify test-hgignore
Adrian Buehlmann <adrian@cadifra.com>
parents:
6479
diff
changeset
|
198 |
13396
3e66eec9a814
add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents:
12640
diff
changeset
|
199 $ hg debugignore |
32502
3026f19b4b01
match: remove support for non-include patterns from includematcher
Martin von Zweigbergk <martinvonz@google.com>
parents:
32501
diff
changeset
|
200 <includematcher includes='(?:(?:|.*/)[^/]*(?:/|$))'> |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16487
diff
changeset
|
201 |
27671
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
202 $ hg debugignore b.o |
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
203 b.o is ignored |
27757
6ff556ef5a46
test-hgignore: add globs for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
27672
diff
changeset
|
204 (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
|
205 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16487
diff
changeset
|
206 $ cd .. |
19128
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
207 |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
208 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
|
209 |
33214
7367b76ef75c
tests: add line specific for testing with fsmonitor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32940
diff
changeset
|
210 "(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
|
211 "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
|
212 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
|
213 |
19128
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
214 $ echo "^dir\$" > .hgignore |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
215 $ hg status |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
216 A dir/b.o |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
217 ? .hgignore |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
218 ? a.c |
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
219 ? a.o |
33214
7367b76ef75c
tests: add line specific for testing with fsmonitor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32940
diff
changeset
|
220 ? dir/c.o (fsmonitor !) |
19128
f4930b533d55
hgignore: fix regression with hgignore directory matches (issue3921)
Durham Goode <durham@fb.com>
parents:
16913
diff
changeset
|
221 ? syntax |
21815
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
222 |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
223 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
|
224 |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
225 $ echo "syntax: glob" > .hgignore |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
226 $ echo "dir/**/c.o" >> .hgignore |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
227 $ touch dir/c.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
228 $ mkdir dir/subdir |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
229 $ touch dir/subdir/c.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
230 $ hg status |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
231 A dir/b.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
232 ? .hgignore |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
233 ? a.c |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
234 ? a.o |
a4b67bf1f0a5
match: make glob '**/' match the empty string
Siddharth Agarwal <sid0@fb.com>
parents:
19128
diff
changeset
|
235 ? syntax |
27671
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
236 $ hg debugignore a.c |
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
237 a.c is not ignored |
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
238 $ 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
|
239 dir/c.o is ignored |
27757
6ff556ef5a46
test-hgignore: add globs for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
27672
diff
changeset
|
240 (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
|
241 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
242 Check using 'include:' in ignore file |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
243 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
244 $ hg purge --all --config extensions.purge= |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
245 $ touch foo.included |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
246 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
247 $ echo ".*.included" > otherignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
248 $ hg status -I "include:otherignore" |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
249 ? foo.included |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
250 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
251 $ echo "include:otherignore" >> .hgignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
252 $ hg status |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
253 A dir/b.o |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
254 ? .hgignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
255 ? otherignore |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
256 |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
257 Check recursive uses of 'include:' |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
258 |
25870
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
259 $ echo "include:nested/ignore" >> otherignore |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
260 $ mkdir nested |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
261 $ echo "glob:*ignore" > nested/ignore |
25215
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
262 $ hg status |
4040e06e9b99
match: add 'include:' syntax
Durham Goode <durham@fb.com>
parents:
23629
diff
changeset
|
263 A dir/b.o |
25216
dc562165044a
ignore: use 'include:' rules instead of custom syntax
Durham Goode <durham@fb.com>
parents:
25215
diff
changeset
|
264 |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
265 $ cp otherignore goodignore |
25216
dc562165044a
ignore: use 'include:' rules instead of custom syntax
Durham Goode <durham@fb.com>
parents:
25215
diff
changeset
|
266 $ echo "include:badignore" >> otherignore |
dc562165044a
ignore: use 'include:' rules instead of custom syntax
Durham Goode <durham@fb.com>
parents:
25215
diff
changeset
|
267 $ 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
|
268 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
|
269 A dir/b.o |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
270 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
271 $ mv goodignore otherignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
272 |
25870
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
273 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
|
274 |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
275 $ cd .. |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
276 $ hg -R ignorerepo status |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
277 A dir/b.o |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
278 $ cd ignorerepo |
3de48ff62733
ignore: fix include: rules depending on current directory (issue4759)
Durham Goode <durham@fb.com>
parents:
25869
diff
changeset
|
279 |
25283
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
280 Check including subincludes |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
281 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
282 $ hg revert -q --all |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
283 $ hg purge --all --config extensions.purge= |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
284 $ echo ".hgignore" > .hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
285 $ mkdir dir1 dir2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
286 $ touch dir1/file1 dir1/file2 dir2/file1 dir2/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
287 $ echo "subinclude:dir2/.hgignore" >> .hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
288 $ echo "glob:file*2" > dir2/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
289 $ hg status |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
290 ? dir1/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
291 ? dir1/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
292 ? dir2/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
293 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
294 Check including subincludes with regexs |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
295 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
296 $ echo "subinclude:dir1/.hgignore" >> .hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
297 $ echo "regexp:f.le1" > dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
298 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
299 $ hg status |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
300 ? dir1/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
301 ? dir2/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
302 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
303 Check multiple levels of sub-ignores |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
304 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
305 $ mkdir dir1/subdir |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
306 $ touch dir1/subdir/subfile1 dir1/subdir/subfile3 dir1/subdir/subfile4 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
307 $ echo "subinclude:subdir/.hgignore" >> dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
308 $ echo "glob:subfil*3" >> dir1/subdir/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
309 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
310 $ hg status |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
311 ? dir1/file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
312 ? dir1/subdir/subfile4 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
313 ? dir2/file1 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
314 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
315 Check include subignore at the same level |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
316 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
317 $ mv dir1/subdir/.hgignore dir1/.hgignoretwo |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
318 $ echo "regexp:f.le1" > dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
319 $ echo "subinclude:.hgignoretwo" >> dir1/.hgignore |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
320 $ echo "glob:file*2" > dir1/.hgignoretwo |
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 $ hg status | grep file2 |
19d0e5efa6ca
match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com>
parents:
25216
diff
changeset
|
323 [1] |
27671
067d87feeb11
debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com>
parents:
27381
diff
changeset
|
324 $ 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
|
325 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
|
326 (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
|
327 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
328 #if windows |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
329 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
330 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
|
331 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
332 $ rm dir1/.hgignore |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
333 $ echo "dir1/file*" >> .hgignore |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
334 $ hg debugignore "dir1\file2" |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
335 dir1\file2 is ignored |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
336 (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
|
337 $ hg up -qC . |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
338 |
8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
Matt Harbison <matt_harbison@yahoo.com>
parents:
27757
diff
changeset
|
339 #endif |