Git 为什么基于合并的SCM优于基于锁的系统?

Git 为什么基于合并的SCM优于基于锁的系统?,git,version-control,merge,locking,Git,Version Control,Merge,Locking,到目前为止,我们的开发团队已经使用了基于锁的SCM(源代码控制管理)系统。 最近,我们面临着用新的、更好的系统取代该系统的必要性 作为一个新系统,我建议使用Git。 除了我们中的一些人,包括我,他们从来没有听说过Git。 所以我给了一些解释 问题是,他们认为合并系统而不是锁定系统是可行的 为了安全起见,无法保持源代码的完整性 尽管我解释了Git的系统以及许多著名的项目 已经在使用Git系统,并在其中享有极高的声誉, 他们从来没有感到放松的吉特 我怎样才能让他们放心呢? 我如何解释合并不是问题?从

到目前为止,我们的开发团队已经使用了基于锁的SCM(源代码控制管理)系统。 最近,我们面临着用新的、更好的系统取代该系统的必要性

作为一个新系统,我建议使用Git。 除了我们中的一些人,包括我,他们从来没有听说过Git。 所以我给了一些解释

问题是,他们认为合并系统而不是锁定系统是可行的 为了安全起见,无法保持源代码的完整性

尽管我解释了Git的系统以及许多著名的项目 已经在使用Git系统,并在其中享有极高的声誉, 他们从来没有感到放松的吉特

我怎样才能让他们放心呢?
我如何解释合并不是问题?

从本质上讲,基于合并的系统并不比基于锁的系统好。这完全取决于你的项目。如果您有非mergable文件,那么基于锁的系统可能会更好

不过,如果我没弄错你的问题,你想知道如何方便你的同事

你可以说linux是一个很好的例子,linux的开发在基于锁的系统中是不可能的。然而,linux拥有巨大的开发基础,而您的团队可能没有。所以这真的不是争论。如果对您来说不是问题,那么可伸缩性和多用户的所有好处都不适用

然而,您的同事担心代码的完整性。这就是为什么你们应该改变制度。基于锁的方法是以文件为中心的。(当然,对于这个问题有一些中间解决方案,比如svn,但假设您使用了cvs och vss)。但是,单个文件很少由自己分发

也就是说,一个文件中的更改将影响其他文件,因为它们彼此通信。使用基于锁的方法,您永远无法确定您的更改将如何影响其他同事的更改。如果您将文件A更新为rev 2,并使用文件B rev 1对其进行测试,然后您的同事将文件B更新为rev 2,您如何知道它会工作?为什么你的同事会认为这是个问题?他只碰了文件B,为什么要测试文件A


使用git,您可以采用基于系统的方法来解决问题。每一次更改都是对整个存储库的更改,您可以始终拥有一个保证工作的版本。关键是,仅仅查看一个文件,你就破坏了代码的完整性。

如果数千名开发人员同时工作的七年连续开发历史(记录在每个linux repo中)不足以证明其可靠性,那么很难知道该怎么做。但没有什么能阻止你自己使用git:对svn或任何工作树进行repo,在获取更新时提交更新,在克隆中工作,进行自己的合并,然后推到双代理repo并将结果签入基于锁的repo。其他人可能会注意到,您可以从自己的工作中获得所有好处。基于锁的系统比基于合并的系统需要更多的注意。如果有人把某个东西锁起来,然后离开一天,没有人可以不使用一些非常丑陋的技巧来触摸该文件。对于基于合并的系统,此问题不存在。对于软件开发人员来说,合并并不是一件困难的事情。