aboutsummaryrefslogtreecommitdiffstats
path: root/libbe/vcs.py
diff options
context:
space:
mode:
authorW. Trevor King <wking@drexel.edu>2009-12-03 21:37:29 -0500
committerW. Trevor King <wking@drexel.edu>2009-12-03 21:37:29 -0500
commit864d694c818374ceb4c8e3b34612b0481de17f8d (patch)
treeecaa120e774f4fd72660e109d73ebdc899be36c0 /libbe/vcs.py
parent2ba535acb1f03fb7d1bdb57e4173d55661d300da (diff)
downloadbugseverywhere-864d694c818374ceb4c8e3b34612b0481de17f8d.tar.gz
Don't get VCS version in VCS.__init__().
Often, this just causes a slow subprocess.Popen() call to get information we woln't even look at. Old benchmark: $ time be list > /dev/null real 0m2.369s user 0m1.980s sys 0m0.388s New benchmark: $ time be list > /dev/null real 0m1.472s user 0m1.304s sys 0m0.164s
Diffstat (limited to 'libbe/vcs.py')
-rw-r--r--libbe/vcs.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/libbe/vcs.py b/libbe/vcs.py
index 1298a2c..44643a4 100644
--- a/libbe/vcs.py
+++ b/libbe/vcs.py
@@ -127,7 +127,6 @@ class VCS(object):
self._duplicateBasedir = None
self._duplicateDirname = None
self.encoding = encoding
- self.version = self._get_version()
def __str__(self):
return "<%s %s>" % (self.__class__.__name__, id(self))
def __repr__(self):
@@ -235,6 +234,11 @@ class VCS(object):
specified revision does not exist.
"""
return None
+ def version(self):
+ """Cache version string for efficiency."""
+ if not hasattr(self, '_version'):
+ self._version = self._get_version()
+ return self._version
def _get_version(self):
try:
ret = self._vcs_version()
@@ -247,7 +251,7 @@ class VCS(object):
except CommandError:
return None
def installed(self):
- if self.version != None:
+ if self.version() != None:
return True
return False
def detect(self, path="."):