2014-05-25 125 views
4

我已经关闭了git令人讨厌的自动重新打包功能(我认为大多数git用户在使用git时都知道“重新打包以获得最佳性能”的消息),而是使用cronjob在夜间调用“git gc”。“git gc”是否也运行“git repack”?

但是我不确定这是否足够,以及我是否也应该在“git gc”之前或之后运行“git repack”。

“混帐重新包装”和“混帐气相色谱法”的联机手册没有提到和“混帐重新打包”的联机帮助两者之间有什么联系,实际上包含了这句话:

相反,宽松可达对象将根据 正常过期规则修剪下一个git gc调用。

这表明“git gc”不足以满足所有的管理任务,“git repack”也是需要的。这是正确的,什么家务命令应该用于混帐?

回答

6

git repack只是重新包装对象。

git gc重新包装它们并丢弃旧的不可达对象。

要验证您可以在git gc之前和之后执行类似find .git/objects的操作:在您将所有新对象看作单独文件之前。之后应该只有一个大包文件。

有关详细信息,您还可以查看代码:在内置/ gc.c中,repack命令是preparedexecuted

+0

因此,问题的答案将是:“不,git-gc足够用于家务管理,不需要单独调用git-repack。”,对吗? – Robby75

+0

答案是“是的,'git gc'也运行'git repack'”;)因此,'git gc'就足够了。 – michas