it-swarm.cn

您最喜欢什么版本控制系统?

与实际确定“最佳”尝试相比,这更是一个讨论问题,因为这显然会因组织的需求而异。我对支持不同类别(集中式,分布式,开放式与专有等)的不同系统的论点感到好奇。

那么,您认为最好的版本控制系统是什么?

41
Fishtoaster

水银

由于它具有分支和合并代码的先进能力,因此它是我使用的最好的工具。整个DVCS范例非常有意义。我没有使用过Git,但我想它也可以使用。

81
epotter

Git

Git太棒了,我特别推荐给从事开源项目的任何人:在Git上为项目做一个小的一次性更改要容易得多,尤其是如果它托管在GitHub上,则比处理e-邮寄有关SVN的补丁。

Windows用户需要注意的一个重大事项:Git的Windows工具虽然绝对可用,但还不够完善。当我不得不使用Windows一段时间时,我尝试了使用Hg-Git集成工具试用Mercurial的Windows界面,以便可以使用我的Git存储库,发现使用起来容易得多。

72
Gaurav

警告:自从这篇文章以来,我发现Mercurial并喜欢它比SVN好得多。因此,该帖子与Pro SVN评论和常规的反DVCS有点过时了,但是反git的内容仍然很重要


我是Git的[〜#〜] svn [〜#〜]的粉丝。

为什么?因为SVN对于单个开发人员或小型团队来说要容易得多,并且git(尤其是msysgit)使我口中难受。

当我在一家小商店实习时,我在Windows上被介绍给git。我立即注意到与Github一起使用需要花费大量的工作。首先,我必须生成一个ssh私钥,将公钥粘贴到Github中,然后每次我要进行Push时都要进行选区并打开我的私钥,这非常烦人。

我从来没有真正喜欢过删除整个存储库。我承认我从来没有使用过任何大型软件,但是如果整个回购及其修订版都在我的HD上,我会害怕在Git中下载KDE的存储库。

然后就是一个令人困惑的提交过程。 TMK,我必须首先“暂存”我要提交的所有文件(当您有很多文件时很烂,花了我一段时间找到手动命令暂存所有文件),然后执行提交,然后推送到主目录。回购(为什么要进行单独操作?!)。

您还拥有了not(!)非常有用的提交数据。哦,看,这是树2167a4934d0a4a7db0de和父级d7042abb4821d3faf600的提交14f74433245ae17aeeaa部分。到底是什么意思?我应该能够很快找出问题,而不必查阅一些奇怪的文档。

说到文档,至少在我使用它的时候,似乎一切都是Linux man文件格式,对我来说IE令人困惑和无用。我很少能在文档中找到很多帮助,而只是求助于去谷歌。

对于提交,我不喜欢的一件事是缺少版本号。现在我知道这是因为git的设计,但是任何软件都需要版本号。我仍然记得会弹出标记提交,上面写着“将版本更改为1.8.6”或类似内容,但是您仍然无法建立编号。对于我来说,版本是1.8.6.5164(最后一部分是修订号)对我来说比简单的1.8.6还要多,并且有一条注释说有些小改动,请尝试一下

由于特定于软件,Windows上的基本程序是msysgit,这是一个糟糕的界面。它锁定了我几次,界面很糟糕,并且CLI-GUI集成充其量还很不稳定。我周围的命令行迷甚至更讨厌gui。


现在让我们看一下SVN。而且由于我在Windows上并且拥有Google帐户,特别是TortoiseSVN和Google Code。

首先,完全的Shell集成可完成存储库上的所有操作(对于Linux人士,RabbitVCS也是一样),不需要主GUI。作为一个结帐,获取存储库很容易,不需要SSH(无法记住Github是否需要SSH进行拉取),也不需要整个回购+所有过去的提交都存储在HD上。

提交非常容易,主要是因为不需要SSH或暂存。您只需使用非常有用的全选选项(在我的msysgit版本中不可用)中检查所有想要的文件,键入提交消息,然后单击提交即可。然后,Google Code要求您提供登录信息(大多数客户端都存储该信息),并完成操作。简单,轻松且无需SSH

版本号?通过一些简单的代码,您可以向所有检出添加版本号和提交号,这使事情变得非常容易。您还会获得实际显示更改的可用版本号,例如1.8.6.5165比1.8.6.5164更新。

文档?好吧,很难说。乌龟有文件记录,但我已经很长时间没有实际提及官方文件了,所以我无法判断。读一本简单的入门指南对我来说足够了。

合并是我无法比拟的。当其他人对我正在处理的文件进行更改时,我必须在Git中执行一次,但是在SVN中则不需要。


我会推荐哪一个?在大型团队中,git确实有其优势,主要是在其非线性开发周期中。在另一个项目中,我看到4个程序员从单独的分支开始,然后以非常奇怪的方式合并所有代码,这些代码以某种方式演变为最终的master分支。 Github和msysgit为我真正喜欢的整个项目提供了一个非常不错的可视化工具。

对于单个开发人员或小型团队项目,SVN将是最好的,因为不使用大多数Gits功能,而您只能得到它的负面影响。简单就是一件好事

24
TheLQ

以下来自 Q4TD 的报价对我来说很摘要:

“我一直喜欢Git,直到尝试为止。现在我爱水星了。”

— Tor Norbye, The Java Posse Podcast

而且, hgsubversion 是Linux的一个很好的Subversion客户端(我通常使用命令行,而Windows则通常使用TortoiseSVN)。最大的优势:没有.svn子文件夹在每个文件夹中,只是.hg在顶层。

更新:为了回应亚历克斯在评论中的要求,“更多地说明为什么git对您不起作用,以及Mercurial如何更好地起作用”:

我不会说Git不能为我工作,但是Murcurial的IMO效果更好。

简而言之,这是Mercurial:

alt text

这是Git:

alt text

而且我断言Mercurial可以完成大多数开发人员需要做的所有事情,而不必查看手册来弄清楚如何做日常工作。

诚然,我只是偶尔使用过Git,但是编程社区一直对Ruby和Python等语言)进行过严格的修改,部分原因是它们的简洁和优雅,而Git感觉就像是骆驼由骆驼委员会设计。

Ah,现在看看你做了什么?到处都有rant怒。前进,没什么可看的...没什么可看的...

更新2:还有另一个建议 Tweet 我刚遇到:

“一旦掌握了分支是映射希尔伯特空间子流形的同胚内爆函数的基本概念,Git就变得更加容易。”

22
Evan

我没有一个单一的“最佳”版本控制系统,而是一个单一的最佳VCS范例。

我使用了多个不同的集中版本控制系统和多个不同的分布式版本控制系统。我可以毫不犹豫地说,没有人应该对自己施加CVCS。

我不在乎哪个您选择的DVCS(我最喜欢的是Git),但是请帮自己一个忙,并使用DVCS。例如:您将更加灵活。 DVCS可以轻松地模拟CVCS工作流程(永远不要分叉存储库,而将本地存储库仅视为chache,而不是独立的分叉),而相反则是不可能的。从逻辑上讲,执行此仿真应该会带来一些开销(的确如此),但我still发现它更易于使用(由于本地原因,更不用说性能更高了)缓存),而不是我使用的任何CVCS。

14
Jörg W Mittag

不能说我遇到了Best版本控制软件,但是我可以告诉您不要使用VSS和MKS。两只狗都应该不惜一切代价避免。

11
Walter

我不会说最好的,而是具有非常有趣的功能和概念的。

Fossil 是基于SQLite数据库作为存储库构建的分布式版本控制,错误跟踪和Wiki项目。

7
Maniero

Team Foundation服务器

因为:

  1. 这是良好,可靠的VCS。 (无论如何我都不会认为它是最好的,但是它有很多不错的功能。)
  2. 它内置于Visual Studio中的内置的任务和错误跟踪功能可以帮助我保持专注并了解我需要在一个地方进行所有工作(自动将检查应用于错误或任务并关闭它非常好,尽管您可以获取其他系统/ Eclipse/etc的插件来执行此操作。)
  3. 它将任务/错误跟踪/项目直接集成到Project Server中,因此我几乎不需要保持项目计划或时间表最新。 Project Server中对Project的更新会自动作为任务过滤到TFS和Visual Studio中,以便我自动查看。
5
Ryan Hayes

在我悠久的历史中,我曾使用过多种版本控制系统:

  • RPPT打孔纸带卷)。在鞋盒里。我不是在开玩笑。
  • PVCS-(Polytron版本控制系统)。我使用的第一个真正的VCS。
  • SCCS-很久以前,我不记得有什么特别好或坏的事情。
  • 正如其他人指出的那样,RCS宁愿吸汗的驴球。
  • CVS-与2个以上的程序员一起使用时,这只是一个痛苦。最佳功能:rcs2cvs。
  • VSS-当星期二损坏整个存储库时,它可以工作。
  • Perforce-花费比我的车还多。 VCS本身是可以接受的,但是控制其使用各个方面的傻瓜IT人士永远不会将其放在我的“首选”列表中。
  • SVN-分支和合并是一个bit子,但总的来说,它比以前任何一个都要好。不太好,有许多微小的未完成更改正在等待审查。
  • Mercurial-我喜欢我几乎没有经验。我可能会在下一个项目中尝试。
  • Git-从来没有机会使用它。

尽管一对夫妇感到恐惧,但大多数都是“罚款”。他们没有妨碍我。只要使用工具---(不会使我的生活变得更加困难,我就不会介意。

真正的事情是了解每个优点和缺点。了解目标环境:

  • 分布式或本地
  • 小团队还是大团队
  • 是否托管vcs服务
  • 轻松集成到其他工具

Joel还得出了一个重要的观察结果:了解该工具及其真正的使用模型。他竭尽全力地试图使水星的表现像颠覆。

4
brettmjohnson

我们在办公室使用的一种较新的系统是Plastic SCM(http://www.plasticscm.com/)。它对我们的小型团队非常有效,并且使我们可以对源代码管理的各个方面进行一些控制。

2
Tom A

[〜#〜] sccs [〜#〜]

或者,如果您碰巧在过去38年中没有住过洞穴,[〜#〜] cssc [〜#〜]

严重的是,我公司正在使用 TeamWare ,这是一种基于SCCS的伪DVCS。

不,我不是在开玩笑。

Sun仅在几年前从TeamWare切换到Mercurial。现在,您应该了解为什么Java的移动速度如此之慢。

1
Geoffrey Zheng

MPW:好吧,尽管我付出了很大的努力,但我还是无法对其进行评论。

那是我上高中时学习编程的时候,当时唯一真正免费的C++编译器是Macintosh Programming Workbench,我将其保存在Zip磁盘上,然后插入实验室中可用的Performa。

MPW附带了数十种工具(没有一个是重新编辑的,这是单独下载的),其中一个是版本控制实用程序。它弹出并打开一个带有单行文本的小窗口,您需要将项目或文件拖放到该窗口上。它没有我能找到的文档,考虑到其他所有东西似乎都具有出色的文档,这是不寻常的,因此我从来没有想出如何使用它。

那是我第一次使用VC,最后很长时间了。现在,我将git用于所有内容。

1
SingleNegationElimination

RCS-版本控制系统

独奏编码变得如此简单。

0
Jé Queue

我曾经使用过Visual SourceSafe并讨厌它,但是它总比没有好,但是效果不佳。在过去的几年中,使用了由Qumasoft.com编写,称为QCVS的东西,该东西由程序员Jim Voris编写,拥有和支持。简单的图形用户界面,价格便宜,良好的支持。

只是做工作。

0
crosenblum

至少对于Unix/Linux系统不是ClearCase(也许对于Windows,安装程序更容易)。对于我来说,学习新工具Perforce比升级我们的ClearCase服务器要容易得多。

我目前在工作中使用Perforce,我喜欢它,但是我不知道它是否是最好的。设置命令行环境和Perforce Server有点尴尬,但是使用Visual Client相当容易。我喜欢认为用户在日常工作中可以轻松地度过;只是初始设置需要一些工作。

0
Chance