2017-07-08 37 views
1

我有一个在origin远程的master分支的git仓库。团队中的其他开发人员将他们自己的dev/feature分支推向同一个远程。最终这些分支机构将被丢弃,或者壁球-并入master并稍后删除。一个git分支可以在同一个远程中膨胀吗?

现在团队中的某些开发人员并不熟悉git,并可能通过添加二进制文件等来扩大其功能分支的历史记录。最终,他们将发送拉取审阅请求,该请求必须经过审核,审阅者将执行没有二进制文件被添加。

在这种情况下,我预计dev/feature分支会变得臃肿(例如,git可能变慢,拉/克隆它们可能需要一段时间,等等)。现在的问题是,这是否会导致与那些没有臃肿的同一个远程中的其他分支机构合作的人员出现任何性能问题。

+0

考虑使用[git-lfs](https://git-lfs.github.com/)作为二进制文件,以避免在版本控制中仍然有二进制文件时出现回购膨胀。 – Schwern

+0

如果您没有任何Git自身没有的分支访问控制机制,其他开发人员在克隆/拉取/获取时也会获取与二进制相关的Git数据。 – ElpieKay

回答

2

问题是,这是否会导致任何性能问题,只与在同一个远程的其他分支工作的人没有臃肿。

如果臃肿分支推,是的,它会影响其他的性能,但仅用于git fetch(包括git pull)。它会默认下载每个分支的全部历史记录和全部内容。有各种各样的方法,如git clone --single-branch只得到master,但下面有更好的解决方案。

但它不应该影响其他操作。 git diffgit log等......都应该基本上不受影响。

与其阻止人们将二进制文件放入版本控制或仅克隆某些分支,请使用git-lfs。这是两个世界中最好的。您可以将二进制文件放入版本控制中,但实际内容存储在存储库之外,以避免资源库膨胀。

+0

git-lfs是一个不错的选择,但据我所知,我们必须建立一组将被git-lfs(例如* .png,* .a)跟踪的路径全局模式。我担心的是,人们不可避免地最终会提交绕过我们设置的所有模式的二进制文件。 – roim

+0

@roim有了一个体面的网络,如果有偶尔的二进制提交,它不应该是一个问题。你可以用BFG追溯修复它。而且,由于你正在瓜分合并分支,该分支中的任何臃肿历史将被垃圾收集。 – Schwern

+0

啊,所以我想我错过了这个答案:当功能分支被删除/垃圾收集时,膨胀将结束。是这样吗?如果是这样,可能值得加入答案,即使我们没有最终使用git-lfs,我也会在晚上睡得很好。我喜欢lfs的想法,但在我的环境中对它的支持仍然有点实验性。 – roim

相关问题