-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create 'git gc' to perform common maintenance operations.
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>
- Loading branch information
Shawn O. Pearce
authored and
Junio C Hamano
committed
Dec 27, 2006
1 parent
4aec56d
commit 30f610b
Showing
5 changed files
with
84 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |