gclient
gclient 是 Google 开发的一套 git 库管理工具,能够将多个 git 仓库组成一个 solution,统一管理。
gclient 本身是一个命令,是 Google depot_tools 工具链的一部分。
gclient 脚本由目录树顶部的 .gclient
文件控制,该文件将包含来自多个位置的源代码。 .gclient
文件是一个 Python 脚本,它定义了 solutions
列表。
概念
.gclient
文件:规定了需要拉取的 solution。- solution:软件组件的集合,包含 DEPS 文件的仓库,可认为是一个完整的项目。
DEPS
文件:规定了项目依赖关系。include_rules
:指定当前目录下哪些目录/文件可以被其他代码 include 包含- hooks:当
.gclient
拉完代码后执行的额外脚本
gclient config 命令
该命令用于生成 .gclient
文件,用于初始化要拉取的 solution。
示例一,chromium:
solutions = [
{
"url": "https://chromium.googlesource.com/chromium/src.git", # Solution仓库地址
"managed": False,
"name": "src", # 拉取代码后存放的位置
"custom_deps": {}, # 自定义依赖的仓库地址
"custom_vars": {},
},
]
示例二,Dart:
solutions = [
{
"name": "sdk",
"url": "https://dart.googlesource.com/sdk.git",
"deps_file": "DEPS",
"managed": False,
"custom_deps": {},
},
]
其中字段含义:
名称 | 含义 |
---|---|
name | 代码保存位置 |
url | 源码仓库地址 |
deps_file | 一个字符串,工程中的依赖列表文件,可选,默认为 DEPS |
custom_deps | 可选字典,用于覆盖 DEPS |
gclient sync
该命令用于拉取各仓库的代码。参数含义:
参数 | 含义 |
---|---|
-f 、--force |
强制更新未更改模块 |
--with_branch_heads |
除了clone默认refspecs外,还会clone "branch_heads" refspecs |
--with_tags |
除了默认的refspec之外,还可以clone git tags |
--no-history |
不拉取git提交历史信息 |
--revision <version> |
将代码切换到 version 版本 |
--nohooks |
拉取代码之后不执行hooks。 |
DEPS
在每个签出的解决方案中,gclient 期望找到一个通常名为 DEPS
的文件。DEPS
文件是一个 Python 脚本,它定义了一个名为 deps
的字典:
deps = {
"src/outside": "https://outside-server/one/repo.git@12345677890123456778901234567789012345677890",
"src/component": "https://dont-use-github.com/its/unreliable.git@0000000000000000000000000000000000000000",
"src/relative": "/another/repo.git@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
}
网络资源
本文作者:Maeiee
本文链接:gclient
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!