depot_tools_tutorial

原文链接: https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html

https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html

谷歌直接翻译:

depot_tools_tutorial(7)手册页

名称

depot_tools_tutorial - Chromium depot_tools git扩展的教程介绍。

描述

Chromium depot_tools(7)套件包含许多git工作流增强工具,这些工具旨在协同工作,使任何人都能熟练地与Chromium代码库进行争论。本教程介绍如何使用这些工具在Chromium上进行开发。这将包括:

  • 配置

  • 获取代码

  • TL; DR

  • 创建/上传CL

  • 更新代码

  • 管理多个CL

  • 管理依赖的CL

  • 示例演练

--help有关本教程中提到的任何命令的详细信息,请参阅联机帮助页(或输出)。

注意

如果您的平台不支持联机帮助页(或者您更喜欢比纯文本更具表现力的内容),则可以在文件夹中找到html格式的 所有文档[DEPOT_TOOLS]/man/html

必备条件

本教程假设您基本熟悉git术语和概念。如果您需要了解这些,以下是非常好的资源:

  • 想想(a)Git - 一个轻松的git概述。如果你有几分熟悉使用Git,但不舒服吧,然后让这个样子。

  • Git Immersion Tutorial - 一个深入的git教程。

  • pcottle的Visual Git分支 - 一个优秀的交互式/图形演示,介绍git如何处理提交,分支和显示git对它们执行的操作。

  • Pro Git书 - 从“基础知识到高级概念”学习git的“The”书。有点干,但非常彻底。

如果您已尝试过这些并且仍然遇到一些问题,那么在线还有许多其他资源可以提供帮助。如果你真的 真的卡住了,然后聊了起来铬基础架构团队成员对一些指针之一。

石蕊试验

如果你知道什么git addgit statusgit commit做,你知道的 基本上是什么git rebase的话,那么你应该知道,足以跟随。

配置

获得DEPOT工具

LINUX / MAC

克隆depot_tools存储库:

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

depot_tools添加到PATH 的末尾(您可能希望将其放入您的~/.bashrc~/.zshrc)。假设您将depot_tools克隆为 /path/to/depot_tools

$ export PATH=$PATH:/path/to/depot_tools

视窗

下载depot_tools 包并将其解压缩到某处。

警告

不要使用资源管理器中的drag-n-drop或copy-n-paste提取,这不会提取隐藏的“.git”文件夹,这是depot_tools自动更新自身所必需的。您可以使用上下文菜单中的“Extract all ...”。

depot_tools添加到PATH 的开头(必须先于任何Python安装)。假设您将包解压缩到C:\workspace\depot_tools

有管理员权限:

控制面板→系统和安全→系统→高级系统设置

修改PATH系统变量以包含C:\workspace\depot_tools

没有管理员权限:

控制面板→用户帐户→用户帐户→更改我的环境变量

添加PATH用户变量:C:\workspace\depot_tools;%PATH%

cmd.exeshell中运行命令gclient(不带参数)。在第一次运行时,gclient将安装使用代码所需的所有Windows特定位,包括msysgit和python。

注意

  • 如果从非cmd shell(例如,cygwin,PowerShell)运行gclient,它可能看起来运行正常,但msysgit,python和其他工具可能无法正确安装。

  • 如果在第一次运行gclient时看到文件系统出现奇怪错误,则可能需要禁用Windows索引。

  • 运行gclient后打开命令提示符并输入where python并确认depot_tools python.bat位于python.exe的任何副本之前。使用gn时未能确保这会导致过度构建 - 请参阅 crbug.com/611087。

BOOTSTRAPPING配置

如果您之前从未使用过git,则需要设置一些全局git配置; 在以下命令中替换您的姓名和电子邮件地址:

$ git config --global user.name "John Doe"
$ git config --global user.email "[email protected]"
$ git config --global core.autocrlf false
$ git config --global core.filemode false
$ # and for fun!
$ git config --global color.ui true

TL; DR

$ # get the code
$ # In an empty directory:
$ fetch {chromium,...}

$ # Update third_party repos and run pre-compile hooks
$ gclient sync

$ # Make a new change and upload it for review
$ git new-branch 
$ # repeat: [edit, git add, git commit]
$ git cl upload

$ # After change is reviewed, commit with the CQ
$ git cl set_commit
$ # Note that the committed hash which lands will /not/ match the
$ # commit hashes of your local branch.

获得代码

选择一个空目录并运行以下某个选项:

$ fetch chromium  # Basic checkout for desktop Chromium
$ fetch android   # Chromium checkout for Android platform
$ fetch ios       # Chromium checkout for iOS platform

fetch工具完成,你应该在你的工作目录下:

.gclient   # A configuration file for you source checkout
src/       # Top-level Chromium source checkout.

如果你是在linux上并且第一次获取代码,那么你需要运行:

$ cd src && ./build/install-build-deps.sh

最后:

$ gclient sync

这将拉出Chromium src结帐的所有依赖项。每次更新主src checkout时都需要运行它,包括切换分支时。

创建/上传CL

注意

本教程的其余部分假定您当前的工作目录是获取代码中src/提到的文件夹。

每个CL完全对应于git中的单个分支。任何时候你想开始一个新的CL:

$ git new-branch 

这将创建并签出一个名为的新分支branch_name,该分支将跟踪默认的上游分支(origin/master)。有关更多功能,请参阅 git-new-branch(1)。

根据需要为此分支提交尽可能多的更改。如果要上传以供审核,请运行:

$ git cl upload

这将使您的分支与其上游分支(在这种情况下为origin / master)的差异,并将其发布到 Chromium代码审查站点。

更新代码

不可避免地,你会想要从主要的Chromium回购中获取变化。使用depot_tools非常简单:

$ git rebase-update

此命令将更新所有CL以包含其上游的最新代码。它还将自动清理已经提交的CL以及其他一些好东西。有关完整的独家新闻,请参阅git-rebase-update(1)。

要注意的一件事是合并冲突。这些与SVN完全相同,但使用git可以更好地控制体验。git rebase-update将尝试为您重新绑定所有分支,但如果它遇到合并冲突,它将停止并使您处于rebase冲突状态(请参阅git-rebase(1))。解决git rebase合并冲突超出了本教程的范围,但在线有许多好的来源(参见一些先决条件)。

有时你很确定你已经承诺某个分支,但是git rebase-update无法确定。这通常是因为你的分支没有干净利落。你可以删除分支git branch -D ,但是你想在删除之前仔细检查你的分支与其上游的差异。如果是这种情况,您可以中止启动的rebase git rebase-update,然后运行git-squash-branch(1)将您的分支展平为单个提交。当你git rebase-update 再次跑步时,你会得到一个(希望)更小/更健全的差异。如果事实证明你的分支完全被提交是错误的,你可以使用 git-reflog(1)将你的分支重置回原来的状态。如果diff看起来无关紧要,你可以使用git rebase --skip忽略它,然后git rebase-update将为你清理它。

一旦你完成所有合并冲突的解决,只需运行git rebase-update,它就会从它停止的地方开始。一旦命令完成更新所有分支,它将返回到您启动的分支。

注意

运行git rebase-update将更新所有分支,但它不会自动运行gclient sync以更新您的依赖项。

管理多个CLS

有时您希望同时处理多个CL(例如,您发布了CL以供审核并希望处理其他内容)。对于您想要处理的每个CL,只需使用git new-branch

一旦开始拥有多个CL,就很容易失去轴承。幸运的是,depot_tools有两个工具可以帮助你:

$ git map
* 7dcfe47        (frozen_changes) 2014-03-12 ~ FREEZE.unindexed
* 4b0c180        2014-03-12 ~ modfile
* 59a7cca        2014-03-12 ~ a deleted file
* 6bec695        (origin/master) 2014-03-11 ~ Add neat feature    <(frozen_changes)
* d15a38a        2014-03-11 ~ Epic README update
* d559894        (master) 2014-03-11 ~ Important upstream change
| * 9c311fd      (cool_feature) 2014-03-11 ~ Respond to CL comments
| | * 2a1eeb2    (subfeature) 2014-03-11 ~ integrate with CoolService
| | * d777af6    2014-03-11 ~ slick commenting action
| |/
| * 265803a      2014-03-11 ~ another improvement    <(subfeature)
| * 6d831ac      (spleen_tag) 2014-03-11 ~ Refactor spleen
| * 82e74ab      2014-03-11 ~ Add widget
|/
* d08c5b3        (bogus_noparent) 2014-03-11 ~ Wonderful beginnings    <(cool_feature)

请注意,此示例repo迫切需要git-rebase-update(1)!

$ git map-branches
origin/master
  cool_feature
    subfeature
  frozen_changes *
  master

GIT-地图(1)

此工具以伪图形格式显示所有分支的历史记录。特别是,它将向您显示所有分支所在的提交,您当前已签出的提交等等。查看文档以获取完整详细信息。

GIT-地图分支(1)

此工具只显示您在回购中拥有哪些分支,以及它们之间的上游关系(以及您目前已检出的分支)。

此外,有时您需要在分支之间切换,但您正在进行中。您可以使用git-stash(1),但这可能很难管理,因为您需要记住您存储了哪些更改的分支。有益depot_tools包括两个工具,可以的情况下,极大地帮助:

git-freeze(1)允许您通过将更改提交到当前分支顶部的特殊命名提交,将当前分支置于“暂停动画”中。当您稍后回到您的分支机构时,您可以运行 git-thaw(1)以将您的工作进度更改恢复到原来的状态。

另一个有用的工具是git-rename-branch(1)。与git branch -m 此不同,此工具将正确保留分支与其下游相比的上游关系。

最后,看一下git-upstream-diff(1)。这将显示分支上的所有提交与上游跟踪分支的组合差异。这究竟是什么git cl upload会推高到代码审查。另外,考虑尝试使用--wordwise参数来获得彩色的每单词差异(而不是每行差异)。

管理相关的CLS

既然您知道如何管理独立的 CL,我们将看到如何管理 依赖的 CL。当您的第二个(或第三个或第四个或......)CL依赖于其他CL之一的更改时(例如:CL 2在没有CL 1的情况下不会编译,但您想将它们作为两个单独的评论提交),依赖CL很有用)。

像我们创建的所有其他CL一样,我们使用git-new-branch(1),但这次使用了额外的参数。首先,git checkout您要基于新分支的分支(即CL 1),然后运行:

$ git new-branch --upstream_current 

这将创建一个新的分支,它跟踪当前分支的上游(而不是origin / master)。您提交给此分支的所有更改都将是前一个分支的补充,但是当您执行时git cl upload,您将仅为依赖(子)分支上载差异。您可以根据需要以这种方式嵌套尽可能多的分支。

当你有依赖分支时,git-map(1)和git-map-branches(1)特别有用。此外,还有两个辅助命令,可以让您在这个分支树上上下遍历工作副本: git-nav-upstream(1)和git-nav-downstream(1)。

有时在处理依赖的CL时,事实证明你不小心在错误的上游建立了一个分支,但从那时起你就已经对它进行了更改,甚至是基于分支的另一个分支。或者你发现你有两个独立的CL,它们作为依赖的CL实际上会好得多。在这样的情况下,您可以检查违规分支并使用 git-reparent-branch(1)将其移动以跟踪不同的父级。请注意,这也可用于将分支从跟踪移动origin/masterlkgr 反之亦然。

示例WALKTHROUGH

本节将演示在编写,更新和提交多个CL时典型的工作流程。

 

$ fetch chromium
... truncated output ...
$ cd src

 

(仅限linux)

 

$ ./build/install-build-deps.sh
... truncated output ...

 

拉入HEAD的所有依赖项

 

$ gclient sync
... truncated output ...

 

让我们解决一些问题!

 

$ git new-branch fix_typo
$ echo -e '/Banana\ns/Banana/Kuun\nwq' | ed build/whitespace_file.txt
1503
It was a Domo-Banana.
It was a Domo-Kuun.
1501
$ git commit -am 'Fix terrible typo.'
[fix_typo 615ffa7] Fix terrible typo.
 1 file changed, 1 insertion(+), 1 deletion(-)
$ git map
* 615ffa7	 (HEAD -> fix_typo) 2014-04-10 ~ Fix terrible typo.
* beec6f4	 (origin/master, origin/HEAD) 2014-04-10 ~ Make ReflectorImpl use mailboxes    <(fix_typo)
* 41290e0	 2014-04-10 ~ don't use glibc-specific execinfo.h on uclibc builds
* a76fde7	 2014-04-10 ~ [fsp] Add requestUnmount() method together with the request manager.
* 9de7a71	 2014-04-10 ~ linux_aura: Use system configuration for middle clicking the titlebar.
* 073b0c2	 2014-04-10 ~ ContentView->ContentViewCore in ContentViewRenderView
* 2250f53	 2014-04-10 ~ ozone: evdev: Filter devices by path
* 33a7a74	 2014-04-10 ~ Always output seccomp error messages to stderr
$ git status
On branch fix_typo
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
$ git cl upload -r [email protected] --send-mail
... truncated output ...

 

在我们等待反馈的同时,让我们做点别的事。

 

$ git new-branch chap2
$ git map-branches
origin/master
  chap2 *
  fix_typo
$ cat >> build/whitespace_file.txt <

"You recall what happened on Mulholland drive?" The ceiling fan rotated slowly
overhead, barely disturbing the thick cigarette smoke. No doubt was left about
when the fan was last cleaned.
EOF
$ git status
On branch chap2
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)

	modified:   build/whitespace_file.txt

no changes added to commit (use "git add" and/or "git commit -a")

 

有人在代码审查中指出我们的拼写错误修正有一个错字:(我们仍在处理'chap2',但我们真的想要登陆'fix_typo',所以让我们切换并修复它。

 

$ git freeze
$ git checkout fix_typo
Switched to branch 'fix_typo'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
$ echo -e '/Kuun\ns/Kuun/Kun\nwq' | ed build/whitespace_file.txt
1501
It was a Domo-Kuun.
It was a Domo-Kun.
1500
$ git upstream-diff --wordwise
diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt
index 3eba355..57cdcee 100644
--- a/build/whitespace_file.txt
+++ b/build/whitespace_file.txt
@@ -17,7 +17,7 @@ swept up the streets (for it is in London that our scene lies), rattling along
the housetops, and fiercely agitating the scanty flame of the lamps that
struggled against the elements. A hooded figure emerged.

It was a Domo-BananaKun.

"What took you so long?", inquired his wife.

$ git commit -am 'Fix typo for good!'
[fix_typo 2c0ad9c] Fix typo for good!
 1 file changed, 1 insertion(+), 1 deletion(-)
$ git cl upload
... truncated output ...

 

由于我们得到了lgtm,让CQ登陆它。

 

$ git cl set_commit
$ git map
* 0e2e52e	 (chap2) 2014-04-10 ~ FREEZE.unindexed
| * 2c0ad9c	 (HEAD -> fix_typo) 2014-04-10 ~ Fix typo for good!
| * 615ffa7	 2014-04-10 ~ Fix terrible typo.
|/
* beec6f4	 (origin/master, origin/HEAD) 2014-04-10 ~ Make ReflectorImpl use mailboxes    <(chap2, fix_typo)
* 41290e0	 2014-04-10 ~ don't use glibc-specific execinfo.h on uclibc builds
* a76fde7	 2014-04-10 ~ [fsp] Add requestUnmount() method together with the request manager.
* 9de7a71	 2014-04-10 ~ linux_aura: Use system configuration for middle clicking the titlebar.
* 073b0c2	 2014-04-10 ~ ContentView->ContentViewCore in ContentViewRenderView
* 2250f53	 2014-04-10 ~ ozone: evdev: Filter devices by path
* 33a7a74	 2014-04-10 ~ Always output seccomp error messages to stderr

 

切换回我们使用nav *命令的地方(为了好玩... git checkout也可以在这里工作)

 

$ git map-branches
origin/master
  chap2
  fix_typo *
$ git nav-upstream
Note: switching to 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c 

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at beec6f4 Make ReflectorImpl use mailboxes
$ git nav-downstream
Previous HEAD position was beec6f4 Make ReflectorImpl use mailboxes
Switched to branch 'chap2'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
Please select a downstream branch
  0. chap2
  1. fix_typo
Selection (0-1)[0]: 0
$ git map-branches
origin/master
  chap2 *
  fix_typo

 

现在我们可以选择我们离开的第二章。

 

$ git thaw
$ git diff
diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt
index 3eba355..9d08d9d 100644
--- a/build/whitespace_file.txt
+++ b/build/whitespace_file.txt
@@ -34,3 +34,7 @@ with his fork, watching the runny jelly spread and pool across his plate,
 like the blood of a dying fawn. \"It reminds me of that time --\" he started, as
 his wife cut in quickly: \"-- please. I can't bear to hear it.\". A flury of
 images coming from the past flowed through his mind.
+
+"You recall what happened on Mulholland drive?" The ceiling fan rotated slowly
+overhead, barely disturbing the thick cigarette smoke. No doubt was left about
+when the fan was last cleaned.
$ cat >> build/whitespace_file.txt <

There was an poignant pause.
EOF
$ git diff
diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt
index 3eba355..e3a55de 100644
--- a/build/whitespace_file.txt
+++ b/build/whitespace_file.txt
@@ -34,3 +34,9 @@ with his fork, watching the runny jelly spread and pool across his plate,
 like the blood of a dying fawn. \"It reminds me of that time --\" he started, as
 his wife cut in quickly: \"-- please. I can't bear to hear it.\". A flury of
 images coming from the past flowed through his mind.
+
+"You recall what happened on Mulholland drive?" The ceiling fan rotated slowly
+overhead, barely disturbing the thick cigarette smoke. No doubt was left about
+when the fan was last cleaned.
+
+There was an poignant pause.
$ git commit -am 'Finish chapter 2'
[chap2 ceef712] Finish chapter 2
 1 file changed, 6 insertions(+)
$ git map
* ceef712	 (HEAD -> chap2) 2014-04-10 ~ Finish chapter 2
| * 2c0ad9c	 (fix_typo) 2014-04-10 ~ Fix typo for good!
| * 615ffa7	 2014-04-10 ~ Fix terrible typo.
|/
* beec6f4	 (origin/master, origin/HEAD) 2014-04-10 ~ Make ReflectorImpl use mailboxes    <(chap2, fix_typo)
* 41290e0	 2014-04-10 ~ don't use glibc-specific execinfo.h on uclibc builds
* a76fde7	 2014-04-10 ~ [fsp] Add requestUnmount() method together with the request manager.
* 9de7a71	 2014-04-10 ~ linux_aura: Use system configuration for middle clicking the titlebar.
* 073b0c2	 2014-04-10 ~ ContentView->ContentViewCore in ContentViewRenderView
* 2250f53	 2014-04-10 ~ ozone: evdev: Filter devices by path
* 33a7a74	 2014-04-10 ~ Always output seccomp error messages to stderr
$ git cl upload -r [email protected] --send-mail
... truncated output ...

 

我们戳了一个提交者,直到他们lgtm :)

 

$ git cl set_commit

 

虽然这贯穿了CQ,但让我们开始讨论第3章。因为我们知道第3章依赖于第2章,所以我们将跟踪当前的第2章分支。

 

$ git new-branch --upstream_current chap3
$ cat >> build/whitespace_file.txt <

CHAPTER 3:
Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he
began feeling sick.
EOF
$ git commit -am 'beginning of chapter 3'
[chap3 7d4238a] beginning of chapter 3
 1 file changed, 4 insertions(+)
$ git map
* 7d4238a	 (HEAD -> chap3) 2014-04-10 ~ beginning of chapter 3
* ceef712	 (chap2) 2014-04-10 ~ Finish chapter 2    <(chap3)
| * 2c0ad9c	 (fix_typo) 2014-04-10 ~ Fix typo for good!
| * 615ffa7	 2014-04-10 ~ Fix terrible typo.
|/
* beec6f4	 (origin/master, origin/HEAD) 2014-04-10 ~ Make ReflectorImpl use mailboxes    <(chap2, fix_typo)
* 41290e0	 2014-04-10 ~ don't use glibc-specific execinfo.h on uclibc builds
* a76fde7	 2014-04-10 ~ [fsp] Add requestUnmount() method together with the request manager.
* 9de7a71	 2014-04-10 ~ linux_aura: Use system configuration for middle clicking the titlebar.
* 073b0c2	 2014-04-10 ~ ContentView->ContentViewCore in ContentViewRenderView
* 2250f53	 2014-04-10 ~ ozone: evdev: Filter devices by path
* 33a7a74	 2014-04-10 ~ Always output seccomp error messages to stderr

 

我们暂时没有更新代码,所以我们现在就这样做。

 

$ git rebase-update
Fetching origin
From https://upstream
   beec6f4..59cdb73  master     -> origin/master
Rebasing: chap2
Rebasing: fix_typo
Failed! Attempting to squash fix_typo ... Success!
Rebasing: chap3
Reparented chap3 to track origin/master (was tracking chap2)
Deleted branch fix_typo (was 5d26fec).
Deleted branch chap2 (was 5d26fec).

 

好吧,看看那个。CQ已经登陆了我们的拼写错误和第2章分支,git rebase-update为我们清理了它们。

 

$ gclient sync
... truncated output ...
$ git map
* 93fe917	 (HEAD -> chap3) 2014-04-10 ~ beginning of chapter 3
* 5d26fec	 (origin/master, origin/HEAD) 2014-04-10 ~ Finish chapter 2    <(chap3)
* df7fefb	 2014-04-10 ~ Revert 255617, due to it not tracking use of the link doctor page properly.
* 4b39cda	 2014-04-10 ~ Fix terrible typo.
* 248c5b6	 2014-04-10 ~ Temporarily CHECK(trial) in ChromeRenderProcessObserver::OnSetFieldTrialGroup.
* 8171df8	 2014-04-10 ~ Remove AMD family check for the flapper crypto accelerator.
* d6a30d2	 2014-04-10 ~ Change the Pica load benchmark to listen for the polymer-ready event
* beec6f4	 2014-04-10 ~ Make ReflectorImpl use mailboxes
* 41290e0	 2014-04-10 ~ don't use glibc-specific execinfo.h on uclibc builds
* a76fde7	 2014-04-10 ~ [fsp] Add requestUnmount() method together with the request manager.
* 9de7a71	 2014-04-10 ~ linux_aura: Use system configuration for middle clicking the titlebar.
* 073b0c2	 2014-04-10 ~ ContentView->ContentViewCore in ContentViewRenderView
* 2250f53	 2014-04-10 ~ ozone: evdev: Filter devices by path
* 33a7a74	 2014-04-10 ~ Always output seccomp error messages to stderr

 

IRC上有人提到他们实际上已经登上了第3章!我们应该在继续之前做出改变。支持代码冲突!

 

$ git rebase-update
Fetching origin
From https://upstream
   5d26fec..59cdb73  master     -> origin/master
Rebasing: chap2
... lots of output, it's a conflict alright :(...
$ git diff
diff --cc build/whitespace_file.txt
index 1293282,f903ea2..0000000
--- a/build/whitespace_file.txt
+++ b/build/whitespace_file.txt
@@@ -42,4 -42,5 +42,9 @@@ when the fan was last cleaned
  There was an poignant pause.

  CHAPTER 3:
++<<<<<<< HEAD
 +Hilariousness! This chapter is awesome!
++=======
+ Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he
+ began feeling sick.
++>>>>>>> beginning of chapter 3

 

哦,那也不错。事实上......这是一个可怕的第3章!

 

$ $EDITOR build/whitespace_file.txt
... /me deletes bad chapter 3 ...
$ git add build/whitespace_file.txt
$ git diff --cached
diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt
index 1293282..f903ea2 100644
--- a/build/whitespace_file.txt
+++ b/build/whitespace_file.txt
@@ -42,4 +42,5 @@ when the fan was last cleaned.
 There was an poignant pause.

 CHAPTER 3:
-Hilariousness! This chapter is awesome!
+Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he
+began feeling sick.

 

好多了

 

$ git rebase --continue
Applying: beginning of chapter 3
$ git rebase-update
Fetching origin
chap3 up-to-date
$ gclient sync
... truncated output ...
$ git map
* 1cb4f5b	 (HEAD -> chap3) 2014-04-10 ~ beginning of chapter 3
* 59cdb73	 (origin/master, origin/HEAD) 2014-04-10 ~ Refactor data interchange format.    <(chap3)
* 34676a3	 2014-04-10 ~ Ensure FS is exited for all not-in-same-page navigations.
* 7d4784e	 2014-04-10 ~ Add best chapter2 ever!
* 5d26fec	 2014-04-10 ~ Finish chapter 2
* df7fefb	 2014-04-10 ~ Revert 255617, due to it not tracking use of the link doctor page properly.
* 4b39cda	 2014-04-10 ~ Fix terrible typo.
* 248c5b6	 2014-04-10 ~ Temporarily CHECK(trial) in ChromeRenderProcessObserver::OnSetFieldTrialGroup.
* 8171df8	 2014-04-10 ~ Remove AMD family check for the flapper crypto accelerator.
* d6a30d2	 2014-04-10 ~ Change the Pica load benchmark to listen for the polymer-ready event
* beec6f4	 2014-04-10 ~ Make ReflectorImpl use mailboxes
* 41290e0	 2014-04-10 ~ don't use glibc-specific execinfo.h on uclibc builds
* a76fde7	 2014-04-10 ~ [fsp] Add requestUnmount() method together with the request manager.
* 9de7a71	 2014-04-10 ~ linux_aura: Use system configuration for middle clicking the titlebar.
* 073b0c2	 2014-04-10 ~ ContentView->ContentViewCore in ContentViewRenderView
* 2250f53	 2014-04-10 ~ ozone: evdev: Filter devices by path
* 33a7a74	 2014-04-10 ~ Always output seccomp error messages to stderr
$ git cl upload
... truncated output ...

 

 

所以你有基本的流程。请注意,你不具备做使用这些工具铬发展。只要git cl upload能够上传好的补丁,任何git工作流都是兼容的 。

结论

希望通过depot_tools为您提供关于Chromium开发的良好开端概述 。如果您有本教程未解答的问题或工具的手册页(请参阅此处所有工具的索引: depot_tools(7)),请随时询问。

词汇表

CL

一个变化列表。这是您想要提交给代码库的差异。

DEPS

chrome checkout中的一个文件,gclient sync用于确定要引入的依赖项。此文件还包含钩子

LKGR

最后一次良好的修订版。这是一个git-tag(1),它跟踪其最后一个版本origin/master已通过主Chromium瀑布的全套测试 。

铬DEPOT_TOOLS

部分铬depot_tools(7)套件。这些工具旨在协助铬及相关项目的开发。从这里下载工具。

上次更新时间2019-05-03 10:40:16美国东部时间

你可能感兴趣的:(WebRTC)