gitgit-gc

Stopping a git gc --aggressive, is that a bad thing?


I am running a git gc --aggressive on a very large repo (apx 100 gb). It's been running since two nights ago, and as of a couple hours, it has been stuck on: "Compressing Objects: 99% (76496/76777)"

If I Ctrl-C the process, what are the consequences? Will my repo be unusable? My intuition says no, but I'd like some opinions. Thanks!


Solution

  • git is supposed to be always safe from interruptions like this. If you are worried, though, I suggest Ctrl+Z and then run a git fsck --full to make sure the system is consistent.

    There are a number of git-config variables which might help your git-gc go faster. I use the following on one particular large repo, but there are many more options to randomly try (or carefully study, whichever).

    git config pack.threads 1
    git config pack.deltaCacheSize 1
    git config core.packedGitWindowSize 16m
    git config core.packedGitLimit 128m
    git config pack.windowMemory 512m
    

    These only help if your problem is that you are running out of memory.

    Note that Brian J Murray reports for best (git-gc) performance, pack.threads should be set to the number of cores you have. Also note the other answer by VonC which says you can trade gc performance against disk usage by setting gc.aggressiveDepth to a smaller value than the default of 250.