6

作为源代码控制的初学者,最好的版本控制系统是什么?

4

16 回答 16

24

除了视觉源安全之外的任何东西;最好是支持分支和合并概念的。正如其他人所说,Subversion 是一个不错的选择,尤其是对于 TortoiseSVN 客户端。

请务必查看(请原谅双关语)Eric Sink 的经典源代码控制 HOWTO 文章系列

于 2008-08-22T20:09:20.993 回答
8

我建议您尝试使用 Subversion,例如使用1-click SVN installer。尝试在 SO 中搜索“Subversion”,您会发现大量问题的答案指向好的教程。

祝你好运!

于 2008-08-22T19:53:08.567 回答
8

我会直接去Git。我以前用过颠覆,但总觉得我做错了。Git 从第一天开始就有意义。

有用的资源:

于 2009-06-09T06:06:12.000 回答
5

我认为有几个核心概念值得学习:

  1. 签入/签出(显然)
  2. 本地版本与服务器版本
  3. 将本地工作空间映射/绑定到远程存储或存储库。
  4. 将您的更改合并回包含其他更改的文件中。
  5. 分支(它是什么,何时/为什么使用它)
  6. 将分支中的更改合并回主分支或主干。

大多数现代源代码控制系统都需要对上述主题有所了解,并且应该有助于您学习它们。然后你有分布式源代码控制,我没有任何经验,但应该相当复杂,可能不适合初学者。

Subversion很棒,因为它具有您想要的所有现代功能并且是免费的。

Git也正在成为一个越来越流行的选择,并且是 Subversion 的另一种免费或非常低成本的替代品。然而,关于分支和合并概念的知识对于使用 Git 至关重要。

您可以使用unfuddle作为一种免费且简单的方式来试验 Git 和 Subversion。我用它来为我过去从事的一些副项目托管几个 subversion 存储库。

于 2008-08-22T19:56:09.997 回答
3

我不是高级源代码控制用户,但我正在学习。以下是我对源代码管理产品的体验:

  1. 很久以前,我当时工作的公司决定使用源代码控制。他们向开发人员介绍了这个概念,并让每个人都愿意尝试一下。他们选择使用 PVCS,并实施了它。不久之后,开发人员将不得不协调锁定/解锁模块和对象,我们真的没有看到太多好处。

  2. 几年后,我正在制作一个开源项目,当时 ruby​​forge 正在提供 CVS 存储库。我试过了,它比 PVCS 稍微好一点。当然,我是唯一一个使用存储库的人。然而,当我尝试重新排列文件的结构时,我确实感到沮丧,因为我不喜欢我最初导入它们的方式。它在 CVS 中并没有真正奏效。

  3. 几年后,我从事另一个个人项目,我的网络托管服务提供商提供了易于设置的 Subversion (SVN) 存储库。我花了一些时间来让它正确启动并运行,但是一旦我通过了最初的学习曲线,我就喜欢它了。

  4. 不久之后,我意识到我喜欢拥有源代码控制,而我现在的工作没有它。所以我传福音,经过很长一段时间后,我的团队实施了 Source Safe,因为我们在 Visual Studio 中工作并且通常是 Microsoft 商店。我很想使用它,但不久我发现我丢失了文件,而且 Visual Studio 把东西放在了错误的地方,我会在一个项目上工作一段时间,然后将我的工作导出到另一个位置并发现它要么不会导出,要么只会导出解决方案中的一些项目。这让我意识到,即使我认为我使用的是“版本控制系统”,最安全、最健壮和最完整的代码副本就是我的工作副本。与源代码控制应该做的完全相反。

  5. 所以上周我对 Source Safe 感到厌倦了,所以我去搜索了。在研究了一些解决方案后,我决定尝试 git。我不会说这一切都是玫瑰,因为我再次有一些学习曲线可以让它做我想做的事情,但是,我非常喜欢它,可以将我所有的工作和个人项目都转换为它。关于它的真正好处之一是我不需要集中存储库,因此我可以使用它而无需在工作中通过大量繁文tape节来安装它。

所以简而言之,我会推荐 git,我在 Windows 中使用 Mysysgit,它还有一个额外的好处是给了我一个 bash shell。在 Linux 上,您可以从包管理器中安装它。如果你不喜欢 git,试试 subversion。如果您不喜欢其中任何一个,您可能也不喜欢 CVS 或 PVCS。在任何情况下都不要尝试 Source Safe,这太糟糕了。

于 2008-12-06T18:06:47.703 回答
2

我发现http://unfuddle.com让我免于安装 SVN 或 git 的麻烦。您可以在那里获得一个免费帐户并使用其中任何一个 - 并且您可以在那里使用您的 OpenID。

然后,您就不必为正确设置而烦恼,而是专注于如何使用它!

于 2008-08-22T20:39:40.390 回答
2

SourceGear.com 的 Vault 非常棒。它对单个用户免费,并提供了极好的 VS 2005/2008 界面。我喜欢它!

rp

于 2008-08-23T21:00:05.433 回答
1

@伊恩尼尔森

我同意你的观点,Source Safe 作为一个源代码控制系统很糟糕,但请记住,使用 Source Safe 比 Joel Spolsky 所说的“随身携带软盘”要好得多。

对于初学者来说,这可能不是一个坏主意,因为根本没有源代码控制的成本要高得多。

于 2008-08-23T20:55:44.120 回答
1

每个工具都有其优点和缺点。这很大程度上取决于您的要求是什么。不幸的是,与许多其他问题一样,它通常不是选择的最佳工具,而是某人熟悉的工具。例如,如果您不需要很多分支,并且您的团队很小且本地化,那么几乎所有 vcs 都可以完成这项工作(SourceSafe 除外)。如果您需要分支(这几乎必然意味着您还需要进行合并)、您的团队是分布式的、您需要高级安全性(不允许分包商访问整个源代码树)、任务跟踪等,情况就会发生变化。还有一个问题三种不同的成本:许可证成本、维护成本(有些工具非常复杂,实际上你需要有人来控制存储库)和培训成本。

因此,建议一种工具胜过另一种工具就像建议什么是最好的编程语言。

只是一些指针:

  • StarTeam 是我用过的最简单的工具。它只需要很少的培训。自从我成为维护者以来,我接受了为期一天的培训。这种维护每周花费我不到 30 分钟。我通过编写两页手册“培训”了用户,之后我几乎没有要回答的问题。
  • 就易用性而言,Continuus 是另一端。另一方面,任务处理很棒,它为发布管理提供了很好的支持。麻烦的是,即使是作为一个发布经理,我也从没想过发布发布的轻松(这是你曾经学会的,但这需要相当长的时间)应该比开发人员的日常工作更重要。
  • 工具之间的合并和分支创建差异很大。一些工具使这变得简单,例如 git 和 ClearCase(尽管后者非常慢),有些工具基本上迫使您手动进行合并。如果您需要进行大量合并,则成本可能会很高。ClearCase 在前面提到的所有三个类别中也很昂贵(尽管必须说我们使用了所有不必要的高级东西)。另一方面,Git 缺乏良好的 UI,并且一些概念与您可能习惯的不同。Git 的安全功能也缺乏(gitosis 解决了一些问题,但不是全部)。
  • 我使用的大多数工具也很慢。无论如何,像 PVCS/Dimensions 这样的工具都很慢(基本的东西,比如在存储库中打开一个目录),有些在更具体的方面非常慢(比如 ClearCase)。

从我使用的工具中,如果您的开发人员不是很有经验,我会选择 StarTeam(如果您不介意支付许可证,这非常昂贵),如果您有一些经验丰富的 vcs 人员可以设置环境,我会选择 git给其他人。Mercurial 看起来也是一个有趣的竞争对手,并且似乎有更好的用户界面。

Continuus、PVCS/Dimensions 和 ClearCase 对几乎任何项目来说都太慢、太复杂而且太贵了。如果有人坚持选择其中之一,我会选择 ClearCase。

我没有使用过很多人似乎喜欢的 Subversion(但是,我感觉这将在不久的将来改变)所以无法评论它与我使用的其他工具的比较(通常作为构建和/或发布经理)。

至于要选择的第一个工具,Git、Bazaar 和 Mercurial 的问题是它们是分布式 vcs 的。这与拥有中央存储库的传统服务器-客户端模型不同。为了学习这些东西,我建议您也阅读有关这些概念的内容。例如,仅通过尝试自己可能无法正确理解分支(针对不同情况有不同的分支策略)。另外,如果您是唯一一个访问存储库的人,情况就大不相同了,例如合并冲突不会成为问题(您可能会看到它们,但也很容易修复它们,因为您知道两个分支中的代码)。当然,您会了解结帐、签入等,但我认为这些问题一开始并不特别困难。

vcs 的另一个问题是它们倾向于使用不同的术语。在 StarTeam 中使用起来很容易,但出于某种原因,他们坚持使用术语“签出”和“签出并锁定”。后者是大多数人认为第一个所做的。这是有原因的(即使您没有排他锁,您也可以编辑文件),但将这些称为“获取”和“签出”以避免混淆仍然更有意义。

于 2009-06-09T07:23:51.920 回答
0

任何东西,但我会自己学习像 git 或颠覆这样的现代系统。我的第一个 VCS 是 RCS,但我掌握了基础知识。

于 2008-08-22T19:50:14.067 回答
0

好吧,如果您只是想自学,我会说您应该使用免费的东西,例如颠覆。如果您是一家以前从未使用过源代码控制的公司,那么这真的取决于您的需求。

于 2008-08-22T19:51:03.440 回答
0

我的第一次接触是以 WinCVS 作为客户端的 CVS。太可怕了。接下来是 Subversion,它集成了 TortoiseSVN 和 Eclipse。这是直观的,而且是天堂般的。我认为将 CVS 与 TortoiseCVS 和 Eclipse 一起使用也会很好,尽管我更喜欢 SVN 处理修订的方式。每次签入都会对整个存储库进行版本控制,而不是单个文件。

于 2008-08-22T19:53:17.523 回答
0

我也推荐Subversion。设置不需要太长时间,它是免费的,并且有一本非常好的在线书籍,涵盖了基础知识和一些高级主题:http://svnbook.red-bean.com/

于 2008-08-22T20:26:08.473 回答
0

用 tortoisesvn 颠覆。(tortoisesvn 因为你可以直观地看到很多发生的事情,并且会为命令行的东西提供一个很好的起点。)那里有大量的文档,很可能你会在你的职业生涯中至少看到一个点。几乎我工作过和面试过的每家公司都运行 SVN。

于 2008-08-22T20:31:59.783 回答
0

如果您想在入门时学习商业产品,Perforce 提供了一个免费的客户端和服务器,该服务器支持两个用户和五个客户端工作区。

在我以前的工作地点,它不仅被我们的程序员虔诚地用于代码,还被用于艺术资产和游戏关卡,以及我自己的文档。

于 2008-11-24T05:43:46.350 回答
0

Subversion 是一个很好的起点。它是非常稳定和现代的版本控制系统。开始学习 Subversion 的最佳在线资源是使用 Subversion 进行版本控制。就服务器和客户端软件而言,有很多选择。我个人更喜欢(对于Windows环境)。

  1. VisualSVN 服务器

  2. TortoiseSVN shell 集成客户端和

  3. AnkhSVN Visual Studio Subversion 附加组件

同样,Subversion 有很多可用的选项。此外,它是一个不断发展的版本控制系统(与过时的 SourceSafe 不同)。它可以很容易地与许多自动化构建工具(CruiseControl、FinalBuilder)和错误/问题跟踪系统(JIRA)集成。

如果您正在寻找最先进的版本控制系统,请选择 Git(由 Linus Torvalds 开发)。但是,如果您对版本控制系统完全陌生,我建议您从 subversion 开始。

于 2009-07-30T05:18:09.860 回答