[PATCH 5 of 5 STABLE] dirstate: filecacheify _ignore (issue3278)
Idan Kamara
idankk86 at gmail.com
Thu Mar 1 09:55:42 CST 2012
# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1330616999 -7200
# Branch stable
# 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 @@
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 @@
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 @@
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 @@
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 @@
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
More information about the Mercurial-devel
mailing list