Git 使用变更集而不是版本的任何非分布式版本控制?

Git 使用变更集而不是版本的任何非分布式版本控制?,git,version-control,Git,Version Control,我已经通过了版本控制。信不信由你,我从SCC开始。与RCS合作。移动到CVS。被迫使用Visual SourceSafe,并对此深恶痛绝。我对颠覆很满意 我一直在研究新的分布式VCS-Git、Hg等,它们看起来很复杂。我怀疑他们是否比SVN有足够的优势,值得花时间让整个团队移到其中一个团队 但我在想。据我所知,Git与SVN相比有两个真正的变化。首先,分布式存储库。第二,通过变更集而不是版本管理合并 我不认为我是唯一一个第一优势毫无意义的人。对于我们的业务,我们需要一个存储库。SVN可以做到这一

我已经通过了版本控制。信不信由你,我从SCC开始。与RCS合作。移动到CVS。被迫使用Visual SourceSafe,并对此深恶痛绝。我对颠覆很满意

我一直在研究新的分布式VCS-Git、Hg等,它们看起来很复杂。我怀疑他们是否比SVN有足够的优势,值得花时间让整个团队移到其中一个团队

但我在想。据我所知,Git与SVN相比有两个真正的变化。首先,分布式存储库。第二,通过变更集而不是版本管理合并

我不认为我是唯一一个第一优势毫无意义的人。对于我们的业务,我们需要一个存储库。SVN可以做到这一点,Git也可以做到这一点。Git可以管理分布式存储库,这对其他人可能是一个好处,但对我们却没有任何好处

不过,通过变更集管理合并对我们来说是有益的。我们用多个分支管理多个项目,一些子项目由多个父项目共享。使用SVN管理需要跨这些分支进行的更改要比使用CVS容易得多,但这绝不是无痛的。Git的变更集方法看起来会带来真正的好处

我想知道的是,Git增加的复杂性有多少是由于使用了多个存储库,有多少是使用变更集所固有的?使用变更集但不提供多个存储库的VCS能比Git更简单吗


还有,有没有哪家风险投资公司能够处理比Git更简单的变更集呢?

我想说的是Git的学习曲线,它非常值得任何类型的使用

我不太确定你用“变更集”来描述什么,但DARC用“补丁集”来描述事情,这可能是类似的。这也是一个DVCS,但有点不同。我并不真正理解DARC和git,尽管我偶尔被迫使用它。这可能就是你要找的


我认为故意避免DVCS是一个错误。您仍然可以完全使用一个中央存储库。分布式部分在与internet断开连接时非常适合工作,而且可靠性也很高。您不依赖于服务器。当我在火车上花6个小时做我的项目时,我可以完成很多工作,因为我不依赖于服务器。在服务器出现问题的情况下,当每个拥有签出副本的人都拥有整个副本时,您不会丢失任何东西。

我不确定您所说的“变更集”或“版本”是什么意思。在我看来,事实恰恰相反。git存储数据的方式是存储每个文件的完整内容。另一方面,SVN只存储新版本的差异

分布式存储库特性是一个被严重低估的特性。在我切换到git之前,我也没有看到它的潜力。但是拥有本地提交和本地分支是一个致命的特性

SVN有外部程序来处理子存储库。在git中,这称为子模块(有点不同)。这不应该是一个决定性因素,因为SVN和git都支持它。当然,除非你不喜欢git的工作方式


我建议您观看这个名为的演讲,它将解释git是如何工作的。特别是“VCS分类法”幻灯片很好地解释了不同VCS之间的根本区别。

Subversion确实有变更集的概念,您可以指定变更集。您可以合并单个变更集或一系列变更集。在幕后,Subversion实际上就是这样存储每次提交的,单位为/db/revs/(至少对于基于文件的存储)

与Subversion相比,我认为Git的一个优势是,当从分支A到分支B合并多个变更集时,分支B保留每个变更集,而在Subversion中,它被压缩为一个变更集,“看起来”所有变更都是由提交合并的用户完成的。虽然您可以沿着历史追溯到旧分支以查看Subversion中的每个变更集,但这并不方便


Git还有一些强大的命令来查看分支之间变更集的差异。Subversion 1.5中引入的合并跟踪尝试做类似的事情,但过于复杂且不直观。

阅读这篇博客文章,了解为什么git可能比您想象的更适合您的公司环境(完全披露:我写了这篇文章):


然而,如果您坚持采用集中模式,Bazaar可以在集中模式下运行。不过,读完这篇博文后,你很有希望看到为什么集中模式实际上有缺点。

这并不能回答这个问题。我在与中央存储库位于同一局域网的桌面上进行所有开发,因此不存在真正的远程开发问题。如果您使用签出副本作为备份策略,那么您就做错了。备份应该是备份。每个人都有一个完整的副本,这真的是防止任何东西死亡的一种无与伦比的方法。它不是备份的替代品,但它帮助很大。它也是一种对大量位置进行连续备份的系统。对于服务器备份,备份之间通常有相当大的间隔。我认为Git并不比Subversion更难学(免责声明:我也使用了这两种方法,但仅用于小型单人项目),并且有很多介绍性材料可用,例如,请参阅,以获得CVCS和DVCS之间差异的良好说明(集中式vs.分布式)分布式的IMO有一些并不明显的优点:合并:分布式VCSE必须具有非常强的合并能力,而非分布式VCSE必须具有非常强的合并能力