meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
git:issues [2019/07/23 13:33]
niziak
git:issues [2023/07/17 16:02] (current)
niziak
Line 1: Line 1:
-====== ​reduce ​repo size ======+====== ​Issues ====== 
 + 
 +====== fsck: dangling commit ===== 
 + 
 +List details about dangling commits ([[https://​lukescott.co/​2019/​05/​10/​git-finding-lost-dangling-commits/​|Git – Finding Lost/​Dangling Commits]]:​ 
 +<code bash> 
 +git fsck --lost-found | grep "​^dangling commit"​ | sed "​s/​^dangling commit //g" | xargs git show -s --oneline 
 +</​code>​ 
 + 
 +Cleanup: 
 +<code bash> 
 +git reflog expire --expire=now --all 
 +git gc --prune=now --aggressive 
 +git repack -a -d 
 +</​code>​ 
 + 
 +====== Reduce ​repo size ======
  
  
 It is important to check if git configured with default settings. It is important to check if git configured with default settings.
-Especially forcing of creation of multiple smaller packs significantly increases ​repo size.+Especially forcing of creation of multiple smaller packs significantly increases ​repository ​size. 
 +I.e. changing one 1.2G pack into multiple 256MB packs let, increases size of packs to 4.3GB :(
 <code bash> <code bash>
 git config --global -l git config --global -l
 git config --system -l git config --system -l
 </​code>​ </​code>​
 +
 Especially take attention for options like: Especially take attention for options like:
   *  deltaCacheSize = 10m   *  deltaCacheSize = 10m
Line 14: Line 32:
  
  
-<code bash>git gc</​code>​ and other cleaning commands requires whole repository to be read into memory. For big repos (like kernel.git) ​This lead to allocate over 8GB of RAM.+Command ​<code bash>git gc</​code>​ and other cleaning commands requires whole repository to be read into memory. For big repos (like kernel.git) ​it requires ​to allocate over 8GB of RAM.
 Compression of objects is also performed in RAM, then packs are written onto disc. Compression of objects is also performed in RAM, then packs are written onto disc.
 +[[https://​stackoverflow.com/​questions/​42175296/​git-gc-uses-a-lot-of-memory-even-i-limited-it]]
 +
  
 +To prevent touching existing packs and exhaust system memory paramter ''​auto''​ should be used. <code bash>git gc --auto</​code>​
 +Another possibility is to mark some packs as ''​keep''​ by creating .keep files. ​
  
 Remove unreachable objects: Remove unreachable objects:
Line 22: Line 44:
  
 git count-objects -v git count-objects -v
-git gc  # this is enough to remove loose objects and repack repo+git gc  ​--auto ​# this is enough to remove loose objects and repack repo
 git count-objects -v git count-objects -v