diff options
author | W. Trevor King <wking@drexel.edu> | 2009-12-03 21:37:29 -0500 |
---|---|---|
committer | W. Trevor King <wking@drexel.edu> | 2009-12-03 21:37:29 -0500 |
commit | 864d694c818374ceb4c8e3b34612b0481de17f8d (patch) | |
tree | ecaa120e774f4fd72660e109d73ebdc899be36c0 /libbe/vcs.py | |
parent | 2ba535acb1f03fb7d1bdb57e4173d55661d300da (diff) | |
download | bugseverywhere-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.py | 8 |
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="."): |