`

(转)乱评 svn, git, hg, bzr by Dieken

    博客分类:
  • git
阅读更多

乱评 svn, git, hg, bzr by Dieken

发信人: Dieken (风催草低 - 明月何尝不照人)
标  题: 乱评 svngit, hg, bzr
发信站: 水木社区 (Mon Mar  8 22:44:54 2010), 站内

以前有些小文说过,不记得放哪里了。

这年头,堪用的开源的版本管理工具就三个:svn, git, hg,其它诸如
cvs, vss, monotone, darcs, tla, bazaar (emacs 项目选择 bzr 真是猪头)
都靠边站:不堪大用——不要跟我抬杠“俺们 cvs 用了好多年了啊,用的
很顺手”“我个人一个小项目用 bzr 挺滋润的”之类的话。

subversion: 变更集、权限管理、TortoiseSVN 是其三大亮点。至于
文件名字空间跟分支、标签名字空间统一,有利有弊。 弊病是慢、
工作目录占空间、代码库很容易快速膨胀、分支的合并比较弱(分支
倒是非常好用)、svnsync 是个鸡肋。

致命的问题是不支持本地分支,在沐浴了 DVCS 中本地分支的优点后,
我现在强烈的感觉到不支持本地分支或类似特性的 VCS 是不人性的,
不合开发流程的。

如果项目不大(代码库小于 GB 量级),不想理解 DVCS 的理念,对权限
控制很看重,那么 svn 是唯一的选择。

git:  正是 git 让 DVCS 的理念普及开来,可能是借了 Linus 的名头,
git 的最大优点是特性极其丰富,非常可玩,而这也是它的最大缺点。
其它的一些缺点,比如对 Windows 支持落后、UI 有不少龌龊的地方、
权限控制薄弱(其实在 DVCS 里依赖社会关系管理权限,而非工具),
这些倒还不是大问题,大问题是对模块支持很弱,git submodule 不好用,
所以 android 项目搞了个 repo 工具,想法很好,但可惜不是 git 内置
功能,而且个人感觉由于为 android 项目定制,有点搞复杂了的意思。

相比 svn,git 代码库体积小(能小 50% 多,如果 svn 里分支用本地
文件拷贝 + svn add,那么 git 在体积上更占优势),git 工具速度
很快,对合并支持非常好,探测文件重命名的做法很独特,git-svn
很好用,分支很轻量级,设计思想很简洁(实现不简洁:-()。。。。

git 属于那种不熟悉时被它玩,熟悉时玩它溜溜转的类型。 如果不怎么
理 Windows 平台,代码很庞大,对合并要求很高,不惮理解 git 的原理
以及看手册,那么 git 是很好的选择。

hg:hg 是个奇迹,易用性堪比 svn,速度堪比 git,跨平台良好。
hg 据说对文件重命名、移动支持不大好(新版本可能改善了,没细用,
我是 git 的频繁用户),新版本支持类似 git 的轻量级分支(好像是
用 tag 模拟出来的),对模块支持有个 forrest 插件,不知道好用不。

hg 内置的特性远没有 git 多,但一般也够用了。

hg 被很多大型项目采用,可用性有保证,如果对跨平台开发很看重,对
工具易用性要求高,那么 hg 是很好的选择。

bazaar: 虽然是我比较喜欢的 Canonical 公司(Ubuntu Linux 的开发
公司)主持开发的,但我并不喜欢这个工具,速度慢,UI 挂着易用的
幌子引入不必要的复杂性,设计思想太弱(分支合并、版本命名、文件重命名、
移动跟 git 的做法比相当弱智),属于打着 DVCS 旗号但是没能完全
领会 DVCS 内涵搞出的一个伪 DVCS,代码库格式一再变换(开始模仿 git 的
存储方式了),效率还是低的不行,相比 git、hg 的基本稳定的代码库格式以及
高效,可见 bzr 开发人员只有小聪明没有大智慧(Linus 大神万岁,Matt 小神万岁!)


以上评论随口而出,极富个人感情色彩,本人不负责其客观公正真实可靠性,
仅供参考,一切选择请自行斟酌。

【 在 zhangmike (克强总~~~~~~~~~~~~~~理不是偶) 的大作中提到: 】
: Dieken可否总结下 git,svn等当前流行的source control工具的比较


转载自:http://www.newsmth.net/bbscon.php?bid=126&id=70031
配置管理之路(scmroad.com)-软件配置管理专业论坛
http://bbs.scmroad.com

TOP

发信人: laofo (偶是fofo), 信区: SoftEng
标  题: Re: 乱评 svn, git, hg, bzr
发信站: 水木社区 (Tue Mar  9 09:07:45 2010), 站内

        如果对于商业用户来说,集权管理是很必要,也是必须的。在知识产权越来越
        受到重视的同时,对代码的管理也越来越细化,明确,约束。

        比如,在公司里可能你做项目A,没有目的的把B,C,D的代码都下载下来的做法
        是很值得商榷的。甚至很多公司专门做工具对代码库的访问情况进行审查。

        svn 易学易用是其优势,但是随着体积的增加,访问速度慢真的是个问题.
        如果svn有一种廉价的分支合并机制也许会更好。不一定允许你本地分支,但是
        允许你在拥有权限的分支上自己做分支,有自己的工作流,可以选择性的提交到
        源中。

        git 功能做的再好,如果权限管理这块弱化也很难在商业领域有所突破。可能
        更适合开源,或者对保密要求没那么高的公司。业界,代码泄漏的问题不是一
        次两次了。

        看了你的评价反而看起来比较中庸的 hg 比较不错。虽然各方面做的都不是很
        好,但是该有的功能他都有。

        这里主流的应该还有比较重量级的Clearcase,TFS,Perforce等。

        Clearcase功能强大,但是很复杂,IBM现在又在推Jazz,把Clearcase,
        Clearquest,eclipse等都集成到 Jazz 的这个平台下,形成了一个功能很全的
        IDE

        TFS,微软的东西。可以看作是VSS的升级版,但是功能远比 VSS 强大。也是
        把研发,测试,构建等等都可以集成到 TFS 里边去了。很 IBM 的 jazz 平台
        有的一拼。


        Perforce 国内也很多客户,尤其一些游戏公司比较喜欢

        Starteam,MKS 日渐落寞,感觉用的公司不是很多。

        没有反驳的意思,只是说说我的观点,欢迎大家批评指正。
配置管理之路(scmroad.com)-软件配置管理专业论坛
http://bbs.scmroad.com

TOP

回复 2# laofo 的帖子

哈哈,明显你的回帖更靠谱……

Linux当年刚出道的时候,就曾针对MINIX的架构争论过操作系统内核的monolithic vs micro

即使在今天,我们公司一些没经验的售前还是会在这个问题上被竞争对手带到沟里去,悲哀啊

现在,同一个人又搞出了Git,再次针对集中/分布式版本控制的问题带头争论,快20年了,一点新意都没有

分享到:
评论

相关推荐

    ubuntu下RabbitVCS安装方法(SVN、GIT、Hg 工具)

    ubuntu下RabbitVCS安装方法。 适用于SVN、GIT、Hg 的客户端工具。 集成右键菜单

    SVN,HG,GIT命令对照.pdf

    SVN,HG,GIT是三种常见的版本控制系统,本文简单列出一些相似的操作命令。当然,三种系统各有特点,严格的对应关系是没有的。

    Git2.11.1+SVNGit2.4.0.zip

    Git-2.11.1-64-bit 和 TortoiseGit-2.4.0.0-64bit,适用于使用Git有服务器仓库,把写好代码放入Git仓库,使用SVNGit上传更新等,使用Git仓库的好处就在于,你在家里也是可以上传更新的,只要账号密码正确就可以了,...

    git和svn学习入门教程

    现在使用git的比svn多了,但是git操作比svn复杂,上传git和svn的简单教程

    SVN迁移到Git

    从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git

    Git与SVN比较

    Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较

    SVN迁移到git

    描述了如何从SVN迁移到git,比较简短,精炼,文档中提到的users.txt为svn与git的用户对照

    svn转化为git

    svn转化为git

    svn-git插件Jenkins.zip

    svn-git插件Jenkins.zipsvn-git插件Jenkins.zipsvn-git插件Jenkins.zip

    SVN git github-版本控制服务器部署与实践

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!

    svn2git.zip

    svn2git ,svn2git是一个微型工具用来将 Subversion上的项目迁移到Git上,并保留 trunk,...

    版本管理_svn和git常用操作

    介绍版本管理实践。 主干发布,分支开发模式下,svn和git的常用操作。

    git和svn的比较

    两个版本控制git和svn的比较,以及它们各自的优缺点。

    git svn转换工具

    svn+git实现离线提交并且不需要到处所有svn版本,速度超快非一般的感觉,超越git本身的git2svn功能。 使用本工具需要安装基础工具: 首先安装git msysgit:https://code.google.com/p/msysgit/downloads/list msysgit...

    Jenkins离线安装svn git maven插件包

    Jenkins离线安装svn git maven插件包 ,包含了依赖顺序,方便安装。 plugins: 1.structs.hpi 10.mailer.hpi 11.apache-httpcomponents-client-4-api.hpi 12.jsch.hpi 13.javadoc.hpi 14.workflow-api.hpi ...

    vc.vim:支持SVN,Git,HG和BZR

    vc.vim 用于Subversion(svn),GIT,HG和BZR存储库的VIM(VIM 7及更高版本)插件。 支持浏览存储库,工作副本,书签。 自动完成命令选项,文件,目录,回购网址注意:svnj.vim用户,将所有设置从svnj_替换为vc_ ##...

    git 、svn汉化包

    git 、svn汉化包git 、svn汉化包git 、svn汉化包git 、svn汉化包git 、svn汉化包

    SVN 与 GIT比较

    需要全面了解svn和git的优劣对比的话,这个文档肯定让你满意,给点分吧。

    简易SVN/GIT下载器

    简易的SVN代码下载器,同时支持GIT,可以完整实现SVN/GIT的checkout,并演示如何解析svn协议的XML,以及下载项目,方便想要深入了解SVN这类代码管理系统的构造以及二次开发的朋友,非常小巧作为工具用也是不错的

    SVN和GIT视频教程2019(百度云).txt

    视频目录: 01_创建虚拟机、02_为什么要使用版本控制、03_单用户的SVN代码管理、04_仓库的备份和还原、05_多用户共同管理代码的冲突、...svn下载开源项目源码、12_git简介&本机提交、13_git公共服务器、14_相遇的纪念

Global site tag (gtag.js) - Google Analytics