hg vs git :这个世界除了svn还有别的

最近想用版本控制软件来保存汉化文件,但又觉得SVN太麻烦,于是想到了最近较为流行的分布式版本控制工具。
而Git和Mercurial(意思为水银的,于是经常缩写为Hg)自然是其中最为流行的工具。大名鼎鼎的Linux就用Git作源码管理,而Python和Firefox则采用Hg(你可以在这找到一堆使用Hg的项目)。
比较了一番后,最终我选择了后者。因为Git的优势主要在于分支,而汉化并不需要太多分支;而Git对Windows的支持似乎不如Mercurial,ssh也比http麻烦,比较难教汉化组成员们使用;此外还有个特别的原因:Hg主要是用Python实现的(小部分使用C实现)。
当然,Hg也有个很严重的缺点:不支持针对单个文件夹的分支。如果剧本翻译和改图要建立分支都必须复制整个仓库,而对翻译来说,图像文件并不是他需要的部分。

此外,Google还发了篇《Analysis of Git and Mercurial》,说明为什么Google Code决定支持Hg,而不支持Git。
Git的优势:

  • 客户端存储控制。可以删除任意的版本,而无需考虑该分支的后续版本,而Hg做不到。
  • 无限的父结点数。Hg一次只能分成2个分支,合并N个分支要进行很多次操作。而Git没有限制。
  • 支持rebase。它可以将当前版本移到最新的分支去。例如假设有个本地库在开发1.0的新特性,而基线已经升级到1.1了;一般情况下是需要合并到1.1去的,而rebase可以避免这种操作。

Hg的优势:

  • 学习曲线。由于很多因素,Git比Hg的学习曲线更陡峭。
  • 支持Windows。
  • 维护。Git需要定期维护。
  • 历史是不可侵犯的。Git很强大,可以干几乎任何事,因此也会丢失历史信息。

看起来Git在技术上是要强于Hg的,不过由于文件操作的实现依赖于操作系统,移植到Bigtable会存在麻烦;而且Hg有很好的基于HTTP的无状态pushing和pulling,容易与Google的构架整合(Google几乎所有的服务都基于HTTP)。
对于这点,Google还特意提供了测试数据,指出在使用HTTP时,Git比Hg慢1个数量级。(提到了2个数字,分别慢22倍和12倍。)

在继续介绍Hg之前,我先说下分布式配置管理(DSCM, Distributed Software Configuration Management)。
之前曾用过一段时间的SVN,这也是集中式SCM中非常流行的工具。给我的印象是速度慢(因为每个文件都是单独下载,速度根本上不去),每个文件夹下面都有个影响心情的.svn文件夹。
而今天用了几个小时的Hg,明显感觉到了不同。
首先就是速度快,上传和下载都是打包并压缩的。我的一个20.7M的项目,上传上去只用了几分钟,占用4.3M的空间,不得不说压缩率很高。
其次就是仓库是分布的,可以在本地建立多个镜像,然后分别进行更改;提交也只提交到本地的镜像,并不影响主仓库;各个仓库还可以互相进行合并,最终达到多个版本的一致,再上传到主仓库。
这对汉化来说是非常方便的,因为翻译们可以建立自己的镜像,翻译完告知校译;校译们获取各个翻译的版本,进行合并,校译完再通知润色;润色则可以获取校译的版本,然后推送到主仓库。由于主仓库不需要多次更改,也就避免了在主仓库上建立多个分支,导致管理的混乱。

顺便列出我找到的几个可以用于免费托管代码的网站:

  • GitHub:这个网站非常出名,是用RoR建的,300MB的免费空间,支持Git,但不支持Hg(虽然有插件,但教别人用太麻烦),而且没有私有库。
  • bitbucket:这个是用Django建的,可以建1个私有库,150MB的免费空间,支持Hg。
  • ProjectLocker:只有(无限个)私有库,500MB的免费空间,支持SVN和Git,但只能有5个用户。闭源项目推荐,但显然不适合庞大的tomo汉化组。
  • Unfuddle:200MB的免费空间,支持SVN和Git,只能有1个库和2个用户。

最终我选择了最小的bitbucket,因为也差不多够用了。
(注:Google Code现已支持Hg,但只能托管源码,不能用于其他目的,所以我只能放弃。但如果你是开源软件开发,那么Google Code是最大方的,还可以发信申请扩大配额,只是偶尔会被GFW。)

接着就开始装软件了。习惯了SVN的乌龟,所以仍然选择了乌龟汞(TortoiseHg)。
目前这个版本支持Windows XP、Vista和Windows 7,所以不担心兼容性。
安装很简单,装好后要重启(其实不重启也可以用)。
喜欢命令行的还可以在CMD里输入hg试试。

hg vs git :这个世界除了svn还有别的

时间: 2024-08-28 15:40:29

hg vs git :这个世界除了svn还有别的的相关文章

hg和git命令对照表

hg和git命令对照表 来源 https://github.com/sympy/sympy/wiki/Git-hg-rosetta-stone Git hg rosetta stone muxator edited this page on 10 Mar 2017 · 50 revisions The sympy git server is at https://github.com/sympy/sympy . The main Sympy repository may be cloned wi

小丁带你走进git的世界三-撤销修改(转)

一.撤销指令 git checkout还原工作区的功能 git reset  还原暂存区的功能 git clean  还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 git revert 撤销本次提交. 二.指令讲解 Git checkout 首先我们对文件的一个修改,对master.txt进行了修改 修改结果我们利用上面的知识来进行查看. 新增加了Test这么一段话,如果我们想要将工作区的内容添加到暂存区会使用git  add这个命令,如果我们想要还原工作区内容

Git简介以及与SVN的区别

Git是由著名Linux内核(Kernel)开发者LinusTorvalds为了便利维护Linux而开发的. Git是一个分布式的版本控制系统.作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并. 在windows下使用git,如果对命令不熟悉,可以使用tortoisegit. tortoisegit依赖于msysgit. 在git中,每个本地的代码库都是一个完整的git系统.使用tortoisegit提交代码

git之旅,畅游git的世界

今天小铭酱带大家探索一下git的奥秘! 1.初步探索 首先我在一个空的文件夹新建了一个名叫hello.html文件,文件内容只有一句话“hello git”.我们先引入git,看看git能为我们它能干什么,嘻嘻~ 1) git init 初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中.就这么简单,我们已经有一个代码仓库了. 2) git add 有了仓库,那第二部我们要让git知道哪些文件需要被管理或跟踪的.输入"git add .&qu

欢迎来到Git的世界

魔都的梅雨季简直了!对于杨梅爱好者来说,这是一个幸福的季节,然而,对于一个北方的妹子,实在忍受不了他的"诗".每到下雨天,最怕的就是衣服.鞋子被打湿,可是昨天在网上看到一张照片后,雨天阴霾的心情瞬间放晴.只要心情是晴朗的,人生就没有雨天. 言归正传,开启我的Git学习之路喽...... Git的版本控制之道 Git作为一种新型的,轻量级的分布式版本控制系统(DVCS),深受攻城狮们喜爱.版本控制系统就好比银行的保险箱,保管价值连城的资产.而对于程序员来说,源代码就是这样的资产,由版本控

CVS,GIT,Mercurial和SVN比较

特征 CVS Git Mercurial Subversion 是否原子提交 CVS: 没有. CVS提交不是原子的 Git: 是的. 提交都是原子的 Mercurial: 是的 Subversion: 提交都是原子的 文件和目录是否可以移动或重命名 CVS: 不是. 重命名不支持. 如果手动进行, 可能会损坏历史记录 Git: 支持重命名, 这是很实用的目的. git甚至能检测到重命名之后文件的改变. 尽管如此, 基于特殊的存储结构, 重命名不会被显示的记录, git能够推导出来(在实际使用中

Git Submodules are not SVN Externals

一直在寻找Git跟TFS里面类似SVN Externals的替代方案, 今天终于找到了GIT里面的替代方案,在此做个备注 http://alexking.org/blog/2012/03/05/git-submodules-vs-svn-externals http://www.speirs.org/blog/2009/5/11/understanding-git-submodules.html https://help.github.com/articles/what-are-the-diff

PhpStorm 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项

第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executable: D:\Program Files\Git\bin\git.exe 第二步:clone 项目 VCS -> Checkout from Version Control -> Git -> Clone Repository -> 填写项目的git信息,如 Git Reposito

Git简史及对比SVN区别

Git 简史 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持. Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应