From 0f3dd233ecaf8d145ddb33a5ef1b8d3d71ade476 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 17 Apr 2009 20:32:44 -0700 Subject: Avoid unnecessary git symbolic-ref calls during repo sync If the m/BRANCH ref is already pointing at the value set in the manifest there is no reason to set it again. Leave it alone, thus saving a full fork+exec call. Signed-off-by: Shawn O. Pearce --- git_refs.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'git_refs.py') diff --git a/git_refs.py b/git_refs.py index eefa2abe..b91abc28 100644 --- a/git_refs.py +++ b/git_refs.py @@ -31,8 +31,7 @@ class GitRefs(object): @property def all(self): - if self._phyref is None or self._NeedUpdate(): - self._LoadAll() + self._EnsureLoaded() return self._phyref def get(self, name): @@ -52,6 +51,17 @@ class GitRefs(object): if name in self._mtime: del self._mtime[name] + def symref(self, name): + try: + self._EnsureLoaded() + return self._symref[name] + except KeyError: + return '' + + def _EnsureLoaded(self): + if self._phyref is None or self._NeedUpdate(): + self._LoadAll() + def _NeedUpdate(self): for name, mtime in self._mtime.iteritems(): try: -- cgit v1.2.3-54-g00ecf