Re: People unaware of the importance of "git gc"?
From: Matthieu Moy <hidden>
Date: 2016-06-15 22:43:33
Pierre Habouzit [off-list ref] writes:
On Wed, Sep 05, 2007 at 08:39:52AM +0000, Matthieu Moy wrote:quoted
Johan Herland [off-list ref] writes:quoted
When git-fetch and git-commit has done its job and is about to exit, it checks the number of loose object, and if too high tells the user something like "There are too many loose objects in the repo, do you want me to repack? (y/N)". If the user answers "n" or simply <Enter>,I don't like commands to be interactive if they don't _need_ to be so. It kills scripting, it makes it hard for a front-end (git gui or so) to use the command, ...There is absolutely no problem here, as it can be avoided if the output is not a tty. It's not _that_ hard to guess if you're currently running in a script or in an interactive shell after all.
I do find it hard to guess _reliably_ if you're running interactively or not. For example, I've been bitten recently by "git log" running inside a pager while I was launching it non-interactively inside Emacs (as part of DVC). I don't know whether this was git's or Emacs's fault, and the fix was not too hard (GIT_PAGER=cat), but it took some of my time to get it working. Adding more interactive stuff means adding more opportunities for this kind of problems. None will be a huge problem, but each problem will take some time to be fixed (I'm pretty sure adding an interactive prompt in git-commit will break DVC's commit functionality, and we'll have to fix it).
Really, git commit/fetch/... whatever suggesting to repack/gc when it believes it begins to be critical to performance is not a bad idea.
_Suggesting_ is a good idea, definitely. Something like
if (number_of_unpacked > 1000 && number_of_unpacked < 10000) {
printf ("more than 1000 unpacked objects. Think of running git-gc\n");
} else if (number_of_unpacked >= 10000) {
printf ("HEY, WHAT THE HELL ARE YOU DOING WITH >10000 UNPACKED OBJECTS???\n"
"I TOLD YOU TO REPACK\n");
}
would be fine with me. The proposal to run git-gc in the background,
with low priority seems to be a good idea too.
But please, don't put an interactive prompt where it's not needed.
--
Matthieu