diff options
| author | Shawn O. Pearce <sop@google.com> | 2009-04-17 20:32:44 -0700 |
|---|---|---|
| committer | Shawn O. Pearce <sop@google.com> | 2009-04-17 21:03:45 -0700 |
| commit | 0f3dd233ecaf8d145ddb33a5ef1b8d3d71ade476 (patch) | |
| tree | 327212154350ab031cbd64e39c8ef93cbd9bb6b5 /git_refs.py | |
| parent | c12c360f89d4d1cc0a0ad80c4ea0785f84be1848 (diff) | |
| download | git-repo-0f3dd233ecaf8d145ddb33a5ef1b8d3d71ade476.tar.gz | |
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 <sop@google.com>
Diffstat (limited to 'git_refs.py')
| -rw-r--r-- | git_refs.py | 14 |
1 files changed, 12 insertions, 2 deletions
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): | |||
| 31 | 31 | ||
| 32 | @property | 32 | @property |
| 33 | def all(self): | 33 | def all(self): |
| 34 | if self._phyref is None or self._NeedUpdate(): | 34 | self._EnsureLoaded() |
| 35 | self._LoadAll() | ||
| 36 | return self._phyref | 35 | return self._phyref |
| 37 | 36 | ||
| 38 | def get(self, name): | 37 | def get(self, name): |
| @@ -52,6 +51,17 @@ class GitRefs(object): | |||
| 52 | if name in self._mtime: | 51 | if name in self._mtime: |
| 53 | del self._mtime[name] | 52 | del self._mtime[name] |
| 54 | 53 | ||
| 54 | def symref(self, name): | ||
| 55 | try: | ||
| 56 | self._EnsureLoaded() | ||
| 57 | return self._symref[name] | ||
| 58 | except KeyError: | ||
| 59 | return '' | ||
| 60 | |||
| 61 | def _EnsureLoaded(self): | ||
| 62 | if self._phyref is None or self._NeedUpdate(): | ||
| 63 | self._LoadAll() | ||
| 64 | |||
| 55 | def _NeedUpdate(self): | 65 | def _NeedUpdate(self): |
| 56 | for name, mtime in self._mtime.iteritems(): | 66 | for name, mtime in self._mtime.iteritems(): |
| 57 | try: | 67 | try: |
