Browse Source
Junio asked for a 'git gc' utility which users can execute on a regular basis to perform basic repository actions such as: * pack-refs --prune * reflog expire * repack -a -d * prune * rerere gc So here is a command which does exactly that. The parameters fed to reflog's expire subcommand can be chosen by the user by setting configuration options in .git/config (or ~/.gitconfig), as users may want different expiration windows for each repository but shouldn't be bothered to remember what they are all of the time. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
Shawn O. Pearce
18 years ago
committed by
Junio C Hamano
5 changed files with 84 additions and 1 deletions
@ -0,0 +1,64 @@
@@ -0,0 +1,64 @@
|
||||
git-gc(1) |
||||
========= |
||||
|
||||
NAME |
||||
---- |
||||
git-gc - Cleanup unnecessary files and optimize the local repository |
||||
|
||||
|
||||
SYNOPSIS |
||||
-------- |
||||
'git-gc' |
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
Runs a number of housekeeping tasks within the current repository, |
||||
such as compressing file revisions (to reduce disk space and increase |
||||
performance) and removing unreachable objects which may have been |
||||
created from prior invocations of gitlink:git-add[1]. |
||||
|
||||
Users are encouraged to run this task on a regular basis within |
||||
each repository to maintain good disk space utilization and good |
||||
operating performance. |
||||
|
||||
Configuration |
||||
------------- |
||||
|
||||
The optional configuration variable 'gc.reflogExpire' can be |
||||
set to indicate how long historical entries within each branch's |
||||
reflog should remain available in this repository. The setting is |
||||
expressed as a length of time, for example '90 days' or '3 months'. |
||||
It defaults to '90 days'. |
||||
|
||||
The optional configuration variable 'gc.reflogExpireUnreachable' |
||||
can be set to indicate how long historical reflog entries which |
||||
are not part of the current branch should remain available in |
||||
this repository. These types of entries are generally created as |
||||
a result of using `git commit \--amend` or `git rebase` and are the |
||||
commits prior to the amend or rebase occuring. Since these changes |
||||
are not part of the current project most users will want to expire |
||||
them sooner. This option defaults to '30 days'. |
||||
|
||||
The optional configuration variable 'gc.rerereresolved' indicates |
||||
how long records of conflicted merge you resolved earlier are |
||||
kept. This defaults to 60 days. |
||||
|
||||
The optional configuration variable 'gc.rerereunresolved' indicates |
||||
how long records of conflicted merge you have not resolved are |
||||
kept. This defaults to 15 days. |
||||
|
||||
|
||||
See Also |
||||
-------- |
||||
gitlink:git-prune[1] |
||||
gitlink:git-reflog[1] |
||||
gitlink:git-repack[1] |
||||
gitlink:git-rerere[1] |
||||
|
||||
Author |
||||
------ |
||||
Written by Shawn O. Pearce <spearce@spearce.org> |
||||
|
||||
GIT |
||||
--- |
||||
Part of the gitlink:git[7] suite |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2006, Shawn O. Pearce |
||||
# |
||||
# Cleanup unreachable files and optimize the repository. |
||||
|
||||
USAGE='' |
||||
SUBDIRECTORY_OK=Yes |
||||
. git-sh-setup |
||||
|
||||
git-pack-refs --prune && |
||||
git-reflog expire --all && |
||||
git-repack -a -d && |
||||
git-prune && |
||||
git-rerere gc || exit |
Loading…
Reference in new issue