乱评 svn, git, hg, bzr by Dieken
发信人: Dieken (风催草低 - 明月何尝不照人) 标 题: 乱评 svn, git, 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
|
|
|
版主
帖子
3203
精华
52
积分
11155
威望
7122
金钱
3981
版本号
45
|
2#大中小发表于 2010-3-9 12:17 只看该作者
发信人: 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 日渐落寞,感觉用的公司不是很多。
没有反驳的意思,只是说说我的观点,欢迎大家批评指正。
|
|
|
中级会员
帖子
186
精华
0
积分
428
威望
232
金钱
196
版本号
2
|
3#大中小发表于 2010-3-9 13:05 只看该作者
回复 2# laofo 的帖子
哈哈,明显你的回帖更靠谱……
Linux当年刚出道的时候,就曾针对MINIX的架构争论过操作系统内核的monolithic vs micro
即使在今天,我们公司一些没经验的售前还是会在这个问题上被竞争对手带到沟里去,悲哀啊
现在,同一个人又搞出了Git,再次针对集中/分布式版本控制的问题带头争论,快20年了,一点新意都没有
|
分享到:
相关推荐
ubuntu下RabbitVCS安装方法。 适用于SVN、GIT、Hg 的客户端工具。 集成右键菜单
SVN(Subversion)、HG(Mercurial)、GIT是三种广泛使用的版本控制系统,它们各自有不同的设计理念和命令集,尽管它们在执行相同或相似功能时具有一定的相似性,但直接命令对应关系并不严格存在。下面将详细介绍...
《Jenkins中的svn-git插件详解》 在持续集成(Continuous Integration, CI)领域,Jenkins作为一款广泛应用的开源工具,扮演着至关重要的角色。它能够自动化各种构建、测试和部署任务,帮助开发者提高工作效率。在...
Git-2.11.1-64-bit 和 TortoiseGit-2.4.0.0-64bit,适用于使用Git有服务器仓库,把写好代码放入Git仓库,使用SVNGit上传更新等,使用Git仓库的好处就在于,你在家里也是可以上传更新的,只要账号密码正确就可以了,...
Git和Subversion(SVN)都是版本控制系统,用于跟踪和管理软件开发中的代码变更。它们在代码管理和协作方面发挥着至关重要的作用。本教程将帮助初学者了解这两者的基础知识,以便选择适合自己的工具。 首先,让我们...
常见的版本控制工具包括ClearCase、SVN(Subversion)和GIT。每种工具都有其特点和优势,本文将对这三种工具进行比较,帮助开发者和管理员更好地选择和使用这些工具。 多站点支持 ClearCase支持多站点复制和同步,...
在过去的许多年里,Subversion(SVN)是广泛应用的版本控制系统,但随着时间的发展,Git逐渐崭露头角,因其分布式特性和强大的功能而受到广泛欢迎。本文将详细介绍如何将现有的SVN仓库转换为Git仓库,以便更好地适应...
标题“svn2git.zip”指的是一个包含用于迁移Subversion(SVN)项目到Git的工具的压缩文件。这个工具称为svn2git,它是一个小型但功能强大的应用,旨在帮助用户平滑地从传统的Subversion版本控制系统过渡到更现代的...
Git和SVN的比较 Git和SVN是两个最常用的版本控制系统,它们都是为了帮助开发者更好地管理代码、追踪变化、协作开发而设计的。那么,它们之间有什么区别呢?下面,我们将对Git和SVN进行比较,详细介绍它们各自的优...
从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git
本文将详细讲解两种常用的版本控制系统——Subversion(svn)和Git——的基本操作。 ### 1. Subversion (svn) 管理 #### 1.1 创建版本库 在svn中,创建版本库通常通过`svnadmin create`命令实现。例如: ``` ...
将 SVN 项目迁移到 Git 是一个常见的操作,特别是在团队决定从 SVN 转换到 Git 这种更现代化的版本控制系统时。以下是一份详细步骤,涵盖了如何将 SVN 项目迁移到 Git,包括完整的命令行操作。 首先,你需要在 SVN ...
Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较
描述了如何从SVN迁移到git,比较简短,精炼,文档中提到的users.txt为svn与git的用户对照
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!
svn+git实现离线提交并且不需要到处所有svn版本,速度超快非一般的感觉,超越git本身的git2svn功能。 使用本工具需要安装基础工具: 首先安装git msysgit:https://code.google.com/p/msysgit/downloads/list msysgit...
公司代码要从svn迁移到git,不想笨笨的重新上传一份新代码,于是研究了下svn代码到git的迁移同时还要保留commit信息,尝试了很久终于成功啦;在保留commit信息的同时,还能继续从svn同步代码到git,这样即使还有人...
git-svn是Git版本控制系统与Subversion(SVN)版本控制系统的桥梁,允许Git用户与SVN仓库进行交互。在一些项目中,由于历史原因可能仍在使用SVN作为中央版本控制系统,而git-svn可以使得开发者在本地使用Git的强大...
SVN(Subversion)和GIT是目前流行的两种版本控制系统,它们各自有独特的设计哲学和工作机制。尽管它们的基本目的都是帮助程序员们高效地管理代码变更,但在实际应用中,它们在功能、性能和用户体验方面存在着显著...
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 ...