Skip to content
Browse files

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 <sop@google.com>
(cherry picked from commit 1875ddd)
  • Loading branch information...
1 parent 2bf9db0 commit 0d2b61f11d0501fcf1e5a1c19f18dac03e0b09bc @spearce spearce committed
Showing with 3 additions and 0 deletions.
  1. +1 −0 subcmds/selfupdate.py
  2. +2 −0 subcmds/sync.py
View
1 subcmds/selfupdate.py
@@ -55,6 +55,7 @@ def Execute(self, opt, args):
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)
View
2 subcmds/sync.py
@@ -185,6 +185,8 @@ def _Fetch(self, projects, opt):
t.join()
pm.end()
+ for project in projects:
+ project.bare_git.gc('--auto')
return fetched
def UpdateProjectList(self):

0 comments on commit 0d2b61f

Please sign in to comment.
Something went wrong with that request. Please try again.