GIT和Perforce:分支策略

时间:2012-09-27 23:35:00

标签: git perforce

我正在学习两个源代码控制系统,并发现他们的分支策略非常不同。

Perforce将其所有原始文件复制到新分支,尽管它确实调整了一些技巧(例如,懒惰副本,“p4 -v”)以防止空间增长,但最终它将消耗更多空间并留下更多元数据。相反,在GIT中,分支基本上是指针的移动。我想知道为什么Perforce不能适应同样的方法?这是因为它带来了存储快照的负担(如在git中)而不是文件差异(如在Perforce中)?

另外,为什么GIT存储文件的快照而不是差异?有没有必要这样做?这是否意味着一般情况下GIT代码存储库将大于Perforce?如果要在两个系统中存储相同的东西? GIT提交需要更长的时间吗?

2 个答案:

答案 0 :(得分:4)

Git实际上也存储增量。这些被称为包文件。如果您稍微更改了一次文件100次,则不会保留100个略有不同的对象。 (更多这里:http://git-scm.com/book/en/Git-Internals-Packfiles

快照是绝对的事实,这就是git存储这样的历史的原因。它采用简单的方法,不假设文件以某种方式改变的方式和原因。它的愿景是让上面的工具分析历史记录,为您提供诸如“此文件此时已重命名”等信息。

如果这是历史记录的一部分,那么如果您构成重命名的阈值与删除和创建的更改相比,则必须重写所有内容。简单就是更好。事实上,这是在linux上设计的,用于跟踪linux源代码,它遵循该平台的类似理念。

答案 1 :(得分:1)

这实际上是一个复杂的主题,但是对于如何处理分支和文件历史记录存在权衡。 Git分支位于存储库级别,而Perforce可以非常精细,允许您分支单个文件,或者通常独立开发的多组文件。

正如你所提到的,Git分支非常快速和轻量级,而Perforce分支可以让你更多地控制发生的事情。