# HG changeset patch # User Idan Kamara # Date 2012-03-01 15:49:59 # Node ID 53e2cd303ecf8ca7c7eeebd785c34e5ed6b0f4a4 # Parent fb7c4c14223fce0b8e8c782f3f29eac53e75afed dirstate: filecacheify _ignore (issue3278) This still doesn't handle the case where a command is run with --config ui.ignore=path since we only look for changes in .hgignore. diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -21,6 +21,11 @@ class repocache(filecache): def join(self, obj, fname): return obj._opener.join(fname) +class rootcache(filecache): + """filecache for files in the repository root""" + def join(self, obj, fname): + return obj._join(fname) + def _finddirs(path): pos = path.rfind('/') while pos != -1: @@ -120,7 +125,7 @@ class dirstate(object): def dirs(self): return self._dirs - @propertycache + @rootcache('.hgignore') def _ignore(self): files = [self._join('.hgignore')] for name, path in self._ui.configitems("ui"): diff --git a/tests/test-commandserver.py b/tests/test-commandserver.py --- a/tests/test-commandserver.py +++ b/tests/test-commandserver.py @@ -219,6 +219,20 @@ def branch(server): runcommand(server, ['branch']) os.system('hg branch default') +def hgignore(server): + readchannel(server) + f = open('.hgignore', 'ab') + f.write('') + f.close() + runcommand(server, ['commit', '-Am.']) + f = open('ignored-file', 'ab') + f.write('') + f.close() + f = open('.hgignore', 'ab') + f.write('ignored-file') + f.close() + runcommand(server, ['status', '-i', '-u']) + if __name__ == '__main__': os.system('hg init') @@ -240,3 +254,4 @@ if __name__ == '__main__': check(setphase) check(rollback) check(branch) + check(hgignore) diff --git a/tests/test-commandserver.py.out b/tests/test-commandserver.py.out --- a/tests/test-commandserver.py.out +++ b/tests/test-commandserver.py.out @@ -156,3 +156,10 @@ marked working directory as branch foo foo marked working directory as branch default (branches are permanent and global, did you want a bookmark?) + +testing hgignore: + + runcommand commit -Am. +adding .hgignore + runcommand status -i -u +I ignored-file