转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=3276

上个月底,KlayGE已经基本完成了迁移git的任务。这个过程不是一个简单的镜像,而是在导入git的过程中,删除大文件、依赖库等,并可以通过cmake下载、解压和打补丁。对开发者来说,流程上没有什么变化,都是自动完成的。

对于第三方库,之前的做法是从原网站下载发行版代码包,从klayge.org下载补丁,用python patch打上补丁之后使用。对于有些下载速度特别慢的包,比如wpftoolkit,我也放到了klayge.org。同时,KlayGE所要的资源文件也都在klayge.org。这么以来,最近klayge.org的流量激增,本来速度就一般,现在响应更慢了。

第二个缺点是浪费。比如boost,下载包56M,解压后400M,删掉不用的文件,剩下36M我们需要的。这样对带宽和构建速度是个巨大的浪费。

第三个缺点是失去了版本控制。klayge.org上只是用普通的文件系统来存放那些东西,所以只有最新版本,如果需要老的就访问不到了。

前几天想到一个主意,在github上建立一个独立的工程KlayGEDependencies,把依赖库和资源等都放进去。接着在cmake里用raw url的方式直接下载特定文件。这样首先解决了流量和下载速度的问题;如果把所有精简并打补丁后的库放上去,就能解决浪费的问题;再加上它本来就是个版本控制,raw url里包含了版本的hash,就解决了第三个问题。

另外,做这个转换非常容易,只花了33分钟。最后的working folder可以恢复到以前hg时候的大小,没有多余文件。构建的时候外部库部分也变得很迅速了。

希望这招对大家有所启发。