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 --- project.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'project.py') diff --git a/project.py b/project.py index 9f9cf7bf..09a768fb 100644 --- a/project.py +++ b/project.py @@ -997,14 +997,17 @@ class Project(object): if self.manifest.branch: msg = 'manifest set to %s' % self.revision ref = R_M + self.manifest.branch + cur = self.bare_ref.symref(ref) if IsId(self.revision): - dst = self.revision + '^0' - self.bare_git.UpdateRef(ref, dst, message = msg, detach = True) + if cur != '' or self.bare_ref.get(ref) != self.revision: + dst = self.revision + '^0' + self.bare_git.UpdateRef(ref, dst, message = msg, detach = True) else: remote = self.GetRemote(self.remote.name) dst = remote.ToLocal(self.revision) - self.bare_git.symbolic_ref('-m', msg, ref, dst) + if cur != dst: + self.bare_git.symbolic_ref('-m', msg, ref, dst) def _InitMirrorHead(self): dst = self.GetRemote(self.remote.name).ToLocal(self.revision) -- cgit v1.2.3-54-g00ecf