使用Git强制远程Repo压缩(GC)

使用Git强制远程Repo压缩(GC),git,git-remote,git-gc,Git,Git Remote,Git Gc,我正在使用Git对一系列二进制文件进行版本设置。它们压缩得相当好,但当我推动它们时,我的中央回购似乎没有压缩。他们吃掉了我相当多的配额,所以我想看看是否有办法迫使远程回购进行GC 这可能吗?我正在工作,所以我不相信我有SSH访问权限进入和GC回购自己。有什么想法吗?谢谢。表单git gc: 一些git命令可能会自动运行git-gc;有关详细信息,请参见下面的--auto标志 此外: --自动的 使用此选项,git gc检查是否需要任何内务管理;如果没有,它将退出而不执行任何工作。一些git命令在

我正在使用Git对一系列二进制文件进行版本设置。它们压缩得相当好,但当我推动它们时,我的中央回购似乎没有压缩。他们吃掉了我相当多的配额,所以我想看看是否有办法迫使远程回购进行GC

这可能吗?我正在工作,所以我不相信我有SSH访问权限进入和GC回购自己。有什么想法吗?谢谢。

表单
git gc

一些git命令可能会自动运行git-gc;有关详细信息,请参见下面的--auto标志

此外:

--自动的

使用此选项,git gc检查是否需要任何内务管理;如果没有,它将退出而不执行任何工作。一些git命令在执行可能创建许多松散对象的操作后运行git-gc--auto

如果存储库中有太多松散对象或太多包,则需要进行内务管理。如果松散对象的数量超过gc.auto配置变量的值,则使用git repack-d-l将所有松散对象合并到一个包中。将gc.auto的值设置为0将禁用松散对象的自动打包

如果包的数量超过gc.autopacklimit的值,则使用git repack的-a选项将现有包(用.keep文件标记的包除外)合并到单个包中。将gc.autopacklimit设置为0将禁用包的自动合并

最后:

git-gc--auto命令将运行pre-auto-gc钩子。有关更多信息,请参见githooks(5)


如果你自己不能运行
git gc
,你就必须让它自动运行。那时你不会完全控制它,但你至少应该能够让它运行

git-gc--auto
由几个命令运行;这里相关的一个是receive pack,它在远程上运行,作为推送的一部分来接收数据包
gc——仅当有足够的松散对象时才自动重新打包;切断由配置参数gc.auto确定,默认为6700

如果您有权访问远程设备的gitconfig,则可以暂时将该切断设置为1。回购协议中应该至少有一个松散的对象,这样下次推时,
gc--auto
就会执行它的操作


如果你不能访问遥控器的gitconfig,我所能想到的就是人为地创建一堆松散的对象。您可以创建一个分支,向其提交一组小文件(具有不同的内容),将分支推送到远程,然后从远程删除分支。(改变内容很重要,否则他们只会使用相同的斑点。)冲洗并重复。

这确实是他们需要解决的问题。他们可以通过post接收钩子或cron作业或类似的方式来完成,但如果他们要维护您的存储库,这是其中的一部分,原因有很多。

您可以访问远程设备的gitconfig吗?我倾向于同意,尽管有时您不能等待其他人解决他们的问题。这也可能是因为他们确实运行了相当数量的
gc
,但是二进制文件导致文本内容比平时膨胀得更快。如果他们不使用gc,那么他们会卖给我更多的空间。对他们来说,不从商业角度出发几乎是有道理的。我可以试着制作一个能输出7000个左右文本文件的小应用程序。我认为我没有访问配置的权限。我会告诉你进展如何的,谢谢!那是什么,一个shell脚本?不管怎么说,我只是在Qt里做了一些很快的东西,把所有松散的物体都推了起来。这似乎对我的空间使用没有影响。我只需要试着联系ProjectLocker,看看发生了什么事。谢谢大家的帮助。@jocull:我不记得这些东西是如何在远端打开的。我个人可能会试着做得太过火了,以防万一。是的,这是一个壳牌一号班轮。。。不过我显然忘了一半。读取n时,最后一部分应读取
;执行echo$n>$n.txt;完成
我决定删除Project Locker上的回购协议,然后用相同的名称重新创建它。我在本地运行了“git gc”,然后推动了整个回购。它现在使用的空间是以前的一半。@jocull:嗯,这是运行
gc
的一种方法!在我看来,能够完全删除回购协议似乎很奇怪,但不能编辑其配置,但确实有效!