dirstate: filecacheify _ignore (issue3278) stable 2.1.1
authorIdan Kamara <idankk86@gmail.com>
Thu, 01 Mar 2012 17:49:59 +0200
branchstable
changeset 16202 53e2cd303ecf
parent 16201 fb7c4c14223f
child 16203 e6a9f73965a8
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.
mercurial/dirstate.py
tests/test-commandserver.py
tests/test-commandserver.py.out
--- a/mercurial/dirstate.py	Thu Mar 01 17:42:49 2012 +0200
+++ b/mercurial/dirstate.py	Thu Mar 01 17:49:59 2012 +0200
@@ -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"):
--- a/tests/test-commandserver.py	Thu Mar 01 17:42:49 2012 +0200
+++ b/tests/test-commandserver.py	Thu Mar 01 17:49:59 2012 +0200
@@ -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)
--- a/tests/test-commandserver.py.out	Thu Mar 01 17:42:49 2012 +0200
+++ b/tests/test-commandserver.py.out	Thu Mar 01 17:49:59 2012 +0200
@@ -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