cmdserver: repo.invalidate() on every runcommand
This will trigger the filecache and recreate every cached property that was
changed by something other than this cmdserver instance (e.g. by running
'hg commit' at the cmdline).
--- a/mercurial/commandserver.py Mon Jul 25 08:28:37 2011 +0200
+++ b/mercurial/commandserver.py Mon Jul 25 22:19:28 2011 +0300
@@ -185,6 +185,7 @@
copiedui = self.ui.copy()
self.repo.baseui = copiedui
self.repo.ui = self.repo.dirstate._ui = self.repoui.copy()
+ self.repo.invalidate()
req = dispatch.request(args[:], copiedui, self.repo, self.cin,
self.cout, self.cerr)
--- a/tests/test-commandserver.py Mon Jul 25 08:28:37 2011 +0200
+++ b/tests/test-commandserver.py Mon Jul 25 22:19:28 2011 +0300
@@ -154,6 +154,30 @@
'hooks.pre-identify=python:test-commandserver.hook', 'id'],
input=cStringIO.StringIO('some input'))
+def outsidechanges(server):
+ readchannel(server)
+ os.system('echo a >> a && hg ci -Am2')
+ runcommand(server, ['tip'])
+
+def bookmarks(server):
+ readchannel(server)
+ runcommand(server, ['bookmarks'])
+
+ # changes .hg/bookmarks
+ os.system('hg bookmark -i bm1')
+ os.system('hg bookmark -i bm2')
+ runcommand(server, ['bookmarks'])
+
+ # changes .hg/bookmarks.current
+ os.system('hg upd bm1 -q')
+ runcommand(server, ['bookmarks'])
+
+def tagscache(server):
+ readchannel(server)
+ runcommand(server, ['id', '-t', '-r', '0'])
+ os.system('hg tag -r 0 foo')
+ runcommand(server, ['id', '-t', '-r', '0'])
+
if __name__ == '__main__':
os.system('hg init')
@@ -169,3 +193,6 @@
hgrc.close()
check(localhgrc)
check(hookoutput)
+ check(outsidechanges)
+ check(bookmarks)
+ check(tagscache)
--- a/tests/test-commandserver.py.out Mon Jul 25 08:28:37 2011 +0200
+++ b/tests/test-commandserver.py.out Mon Jul 25 22:19:28 2011 +0300
@@ -52,3 +52,16 @@
hook talking
now try to read something: 'some input'
eff892de26ec tip
+changeset: 1:d3a0a68be6de
+tag: tip
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: 2
+
+no bookmarks set
+ bm1 1:d3a0a68be6de
+ bm2 1:d3a0a68be6de
+ * bm1 1:d3a0a68be6de
+ bm2 1:d3a0a68be6de
+
+foo