所有不同类型的版本控制之间有什么区别?

Translate

至少有10个人在SO上被告知,版本控制是一件好事,即使只是我,我现在还有一个后续问题。

所有不同类型的版本控制之间有何区别?是否有任何人都知道的关于版本控制的指南非常简单易懂?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

埃里克·水槽(Eric Sink)良好的源代码控制概述。也有一些现有 问题在这里。

来源
Translate

我们似乎处在版本控制的黄金时代,有很多选择,所有选择都有其优缺点。

这是我最常使用的工具:

  • svn-当前最受欢迎的开源软件?
  • git-自从Linus切换到它以来非常热
  • 善变-我认识的一些聪明人会发誓
  • cvs-每个人都从
  • perforce-恕我直言,最好的功能,但它不是开源的。不过,两用户许可证是免费的。
  • visual sourcesafe-在Microsoft世界中我并不多,所以除了人们喜欢Microsoft的所有内容时,我都不喜欢这个。
  • SCCS-为了历史的利益,我们提到了这一点,其中有许多曾曾祖父
  • rcs-以及以上许多的祖父

我的建议:git,svn或perforce都是最安全的,因为很多人都使用它们,它们是跨平台的,具有良好的GUI,您可以购买有关它们的书籍,等等。

不要考虑cvs,sccs,rcs,它们是古董。

令人高兴的是,由于您的项目相对较小,因此,一旦您经验丰富并决定要与其他系统一起使用,便可以将代码移至新系统。

来源
Translate

对于刚开始使用版本控制的所有人:

由于炒作,请勿使用git(或hg或bzr)

使用git(或hg或bzr),因为它们是更好的工具用于管理源代码而不是SVN。

我在工作中使用了SVN几年了,六个月前切换到git。如果不先学习SVN,在使用DVCS时我将完全迷失。

对于刚开始使用版本控制的用户:

  • 首先下载SVN
  • 学习为什么您需要版本控制
  • 了解如何提交,签出,分支
  • 了解为什么在SVN中进行合并如此痛苦

然后切换到DVCS并学习:

  • 如何克隆/分支/提交
  • 合并分支很容易(让分支疯狂!)
  • 重写提交历史记录并保留分支很容易
    与主线保持最新(git rebase -i,)
  • 如何发布您的更改,以便其他人可以受益

tldr;人群:

从SVN开始,学习基础知识,然后毕业于DVCS。

来源
Translate

我将从以下内容开始:

阅读完后,下载并安装SVN, 乌龟SVN并略读本指南的前几章并开始。

来源
Translate

版本控制对于开发来说是必不可少的,即使您自己进行工作,因为它可以保护您免受自己的伤害。如果您犯了一个错误,那么回滚到您知道可以正常工作的代码的先前版本很简单。这也使您可以自由探索和尝试代码,因为您不必担心自己的操作是否可逆。版本控制系统(VCS)有两个主要分支,即集中式和分布式。

集中式VCS基于使用中央服务器的方式,每个人都在其中“签出”一个项目,对其进行处理,然后将其更改“提交”给服务器,以供其他人使用。主要的集中式VCS是CVS和SVN。两者都受到了严厉批评,因为“合并”“分支机构”给他们带来极大的痛苦。 [TODO:撰写关于什么是分支以及为何难以使用CVS和SVN进行合并的说明]

分布式VCS让每个人都有自己的服务器,您可以在其中“拉”出别人的更改并将“推”到服务器。最常见的分布式VCS是Git和Mercurial。 [TODO:在分布式VCS上写更多内容]

如果您正在从事一个项目,我强烈建议您使用分布式VCS。我建议使用Git,因为它的速度非常快,但由于使用起来过于困难而受到批评。如果您不介意使用商业产品,BitKeeper可能易于使用。

来源
Translate

回答另一个问题在这里也适用,最重要的是

乔恩·沃克斯说过:
关于版本控制,最重要的是:

刚开始使用它

他的回答更加详细,我不想被指责为抱怨主义,所以请看一看。

来源
Translate

简单的答案是,您喜欢“撤消”按钮吗?答案当然是肯定的,因为我们人类一直在犯错误。

作为程序员,在通常情况下,可能需要花费几个小时的测试,代码更改,覆盖,删除,文件移动和重命名,然后才能确定出尝试解决问题的方法是完全错误的,并且代码比我们开始时更容易出错。

因此,“源代码管理”是一个巨大的“撤消”按钮,用于将代码恢复为草绿色且食物丰富的早期时间。不仅如此,由于源代码管理的工作原理,您仍然可以保留已损坏代码的副本,以防万一您想再次引用该代码几周,并从中汲取一些好主意。

我个人(虽然可能被称为过大杀伤力)使用Source Gear Fortress的免费单用户许可版本(这是他们的具有错误跟踪功能的Vault源代码控制产品)。我发现UI确实非常易于使用,它支持checkout> edit> checkin模型和edit> merge> commit模型。但是,设置起来可能会有些棘手,需要您运行ISS和SQL Server的本地副本。您可能想尝试一个较小的程序,如此处其他答案推荐的程序。看看自己喜欢什么,买得起什么。

来源
Translate

马克说:

git-自从Linus切换到它以来非常热

我只想指出,Linus没有切换到它,Linus它。

来源
Translate

如果您在Windows环境中独自工作,则单用户许可证SourceGear的Vault是免费的。

来源
Translate

我们使用并喜欢水星。它遵循分布式模型-消除了一些必须“签入”工作的感觉。 Mozilla有搬到水星,这是一个很好的信号,它不会很快消失。我认为一个缺点是没有一个很好的GUI。但是,如果您对命令行感到满意,那么它将非常方便。

商业文件 非官方手册

来源
Translate

无论使用哪种类型,都只需开始使用源代码控制。使用什么都没有关系;重要的是使用它

来源
Translate

像其他所有人一样,SC确实取决于您的需求,预算,环境等。

从根本上讲,源代码控制旨在提供所有代码的中央存储库,并跟踪谁在什么时候对其进行了处理。应该有完整的历史记录,并且您可以获得的产品具有完整的变更日志,审核,访问控制等功能。

当您开始考虑将SC整合到您的环境中时(无论是您的个人代码和文档还是大型公司),那里的每个产品都会开始发光(可以这么说)。当人们使用它们时,他们发现该工具有局限性,因此人们会编写新的局限性。 SVN诞生于创建者在CVS中看到的局限性。 Linus想要Linux内核更好的东西,所以现在我们有了吉特.

我会说开始使用一个(像SVN这样非常流行并且非常易于使用的东西),然后看看它会如何发展。随着时间的推移,您可能会发现您需要其他功能或需要与其他系统进行交互,因此您可能需要SourceSafe或其他工具。

源代码管理始终很重要,尽管您可以手动对PSD文件或其他版本进行重新编号,但是您会忘记一次或两次运行该批处理脚本,或者可能忘记了哪个编号随着变化。这就是大多数SC工具都可以提供帮助的地方(只要您签入/签出)。

来源
Translate

另请参阅以下SO问题:

来源