]> git.phdru.name Git - git-wiki.git/commitdiff
Explain git gc, git repack, git fsck
authorOleg Broytman <phd@phdru.name>
Thu, 20 Aug 2015 02:08:24 +0000 (05:08 +0300)
committerOleg Broytman <phd@phdru.name>
Thu, 20 Aug 2015 02:08:24 +0000 (05:08 +0300)
pep-git.txt

index f3b5e5551905cf3322f1dadb9aea4c1a10782fad..1d1664044e4616e6fd2640e87cfc3c20f759a71a 100644 (file)
@@ -680,11 +680,35 @@ https://git-scm.com/book/en/Git-Tools-Rerere
 Database maintenance
 ====================
 
 Database maintenance
 ====================
 
-TODO: dangling objects, git gc, git repack.
-
-https://gcc.gnu.org/ml/gcc/2007-12/msg00165.html
-
-http://vcscompare.blogspot.ru/2008/06/git-repack-parameters.html
+Git object database and other files/directories under .git require
+periodic maintenance and cleanup. For example, commit editing left
+unreferenced objects (dangling objects, in git terminology) and these
+objects should be pruned to avoid collecting cruft in the DB. The
+command ``git gc`` can be used for maintenance. Git runs ``git gc
+--auto`` as a part of some commands to do quick maintenance. Users are
+recommended to run ``git gc --aggressive`` from time to time; ``git
+help gc`` recommends to run it  every few hundred changesets; for more
+intensive projects it should be something like once a week and less
+frequent (biweekly or monthly) for lesser active projects.
+
+``git gc --aggressive`` not only removes dangling objects, it also
+repacks object database into indexed and better optimized pack(s).
+Another way to do it is to run ``git repack``.
+
+There is a well-known `message
+<https://gcc.gnu.org/ml/gcc/2007-12/msg00165.html>`_ from Linus
+Torvalds regarding "stupidity" of ``git gc --aggressive``. The message
+can safely be ignored now. It is old and outdated, ``git gc
+--aggressive`` became much better since that time.
+
+For those who still prefer ``git repack`` over ``git gc --aggressive``
+the recommended parameters are ``git repack -a -d -f --depth=20
+--window=250``. See `this detailed experiment
+<http://vcscompare.blogspot.ru/2008/06/git-repack-parameters.html>`_
+for explanation on the effects of these parameters.
+
+From time to time run ``git fsck [--strict]`` to verify integrity of
+the database.
 
 
 Tips and tricks
 
 
 Tips and tricks