gclient

gclient 是 Google 开发的一套 git 库管理工具,能够将多个 git 仓库组成一个 solution,统一管理。

gclient 本身是一个命令,是 Google depot_tools 工具链的一部分。

gclient 脚本由目录树顶部的 .gclient 文件控制,该文件将包含来自多个位置的源代码。 .gclient 文件是一个 Python 脚本,它定义了 solutions 列表。


概念


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 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!