From: Paul Molodowitch general: calls to repo.invalidate replaced with hglib.invalidaterepo added a dirstate flag to hglib.invalidate repo, which controls whether the dirstate is invalidated as well calls to repo.invalidate replaced with hglib.invalidaterepo, so the other cached information which should probably get cleared when repo is invalidated (ie, mq, bookmarks) is diff -r eb7f670469ff -r ee29cd41f4a7 tortoisehg/hgtk/bookmark.py --- a/tortoisehg/hgtk/bookmark.py Thu Dec 17 18:10:39 2009 -0800 +++ b/tortoisehg/hgtk/bookmark.py Thu Dec 17 18:47:19 2009 -0800 @@ -116,7 +116,7 @@ def _refresh(self, clear=True): """ update display on dialog with recent repo data """ - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self._bookmarkslist.clear() # add bookmarks to drop-down list diff -r eb7f670469ff -r ee29cd41f4a7 tortoisehg/hgtk/commit.py --- a/tortoisehg/hgtk/commit.py Thu Dec 17 18:10:39 2009 -0800 +++ b/tortoisehg/hgtk/commit.py Thu Dec 17 18:47:19 2009 -0800 @@ -1039,7 +1039,7 @@ def get_tip_rev(self, refresh=False): if refresh: - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) return self.repo['tip'].node() def get_qnew_name(self): diff -r eb7f670469ff -r ee29cd41f4a7 tortoisehg/hgtk/history.py --- a/tortoisehg/hgtk/history.py Thu Dec 17 18:10:39 2009 -0800 +++ b/tortoisehg/hgtk/history.py Thu Dec 17 18:47:19 2009 -0800 @@ -1220,7 +1220,7 @@ # Note that oldmarkers/newmarkers may be either dicts # (for add/remove bookmarks, which can also 'move' # bookmarks), or lists (everything else) - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.changeview.clear_cache() if len(self.repo) != oldlen: self.reload_log() @@ -1231,7 +1231,7 @@ def refresh_on_current_marker_change(self, oldlen, oldmarkers, oldcurrent, newmarkers, newcurrent): - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.changeview.clear_cache() if len(self.repo) != oldlen: self.reload_log() @@ -1444,7 +1444,7 @@ self.stop_button.set_sensitive(False) self.cmd_set_sensitive('stop', False) if return_code == 0: - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.changeview.clear_cache() if '--rebase' in cmd: self.origtip = len(self.repo) @@ -1608,7 +1608,7 @@ def import_clicked(self, toolbutton): oldlen = len(self.repo) def import_completed(): - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.changeview.clear() if oldlen < len(self.repo): self.reload_log() @@ -1700,7 +1700,7 @@ def strip_rev(self, menuitem): def strip_completed(): - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.reload_log() self.changeview.clear() rev = self.currevid @@ -1729,7 +1729,7 @@ self.reload_log() def refresh(*args): - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.changeview.clear_cache() if len(self.repo) != oldlen: self.reload_log() @@ -1852,7 +1852,7 @@ dialog.show_all() dialog.run() dialog.hide() - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.reload_log() self.changeview.clear() self.enable_mqpanel() @@ -1870,7 +1870,7 @@ dialog.show_all() dialog.run() dialog.hide() - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.reload_log() self.changeview.clear() @@ -1883,7 +1883,7 @@ dialog.show_all() dialog.run() dialog.hide() - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.reload_log() self.changeview.clear() @@ -2141,8 +2141,7 @@ self.show_dialog(dialog) def checkout_completed(self, oldparents): - self.repo.invalidate() - self.repo.dirstate.invalidate() + hglib.invalidaterepo(self.repo) self.changeview.clear_cache() newparents = [x.node() for x in self.repo.parents()] if not oldparents == newparents: @@ -2151,8 +2150,7 @@ def domerge(self, menuitem): def merge_notify(args): oldparents, repolen = args - self.repo.invalidate() - self.repo.dirstate.invalidate() + hglib.invalidaterepo(self.repo) self.changeview.clear_cache() if len(self.repo) != repolen: self.reload_log() @@ -2186,7 +2184,7 @@ dialog.show_all() dialog.run() dialog.hide() - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self.reload_log() self.changeview.clear() diff -r eb7f670469ff -r ee29cd41f4a7 tortoisehg/hgtk/tagadd.py --- a/tortoisehg/hgtk/tagadd.py Thu Dec 17 18:10:39 2009 -0800 +++ b/tortoisehg/hgtk/tagadd.py Thu Dec 17 18:47:19 2009 -0800 @@ -94,7 +94,7 @@ def _refresh(self, clear=True): """ update display on dialog with recent repo data """ - self.repo.invalidate() + hglib.invalidaterepo(self.repo, dirstate=False) self._tagslist.clear() # add tags to drop-down list diff -r eb7f670469ff -r ee29cd41f4a7 tortoisehg/util/hglib.py --- a/tortoisehg/util/hglib.py Thu Dec 17 18:10:39 2009 -0800 +++ b/tortoisehg/util/hglib.py Thu Dec 17 18:47:19 2009 -0800 @@ -111,8 +111,9 @@ return False return True -def invalidaterepo(repo): - repo.dirstate.invalidate() +def invalidaterepo(repo, dirstate=True): + if dirstate: + repo.dirstate.invalidate() if isinstance(repo, bundlerepo.bundlerepository): # Work around a bug in hg-1.3. repo.invalidate() breaks # overlay bundlerepos