搭建Chromium代码镜像

动机

做Chromium浏览器开发有件比较蛋疼的事情是获取Chromium代码。Chromium代码仓库一是比较大,依赖的东西很多,二是它的服务器都在国外,国内往往连不上。因此我想利用一台能够直接访问chromium.googlesource.com的服务器做为googlesource的镜像,我直接通过镜像来同步代码。

配置镜像服务器

https://chromium.googlesource.com/chromium/src.git是Chromium代码的主仓库,它依赖70多个第三方仓库,最方便快捷的方式就是利用cache-dir机制来一次性获取所有代码仓库。

获取depot_tools

Chromium代码都是用depot_tools工具来管理,所以第一步就是要获取这个工具。在/chromium目录里面运行:git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

这样depot_tools工具就下载到了/chromium/depot_tools目录里面,然后把它加到环境变量中:export PATH=$PATH:/chromium/depot_tools

配置gclient

运行 gclient config https://chromium.googlesource.com/chromium/src.git —cache-dir=/chromium/cache。

这会在当面目录下面生成一个一下内容的.gclient文件:

这个cache_dir就会存放chromium以及它所有依赖所有第三方代码的bare仓库。

运用depot_tools的cache-dir机制,有两个重要的优势:

  1. 获取代码比git快
  2. 可以生成所有代码的bare仓库

获取chromium代码

运行gclient sync –nohook –with_tags –ignore_lock命令获取chromium已经它依赖的第三方代码。

  • –nohook参数是获取完代码不运行hooks动作
  • –with_tags参数是获取所有tag
  • –ignore_lock。防止/chromium/cache的lock文件导致获取代码失败。

运行完这个命令,/chromium/cache目录如下:

注意:因为我是在linux服务上获取Chromium代码,默认获取的是linux环境的代码和依赖的第三方库。如果最终实在windows上开发,这些代码必定编译不成功。因此在获取完主仓库的代码,再复制/chromium/source/src/DEPS文件为/chromium/source/src/MYDEPS,把deps_os里面的win和unix互换一下。另外.gclient文件的DEPS改成MYDEPS。

配置Gitolite

服务器上获取完Chromium代码,就开始搭建我们的代码服务器。外面利用Gitolite来搭建。

把/chromium/cache目录里面的bare仓库通过ln创建软链接到Gitolite的repositories目录里面。因为这些仓库有一些目录结构,所以用脚本处理一下:

这里需要做几处转换:

  • url路径中的/转换成-
  • url路径中的-转换成–
  • 路径中的大写转换成小写

在gitolite中添加仓库:

获取镜像代码

服务器上的镜像搭建成功了,现在就在客户端上获取代码了,假如服务器的ip是111.111.111.111,运行gclient config ssh://chromium@111.111.111.111/chromium/src.git。

然后运行:gclient sync。

获取完主仓库的代码,修改src/DEPS文件:

  • ‘chromium_git’: ‘https://chromium.googlesource.com’,改成’chromium_git’: ‘ssh://chromium@111.111.111.111/chromium/src.git’,
  • allowed_hosts添上111.111.111.111

再次运行:gclient sync 即可。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注