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

时间:2008-08-06 18:58:54

标签: version-control

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

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

13 个答案:

答案 0 :(得分:20)

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

以下是我最常用的内容:

  • svn - 目前最受欢迎的开源?
  • git - 自从Linus切换到它后非常热
  • mercurial - 我认识的一些聪明人发誓
  • cvs - 每个人都从
  • 切换的人
  • perforce - imho,最好的功能,但它不是开源的。但是,双用户许可证是免费的。
  • visual sourcesafe - 我在微软的世界里并不多,所以我不知道这个,除了人们喜欢嘲笑它,因为他们对微软的所有东西都不屑一顾。
  • sccs - 为了历史的兴趣,我们提到了这个,上面很多
  • 的曾祖父
  • rcs - 以及上述许多
  • 的爷爷

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

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

好处是,由于您的项目相对较小,一旦您更有经验并决定要使用其他系统,您就可以将代码移动到新系统。

答案 1 :(得分:15)

Eric Sink有一个good overview of source control。 SO上还有一些existing questions

答案 2 :(得分:6)

对每个人开始使用版本控制:

请不要因为炒作而使用git(或hg或bzr)

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

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

对于刚开始使用版本控制的人来说:

  • 首先下载SVN
  • 了解为什么需要版本控制
  • 了解如何提交,结帐,分支
  • 了解为什么在SVN中合并会如此痛苦

然后切换到DVCS并学习:

  • 如何克隆/分支/提交
  • 合并你的分支是多么容易(go branch crazy!)
  • 重写提交历史记录并使您的分支机构与主线(git rebase -i,)保持同步是多么容易
  • 如何发布您的更改以便其他人可以受益

tldr;人群:

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

答案 3 :(得分:5)

版本控制对于开发至关重要,即使您自己工作也是如此,因为它可以保护您自己。如果你犯了一个错误,回滚到你知道有效的代码的早期版本是一件简单的事情。这也让您可以自由地探索和试验您的代码,因为您无需担心您所做的事情是否可逆。版本控制系统(VCS)有两个主要分支,即集中式和分布式。

集中式VCS基于使用中央服务器,每个人都“检出”一个项目,对其进行处理,并将其更改“提交”到服务器以供其他人使用。主要的集中式VCS是CVS和SVN。两者都受到严厉批评,因为“合并”“分支”对他们来说非常痛苦。 [TODO:写下关于什么分支的解释以及为什么合并对于CVS& SVN]

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

如果您正在开展项目,我强烈建议您使用分布式VCS。我推荐Git,因为它速度极快,但被批评为太难用了。如果您不介意使用商业产品,BitKeeper应该很容易使用。

答案 4 :(得分:5)

我会从:

开始

然后,在您阅读完毕后,请下载并安装SVNTortoiseSVN并浏览book的前几章并开始使用。

答案 5 :(得分:2)

简单的答案是,你喜欢撤消按钮吗?答案当然是肯定的,因为我们作为人类一直都会犯错误。

作为程序员,通常情况下,我们可能需要几个小时的测试,代码更改,覆盖,删除,文件移动和重命名,然后我们尝试使用方法来解决问题完全是错误的一,而且代码比我们开始时更加破碎。

因此,源代码控制是一个巨大的撤销按钮,可以将代码恢复到草地为绿色且食物丰富的早期时间。不仅如此,由于源代码控制的工作方式,你仍然可以保留一份破损代码的副本,以防万一你需要再次引用它,并挑选出任何好的想法。

我个人(虽然它可能被称为overkill)使用Source Gear Fortress的免费单用户许可版本(这是他们的Vault源控制产品,具有错误跟踪功能)。我发现用户界面非常简单,它支持结账>编辑>签入模型和编辑>合并>提交模型。设置它可能有点棘手,要求您运行ISS和SQL服务器的本地副本。你可能想尝试一个较小的程序,就像这里的其他答案推荐的程序一样。看看你喜欢什么,你能买得起什么。

答案 6 :(得分:2)

马克说:

  git - 自从Linus改用它以来非常热门

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

答案 7 :(得分:2)

answeranother question也适用于此处,最重要的是

  

Jon Works说:
  版本控制最重要的是:

     

只是开始使用

他的回答更详细,我不想被指责为plaigerism,所以看一看。

答案 8 :(得分:1)

如果您在Windows环境中独立工作,那么SourceGear Vault的single user license是免费的。

答案 9 :(得分:1)

我们使用并且喜欢Mercurial。它遵循分布式模型 - 它消除了一些必须“检入”工作的感觉。 Mozilla有moved to Mercurial,这是一个很好的迹象,它不会很快消失。在我看来,一个骗局就是没有一个非常好的GUI。但是,如果您对命令行感到满意,那么它非常方便。

Mercurial Documentation Unofficial Manual

答案 10 :(得分:0)

与其他人一样,SC实际上取决于您的需求,预算,环境等。

从根本上说,源代码控制旨在提供所有代码的中央存储库,并跟踪谁在何时执行了操作。应该有完整的历史记录,您可以获得完整的更改日志,审核,访问控制等等的产品......

当您开始了解您希望或需要将SC纳入您的环境时(无论是您的个人代码和文档还是大型公司),每个产品都会开始闪耀(可以这么说)。当人们使用它们时,他们会发现该工具具有局限性,因此人们会编写新的工具。 SVN诞生于创作者用CVS看到的限制。 Linus想要更好的Linux内核,所以现在我们有 git

我会说开始使用一个(像SVN这样非常流行并且非常容易使用),看看它是怎么回事。随着时间的推移,您可能会发现您需要一些其他功能,或者需要与其他系统连接,因此您可能需要SourceSafe或其他工具。

源代码控制总是很重要,虽然您可以在处理它们时手动重新编写PSD文件的版本或其他东西,但是您将忘记运行该批处理脚本一次或两次,或者可能忘记哪个数字与哪个变化有关。这就是大多数SC工具可以提供帮助的地方(只要您办理入住/退房手续)。

答案 11 :(得分:0)

无论您使用何种类型,都可以开始使用源代码管理。你用的并不重要;这是重要的使用

答案 12 :(得分:0)

另见这个问题: