Enable tracing of ref scans and config unpickling

These are not as expensive as spawning a git command, but they are
not free either.  We want to keep track of how many times we wind
up calling them on any particular operation.

Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce 2009-04-17 20:44:26 -07:00
parent 0f3dd233ec
commit b81ac9e654
2 changed files with 9 additions and 1 deletions

View File

@ -19,7 +19,7 @@ import re
import sys
from urllib2 import urlopen, HTTPError
from error import GitError, UploadError
from git_command import GitCommand
from git_command import GitCommand, TRACE
R_HEADS = 'refs/heads/'
R_TAGS = 'refs/tags/'
@ -189,6 +189,8 @@ class GitConfig(object):
except OSError:
return None
try:
if TRACE:
print >>sys.stderr, ': unpickle %s' % self.file
return cPickle.load(open(self._pickle, 'r'))
except IOError:
os.remove(self._pickle)

View File

@ -14,6 +14,8 @@
# limitations under the License.
import os
import sys
from git_command import TRACE
HEAD = 'HEAD'
R_HEADS = 'refs/heads/'
@ -63,6 +65,8 @@ class GitRefs(object):
self._LoadAll()
def _NeedUpdate(self):
if TRACE:
print >>sys.stderr, ': scan refs %s' % self._gitdir
for name, mtime in self._mtime.iteritems():
try:
if mtime != os.path.getmtime(os.path.join(self._gitdir, name)):
@ -72,6 +76,8 @@ class GitRefs(object):
return False
def _LoadAll(self):
if TRACE:
print >>sys.stderr, ': load refs %s' % self._gitdir
self._phyref = {}
self._symref = {}
self._mtime = {}