From 0d2b61f11d0501fcf1e5a1c19f18dac03e0b09bc Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 3 Jul 2009 15:22:49 -0700 Subject: [PATCH] sync: Run `git gc --auto` after fetch Users may wind up with a lot of loose object content in projects they don't frequently make changes in, but that are modified by others. Since we bypass many git code paths that would have otherwise called out to `git gc --auto`, its possible for these projects to have their loose object database grow out of control. To help prevent that, we now invoke it ourselves during the network half of sync. Signed-off-by: Shawn O. Pearce (cherry picked from commit 1875ddd47c0bf38e5cc52e1e5875caabce2d8742) --- subcmds/selfupdate.py | 1 + subcmds/sync.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/subcmds/selfupdate.py b/subcmds/selfupdate.py index 4f46a12..46aa3a1 100644 --- a/subcmds/selfupdate.py +++ b/subcmds/selfupdate.py @@ -55,6 +55,7 @@ need to be performed by an end-user. print >>sys.stderr, "error: can't update repo" sys.exit(1) + rp.bare_git.gc('--auto') _PostRepoFetch(rp, no_repo_verify = opt.no_repo_verify, verbose = True) diff --git a/subcmds/sync.py b/subcmds/sync.py index 80bba1a..36ef16d 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -185,6 +185,8 @@ later is required to fix a server side protocol bug. t.join() pm.end() + for project in projects: + project.bare_git.gc('--auto') return fetched def UpdateProjectList(self):