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

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

所有不同类型的版本控制之间有什么区别,并且有没有人知道版本控制的指南非常简单易懂?

0
关于同一主题的另一个近期问题
额外 作者 Yaakov Ellis,

13 答案

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

以下是我看到的最常用的:

  • svn - 目前最流行的开源软件?
  • git - 自Linus转向它以来非常热门
  • mercurial - 我认识的一些聪明人发誓了
  • cvs - 每个人都从中切换
  • perforce - imho是最好的功能,但它不是开源的。但是,双用户许可证是免费的。
  • visual sourcesafe - 我在微软的世界里并不多,所以我对此一无所知,除了人们喜欢在微软的所有东西上抹黑。
  • sccs - 为了历史利益,我们提到了这一点,
  • rcs - 以及上述许多
  • 的祖父

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

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

好的是,因为你的项目相对较小,所以一旦你更有经验并且决定要使用另一个系统,你将能够将你的代码移植到一个新的系统中。

0
额外
@maksimov,我曾经在ClearCase店工作过。我只是假装它从来没有发生过,如果有人说我做过,否认它会猛烈地否认!
额外 作者 Mark Harrison,
不幸的是,在职业生涯中,遇到ClearCase和CA SCM几乎是不可避免的。然而,普通人不会选择他们自己的项目。
额外 作者 maksimov,

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

Centralized VCS are based on using a central server, where everyone "checks out" a project, works on it, and "commits" their changes back to the server for anybody else to use. The major Centralized VCS are CVS and SVN. Both have been heavily criticized because "merging" "branches" is extremely painful with them. [TODO: write explanation on what branches are and why merging is hard with CVS & SVN]

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

如果您正在从事一个项目,我强烈建议使用分布式VCS。我推荐Git,因为它速度非常快,但被批评为太难使用了。如果你不介意使用商业产品BitKeeper据说容易使用。

0
额外

我会从以下开始:

然后,一旦你阅读了它,下载并安装 SVNTortoiseSVN 并浏览了并开始。

0
额外

如果您在Windows环境中独自工作,那么SourceGear的Vault的单用户许可证为自由。

0
额外

Eric Sink拥有源代码控制的良好概述。还有一些现有的 问题

0
额外

我们使用并喜欢 Mercurial 。它遵循分布式模型 - 它消除了一些必须“检入”工作的感觉。 Mozilla将转移到Mercurial ,这是一个好消息,它不会消失任何时间很快。在我看来,一个骗局是,它没有一个很好的GUI。如果你对命令行感到满意,但它非常方便。

Mercurial Documentation Unofficial Manual

0
额外
OpenJDK项目也进行了切换,并且Python语言正在切换到Mercurial。
额外 作者 Martin Geisler,

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

作为程序员,在我们制定出我们试图用来解决问题的方法之前,它经常会遇到几个小时的测试,代码更改,覆盖,删除,文件移动和重命名,这完全是错误的,代码比我们开始时更加破碎。

因此,源代码管理是一个大规模的撤销按钮,可以在草地变绿和食物丰富的时候恢复代码。不仅如此,由于源代码控制的工作原理,您仍然可以保留一份破损代码的副本,以防止再次引用该行后的几周内,樱桃会选择出现的任何好主意。

I personally (though it could be called overkill) use a free Single user license version of Source Gear Fortress (which is their Vault source control product with bug tracking features). I find the UI really simple to use, it supports both the checkout > edit > checkin model and the edit > merge > commit model. It can be a little tricky to set up though, requiring you to run a local copy of ISS and SQL server. You might want to try a smaller program, like those recommended by other answers here. See what you like and what you can afford.

0
额外

回答 另一个问题也适用于此,最重要的是

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

     

只要开始使用它

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

0
额外

另见这个SO问题:

0
额外

马克说:

git - 自Linus转向它以来非常热门

我只想指出,Linus并没有转向它,Linus 写道它。

0
额外
好吧,他从使用Bitkeeper转向编写和使用git。
额外 作者 Craig McQueen,

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

请勿因炒作而使用git(或hg或bzr)

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

我在工作中使用了SVN几年,并在6个月前切换到git。在没有先学习SVN的情况下,当使用DVCS时我会全然失落。

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

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

然后切换到DVCS并学习:

  • How to clone/branch/commit
  • How easy it is to merge your branches back (go branch crazy!)
  • How easy it is to rewrite commit history and keep your branches
    up to date with the main line (git rebase -i, )
  • How to publish your changes so others can benefit

tldr;人群:

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

0
额外
Hi @Will和@Spoike,我不能肯定地说,如果分布式版本控制对于新用户来说比学习更难学习。不过,我可以比较从Source Safe到CVS的转换,以及从SVN到Bazaar的过渡到SVN的过渡。当你从一个集中式工具移动到另一个集中式工具时,它们大多具有与不同(有希望改进)的界面相同的功能。当您转移到分布式工具时,存储库的使用方式和工作流程看起来有一个根本性转变。我发现我的头很难包住。
额外 作者 Don Kirkby,
@威尔罗伯森:我同意,我从来没有发现DVCS比CVCS更难。相反,更容易理解。例如。在git中设置回购协议要容易得多,而svn只需按照常规的trunk / branches / tags进行多步处理,即使它在本地计算机上也是如此。
额外 作者 Spoike,
我不明白这个“DVCS更难”的模因。在他们的基本化身中,hg和bzr至少和svn一样易于使用;实际上,我假设它更容易来运行 git init ,而不是以某种方式设置svn服务器。
额外 作者 Will Robertson,

只要开始使用源代码管理,无论使用什么类型。你使用什么并不重要;重要的是它的使用

0
额外

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

从根本上讲,源代码控制的目的是提供所有代码的中央存储库,并跟踪谁在什么时候做了什么。应该有一个完整的历史,你可以得到完整的更新日志,审计,访问控制等等的产品......

当你开始考虑如何将SC纳入你的环境(无论是你的个人代码和文档还是大公司)时,每个外面的产品都开始闪耀(可以这么说)。随着人们使用它们,他们发现该工具有局限性,所以人们写了新的。 SVN源于创作者用CVS看到的局限性。 Linus想要Linux内核更好,所以现在我们有 git

我会说开始使用一个(像SVN这是非常流行和非常容易使用),并看看它是如何去。随着时间的推移,你可能会发现你需要一些其他功能,或者需要与其他系统连接,所以你可能需要SourceSafe或其他工具。

源代码控制总是非常重要的,尽管你可以通过手动重新编号PSD文件版本或者在你使用它们时执行某些操作,但是你会忘记运行该批处理脚本一次或两次,或者可能忘记了编号有哪些变化。这就是大多数SC工具可以提供帮助的地方(只要您办理入住/退房手续)。

0
额外