又土鳖了一把

更新: [gitmo](http://www.aasii.org/download/gitmo) 已经过期了,Sergey Yanovich 更新了 [git repo](http://repo.or.cz/w/mozilla-1.9.git) 上的说明,现在应该用这个 [client.sh](http://www.aasii.org/download/client.sh) 来更新。

今天实在是受不了 CVS 了:在 mozilla 这么大的树上用 cvs diff 简直是自虐,于是找来 mozilla cvs trunk 的 [git mirror](http://repo.or.cz/w/mozilla-1.9.git/) 来 clone,上次 clone 过一次发现缺东西不能编译,因为 mozilla cvs 树里有些东西是作为 external item 放在别的地方的,比如 nsprpub,但 git mirror (和 [hg mirror](http://hg.mozilla.org/cvs-trunk-mirror)) 都没有镜像这些。

因为看 [mozilla.dev.platform](http://groups.google.com/group/mozilla.dev.platform) 上[有人贴了](http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/8918d92bd3ba7694)一个 [gitmo](http://www.aasii.org/download/gitmo) 的脚本还方便,以为不会出问题的,结果还是出问题了。

为什么呢?因为 git 的 mirror 是用那个 repository 的几个 branch 来存这些 external items 的,每次我要用到这些 external items 来编译的时候,就把 checkout -b 一个 本地的 branch 出来,remote 的一个 branch 给 merge 进来,然后编译,问题是这些个 remote branch 的镜像更新似乎不如 CVS 上的勤,结果跟主干上的代码就不一致了。

虽然归根结地还是 mozilla 土鳖:CVS 这种原始社会的玩意早该淘汰了,但经验之谈是:除非对 Mozilla 的代码树结构以及它的编译系统很熟悉,否则如果自己要编译 Firefox 还是[直接从 CVS 上取](http://developer.mozilla.org/en/docs/Mozilla_Source_Code_Via_CVS)最省事,出问题的概率最小。

哦,顺便说一句,最近解决了一个 Firefox 3 在 Mac OS X 10.5 上的一个比较严重的 [bug](https://bugzilla.mozilla.org/show_bug.cgi?id=408965),涉及中文字体的载入和顺序,patch 已经进入主干,最新的 nightly build 中也已经包含,不妨试试。