diff --git a/man/repo-smartsync.1 b/man/repo-smartsync.1 index 8475adf1..c1abbb38 100644 --- a/man/repo-smartsync.1 +++ b/man/repo-smartsync.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man. -.TH REPO "1" "August 2022" "repo smartsync" "Repo Manual" +.TH REPO "1" "November 2022" "repo smartsync" "Repo Manual" .SH NAME repo \- repo smartsync - manual page for repo smartsync .SH SYNOPSIS @@ -105,6 +105,13 @@ delete refs that no longer exist on the remote .TP \fB\-\-no\-prune\fR do not delete refs that no longer exist on the remote +.TP +\fB\-\-auto\-gc\fR +run garbage collection on all synced projects +.TP +\fB\-\-no\-auto\-gc\fR +do not run garbage collection on any projects +(default) .SS Logging options: .TP \fB\-v\fR, \fB\-\-verbose\fR diff --git a/man/repo-sync.1 b/man/repo-sync.1 index 9cc528dd..f006c03d 100644 --- a/man/repo-sync.1 +++ b/man/repo-sync.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man. -.TH REPO "1" "August 2022" "repo sync" "Repo Manual" +.TH REPO "1" "November 2022" "repo sync" "Repo Manual" .SH NAME repo \- repo sync - manual page for repo sync .SH SYNOPSIS @@ -106,6 +106,13 @@ delete refs that no longer exist on the remote \fB\-\-no\-prune\fR do not delete refs that no longer exist on the remote .TP +\fB\-\-auto\-gc\fR +run garbage collection on all synced projects +.TP +\fB\-\-no\-auto\-gc\fR +do not run garbage collection on any projects +(default) +.TP \fB\-s\fR, \fB\-\-smart\-sync\fR smart sync using manifest from the latest known good build @@ -200,6 +207,9 @@ to a sha1 revision if the sha1 revision does not already exist locally. The \fB\-\-prune\fR option can be used to remove any refs that no longer exist on the remote. .PP +The \fB\-\-auto\-gc\fR option can be used to trigger garbage collection on all projects. +By default, repo does not run garbage collection. +.PP SSH Connections .PP If at least one project remote URL uses an SSH connection (ssh://, git+ssh://, diff --git a/man/repo.1 b/man/repo.1 index bdb705d4..e7368a84 100644 --- a/man/repo.1 +++ b/man/repo.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man. -.TH REPO "1" "July 2022" "repo" "Repo Manual" +.TH REPO "1" "November 2022" "repo" "Repo Manual" .SH NAME repo \- repository management tool built on top of git .SH SYNOPSIS @@ -25,6 +25,10 @@ control color usage: auto, always, never \fB\-\-trace\fR trace git command execution (REPO_TRACE=1) .TP +\fB\-\-trace_to_stderr\fR +trace outputs go to stderr in addition to +\&.repo/TRACE_FILE +.TP \fB\-\-trace\-python\fR trace python command execution .TP diff --git a/subcmds/sync.py b/subcmds/sync.py index 83c9ad36..b7542cca 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -200,6 +200,9 @@ exist locally. The --prune option can be used to remove any refs that no longer exist on the remote. +The --auto-gc option can be used to trigger garbage collection on all +projects. By default, repo does not run garbage collection. + # SSH Connections If at least one project remote URL uses an SSH connection (ssh://, @@ -309,6 +312,10 @@ later is required to fix a server side protocol bug. help='delete refs that no longer exist on the remote (default)') p.add_option('--no-prune', dest='prune', action='store_false', help='do not delete refs that no longer exist on the remote') + p.add_option('--auto-gc', action='store_true', + help='run garbage collection on all synced projects') + p.add_option('--no-auto-gc', dest='auto_gc', action='store_false', + help='do not run garbage collection on any projects (default)') if show_smart: p.add_option('-s', '--smart-sync', dest='smart_sync', action='store_true', @@ -829,7 +836,14 @@ later is required to fix a server side protocol bug. project.config.SetString('gc.pruneExpire', None) def _GCProjects(self, projects, opt, err_event): - pm = Progress('Garbage collecting', len(projects), delay=False, quiet=opt.quiet) + """Perform garbage collection. + + If We are skipping garbage collection (opt.auto_gc not set), we still want + to potentially mark objects precious, so that `git gc` does not discard + shared objects. + """ + pm = Progress(f'{"" if opt.auto_gc else "NOT "}Garbage collecting', + len(projects), delay=False, quiet=opt.quiet) pm.update(inc=0, msg='prescan') tidy_dirs = {} @@ -849,6 +863,10 @@ later is required to fix a server side protocol bug. project.bare_git, ) + if not opt.auto_gc: + pm.end() + return + jobs = opt.jobs gc_args = ['--auto']