Chromium gclient使用

发布时间 2023-11-03 15:24:45作者: rmb_999

gclient 是由 Google 用 Python 开发的一套跨平台的git仓库管理工具,它的作用类似 git 的 submodule,用来将多个git仓库组成一个solution进行管理,比如chromium项目是由80多个独立的git仓库构成的。这样的好处是,一个git仓库可以被多个solution共用,类似CBB的机制,只不过它是直接引用代码仓库,而CBB是引用编译好的程序。

具体来讲,gclient 的核心功能是将solution中由DEPS文件定义的所有git仓库拉取到指定的目录。围绕着这个功能,它添加了一些其它的辅助功能,比如Hooksinclude_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