与实际确定“最佳”尝试相比,这更是一个讨论问题,因为这显然会因组织的需求而异。我对支持不同类别(集中式,分布式,开放式与专有等)的不同系统的论点感到好奇。
那么,您认为最好的版本控制系统是什么?
与实际确定“最佳”尝试相比,这更是一个讨论问题,因为这显然会因组织的需求而异。我对支持不同类别(集中式,分布式,开放式与专有等)的不同系统的论点感到好奇。
那么,您认为最好的版本控制系统是什么?
Answers:
由于它具有分支和合并代码的先进能力,因此它是我使用过的最好的工具。整个DVCS范例非常有意义。我没有使用过Git,但我想它也可以使用。
Git太棒了,我特别推荐给从事开源项目的任何人:在Git上为项目做一个小的一次性更改要容易得多,特别是如果它托管在GitHub上,则比处理e-邮寄有关SVN的补丁。
Windows用户需要注意的一个重大问题:Git的Windows工具虽然确实可以使用,但还不够完善。当我不得不使用Windows一段时间后,我尝试了使用Hg-Git集成工具试用Mercurial的Windows界面,以便可以使用我的Git存储库,并且发现它更易于使用。
警告:自从这篇文章以来,我发现Mercurial并喜欢它比SVN好得多。因此,该帖子与Pro SVN评论和常规的反DVCS有点过时了,但是反git的内容仍然很重要
我是SVN over Git 的粉丝。
为什么?因为SVN对于单个开发人员或小型团队来说要容易得多,并且git(尤其是msysgit)使我口中难受。
当我在一家小商店实习时,我在Windows上被介绍给git。我立即注意到与Github一起使用需要花费大量的工作。首先,我必须生成一个ssh私钥,将公钥粘贴到Github中,然后每次我要推送时都进行选区并打开我的私钥,这非常烦人。
我从来没有真正喜欢过删除整个存储库。我会承认我从未使用过任何大型软件,但是如果整个repo及其修订版都在我的HD上,我会害怕在Git中下载KDE的存储库。
然后就是一个令人困惑的提交过程。TMK,我必须首先“暂存”我要提交的所有文件(当您有很多文件时很烂,花了我一段时间找到手动命令暂存所有文件),然后执行提交,然后推送到主目录。回购(为什么要进行单独操作?!)。
您还拥有了not(!)非常有用的提交数据。哦,看,这是树2167a4934d0a4a7db0de和父级d7042abb4821d3faf600的提交14f74433245ae17aeeaa部分。到底是什么意思?我应该能够很快找到答案,而不必查阅一些奇怪的文档。
说到文档,至少在我使用它的时候,似乎一切都以linux man文件格式出现,IE对我来说令人困惑和无用。我很少能在文档中找到很多帮助,只能求助于google。
对于提交,我不喜欢的一件事是缺少版本号。现在我知道这是因为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为我真正喜欢的整个项目提供了一个非常不错的可视化工具。
对于单个开发人员或小型团队项目,由于不使用大多数Gits功能,而只有它的负面影响,所以SVN是最好的。简单是一件好事
Q4TD的以下引用对我来说几乎可以总结一下:
“我一直喜欢Git,直到尝试为止。现在我爱水星了。”
— Tor Norbye,Java Posse播客
另外,hgsubversion是Linux的一个很好的subversion客户端(我通常使用命令行,而Windows则通常使用TortoiseSVN)。最大的优点是:.svn
每个文件夹中没有子文件夹,仅.hg
在顶层有一个子文件夹。
更新:响应Alex在评论中的要求,“更多地说明git为什么不适合您,以及Mercurial如何更好地工作”:
我不会说Git 不适用于我,但是Murcurial的IMO效果更好。
简而言之,这是Mercurial:
这是Git:
而且我断言Mercurial可以完成大多数开发人员需要做的所有事情,而无需查阅手册来弄清楚如何做日常工作。
诚然,我只是偶尔使用过Git,但是编程社区一直在争夺Ruby和Python之类的语言,部分原因是它们的简洁和优雅,而Git感觉就像是由骆驼委员会设计的骆驼。
ah,现在看看你做了什么?到处都有rant怒。前进,没什么可看的...没什么可看的...
更新2:我刚遇到另一条推文:
“一旦掌握了分支是映射希尔伯特空间子流形的同胚内爆函数的基本概念,Git就变得更加容易。”
我没有一个单一的“最佳”版本控制系统,而是一个单一的最佳VCS范例。
我使用了多个不同的集中版本控制系统和多个不同的分布式版本控制系统。我可以毫不犹豫地说,没有人应该对自己施加CVCS。
我不在乎您选择哪种 DVCS(我最喜欢的是Git),但是请您帮个忙并使用DVCS。例如:您将更加灵活。DVCS可以轻松地模拟CVCS工作流程(永远不要分叉存储库,而将本地存储库仅视为chache,而不是独立的分叉),而相反则是不可能的。虽然从逻辑上讲,这样做仿真应随身携带一些开销(实际上它),我仍然觉得它更容易使用(更不用说更高性能由于本地缓存)比任何我已经使用了CVCSs的。
因为:
在我悠久的历史中,我曾使用过多种版本控制系统:
尽管一对夫妇感到恐惧,但大多数都是“罚款”。他们没有妨碍我。只要一种工具不会使我的生活变得更加困难,我就不会介意。
真正的事情是了解每个优点和缺点。了解目标环境:
Joel还得出了一个重要的观察结果:学习该工具及其真正的使用模型。他竭尽全力地试图使水星的表现像颠覆。
MPW:好吧,尽管我付出了很大的努力,但我还是无法对其进行评论。
那是我上高中时学习编程的时候,当时唯一真正免费的C ++编译器是Macintosh Programming Workbench,我将它保存在一个zip磁盘上,然后弹出实验室中可用的Performa。
MPW附带了数十种工具(没有一个是重新编辑的,这是单独下载的),其中一个是版本控制实用程序。它弹出并打开一个带有单行文本的小窗口,您需要将项目或文件拖放到该窗口上。它没有我能找到的文档,考虑到其他所有东西似乎都具有出色的文档,这是不寻常的,因此我从来没有想出如何使用它。
那是我第一次使用VC,最后很长时间了。现在,我将git用于所有内容。
独奏编码变得如此简单。
我曾经使用过Visual SourceSafe并讨厌它,但是它总比没有好,但是效果不佳。在过去的几年中,使用了由Qumasoft.com编写的,由程序员Jim Voris拥有和支持的QCVS。简单的图形用户界面,价格便宜,良好的支持。
只是做工作。