镜像的 git 裸存储库是否需要 git gc,其中用户不会推送任何更改



我有一个名为" master.git"的git Bare存储库,我经常运行" git gc -prune =现在",以定期进行。

我还有另一个名为" slave.git"的Git Bare存储库,该存储库是使用" Master.git"的MIRROR选项创建的。但是我已经停止了" git gc",甚至不会通过在gitconfig中自动运行。

通过与master.git.git-> slave.git.git

推动 - force -mirror选项,将"从slave.git"与" master.git"保持同步。

Master.git存储库将从开发人员和 slave.git 中获取更改, not get 从开发人员那里进行任何更改,就像读取单。

因此,问题是Master.git存储库是否定期进行gc,并且其更改被镜像选项推向从slave.git。镜像已经GC'Ed存储库奴隶不需要垃圾收集吗?

我有一个名为" master.git"的Git Bare存储库,我定期定期运行git gc --prune=now

这肯定是过度的。做例如GC之前和之后的存储库中的du -sh objects查看您节省了多少空间。我会推荐git gc --auto

通过与master.git-git-> slave.git […]推动--force --mirror选项的"从slave.git"与" master.git"同步,将需要一个" git gc"以保持运行以保持它优化了或既然我们正在镜像已经GC的存储库从属。git不需要垃圾收集?

当您按下或获取时,将在包装中发送新对象。当有太多的情况下,git gc将融合包装(现在有50个,它是从2008年的20种筹集的),因此最终它值得一提。

git push --mirror镜像方面意味着refs(分支和标签)以相同的名称可用,并指向与源相同的对象。这并不意味着底层数据库是确切的镜子。

是的,您仍然需要在镜像目的地中进行gc,因为放弃旧物体时会累积垃圾。推动操作不会仅仅因为对象不再存在于源中的对象。

最新更新