Chromium gclient使用
gclient 是由 Google 用 Python 开发的一套跨平台的git仓库管理工具,它的作用类似 git 的 submodule,用来将多个git仓库组成一个solution进行管理,比如chromium项目是由80多个独立的git仓库构成的。这样的好处是,一个git仓库可以被多个solution共用,类似CBB的机制,只不过它是直接引用代码仓库,而CBB是引用编译好的程序。
具体来讲,gclient 的核心功能是将solution中由DEPS文件定义的所有git仓库拉取到指定的目录。围绕着这个功能,它添加了一些其它的辅助功能,比如Hooks
,include_rules
等功能。
1. 关键概念
gclient
: 一个跨平台的代码仓库管理工具,用于管理由多个代码仓库组成的项目;repo
: 作用同gclient,是gclient的前辈,gclient是更新的工具;roll_deps
: 一个gclient 的辅助工具,用于更新DEPS文件中某个项目的代码版本;Gerrit/Rietveld
: 一个Code Review系统,可以和git/svn集成;Hooks
: gclient中的术语,当gclient拉完代码之后执行的额外脚本;Solution
: 一个包含DEPS文件的仓库,DEPS文件中记录了该solution所有依赖的项目;.gclient
: 一个由 gclient config 命令创建出来的文件,内部记录了要拉取的solution;DEPS
: 一个文件,gclient 用于管理项目依赖的一个文件,记录了项目的依赖关系;CL
: Change List ,类似 git 的 diff 和 pack;LKGR
: Last Known Good Revision,一个git tag,记录了最新的经过完整测试的版本;managed
: gclient 的一种模式,该模式已过时,不推荐使用;该模式用于帮助那些对git不熟悉的开发者更简单的使用gclient;inlcude_rules
: 指定当前目录下哪些目录/文件可以被其他代码inlcude,那些不可以被inlcude;specific_include_rules
: 作用同include_rules,但是可以使用通配符;
2. gclient 命令解释
gclient config
该命令用来初始化要拉取的solution,它会在命令执行目录下生成 .gclient 文件; .gclient 文件中记录了要拉取的solution的仓库地址,以及拉取后要保存的位置,如下:
gclient sync
该命令用来同步solution。它有很多的参数可选:
3. 其他
4. 使用 gclient 的开发流程
5. 参考资料
https://www.chromium.org/developers/how-tos/depottools/
https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up