Mercurial > hg
changeset 25870:3de48ff62733 stable
ignore: fix include: rules depending on current directory (issue4759)
When reading pattern files, we just call open(path), which is relative to the
current directory. Let's fix this by resolving the paths before attempting to
read the file.
author | Durham Goode <durham@fb.com> |
---|---|
date | Fri, 24 Jul 2015 16:44:52 -0700 |
parents | a72e304df528 |
children | 20ed56771b21 |
files | mercurial/match.py tests/test-hgignore.t |
diffstat | 2 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/match.py Fri Jul 24 16:43:21 2015 -0700 +++ b/mercurial/match.py Fri Jul 24 16:44:52 2015 -0700 @@ -289,7 +289,8 @@ continue elif kind == 'include': try: - includepats = readpatternfile(pat, self._warn) + fullpath = pathutil.join(root, pat) + includepats = readpatternfile(fullpath, self._warn) for k, p, source in self._normalize(includepats, default, root, cwd, auditor): kindpats.append((k, p, source or pat))
--- a/tests/test-hgignore.t Fri Jul 24 16:43:21 2015 -0700 +++ b/tests/test-hgignore.t Fri Jul 24 16:44:52 2015 -0700 @@ -186,8 +186,9 @@ Check recursive uses of 'include:' - $ echo "include:nestedignore" >> otherignore - $ echo "glob:*ignore" > nestedignore + $ echo "include:nested/ignore" >> otherignore + $ mkdir nested + $ echo "glob:*ignore" > nested/ignore $ hg status A dir/b.o @@ -199,6 +200,13 @@ $ mv goodignore otherignore +Check using 'include:' while in a non-root directory + + $ cd .. + $ hg -R ignorerepo status + A dir/b.o + $ cd ignorerepo + Check including subincludes $ hg revert -q --all