| Index: docs/html/depot_tools_tutorial.html
|
| diff --git a/docs/html/depot_tools_tutorial.html b/docs/html/depot_tools_tutorial.html
|
| index 3595c59ff974d2b49bcbf0782a880d54c3cc791f..73c545d85c1d487c77cebe2ed421d87fa7807899 100644
|
| --- a/docs/html/depot_tools_tutorial.html
|
| +++ b/docs/html/depot_tools_tutorial.html
|
| @@ -771,7 +771,7 @@ Chromium using these tools. This will cover:</p></div>
|
| </li>
|
| <li>
|
| <p>
|
| -<a href="#_tl_dr_walkthrough">TL;DR Walkthrough</a>
|
| +<a href="#_tl_dr">TL;DR</a>
|
| </p>
|
| </li>
|
| <li>
|
| @@ -794,6 +794,11 @@ Chromium using these tools. This will cover:</p></div>
|
| <a href="#_managing_dependent_cls">Managing dependent CLs</a>
|
| </p>
|
| </li>
|
| +<li>
|
| +<p>
|
| +<a href="#_example_walkthrough">Example Walkthrough</a>
|
| +</p>
|
| +</li>
|
| </ul></div>
|
| <div class="paragraph"><p>Please refer to the manpages (or <code>--help</code> output) for details about any of the
|
| commands mentioned in this tutorial.</p></div>
|
| @@ -979,6 +984,30 @@ commands:</p></div>
|
| </div>
|
| </div>
|
| <div class="sect1">
|
| +<h2 id="_tl_dr">TL;DR</h2>
|
| +<div class="sectionbody">
|
| +<div class="listingblock">
|
| +<div class="content">
|
| +<pre><code><strong><span class="white">$</span></strong> # get the code
|
| +<strong><span class="white">$</span></strong> # In an empty directory:
|
| +<strong><span class="white">$ fetch {chromium,blink,...}</span></strong>
|
| +
|
| +<strong><span class="white">$</span></strong> # Update third_party repos and run pre-compile hooks
|
| +<strong><span class="white">$ gclient sync</span></strong>
|
| +
|
| +<strong><span class="white">$</span></strong> # Make a new change and upload it for review
|
| +<strong><span class="white">$ git new-branch branchname</span></strong>
|
| +<strong><span class="white">$</span></strong> # repeat: [edit, git add, git commit]
|
| +<strong><span class="white">$ git cl upload</span></strong>
|
| +
|
| +<strong><span class="white">$</span></strong> # After change is reviewed, commit with the CQ
|
| +<strong><span class="white">$ git cl set_commit</span></strong>
|
| +<strong><span class="white">$</span></strong> # Note that the committed hash which lands will /not/ match the
|
| +<strong><span class="white">$</span></strong> # commit hashes of your local branch.</code></pre>
|
| +</div></div>
|
| +</div>
|
| +</div>
|
| +<div class="sect1">
|
| <h2 id="_getting_the_code">GETTING THE CODE</h2>
|
| <div class="sectionbody">
|
| <div class="paragraph"><p>Pick an empty directory and run one of the following:</p></div>
|
| @@ -1004,23 +1033,207 @@ directory:</p></div>
|
| <div class="paragraph"><p>And finally:</p></div>
|
| <div class="listingblock">
|
| <div class="content">
|
| -<pre><code><strong><span class="white">$ gclient sync</span></strong> <b><1></b></code></pre>
|
| +<pre><code><strong><span class="white">$ gclient sync</span></strong></code></pre>
|
| </div></div>
|
| -<div class="colist arabic"><ol>
|
| -<li>
|
| +<div class="paragraph"><p>This will pull all dependencies of the Chromium src checkout. You will need
|
| +to run this any time you update the main src checkout.</p></div>
|
| +</div>
|
| +</div>
|
| +<div class="sect1">
|
| +<h2 id="_creating_uploading_a_cl">CREATING / UPLOADING A CL</h2>
|
| +<div class="sectionbody">
|
| +<div class="admonitionblock">
|
| +<table><tr>
|
| +<td class="icon">
|
| +<div class="title">Note</div>
|
| +</td>
|
| +<td class="content">The remainder of the tutorial assumes that your current working directory
|
| +is the <code>src/</code> folder mentioned in <a href="#_getting_the_code">Getting the code</a>.</td>
|
| +</tr></table>
|
| +</div>
|
| +<div class="paragraph"><p>Each CL corresponds exactly with a single branch in git. Any time you want to
|
| +begin a new CL, just:</p></div>
|
| +<div class="listingblock">
|
| +<div class="content">
|
| +<pre><code><strong><span class="white">$ git new-branch <branch_name></span></strong></code></pre>
|
| +</div></div>
|
| +<div class="paragraph"><p>This will create and checkout a new branch named <code>branch_name</code> which will track
|
| +the default upstream (which is <code>origin/master</code>). See <a href="git-new-branch.html">git-new-branch(1)</a>
|
| +for more features, such as the ability to track <em>LKGR</em>.</p></div>
|
| +<div class="paragraph"><p>Commit as many changes as you like to this branch. When you want to upload it
|
| +for review, run:</p></div>
|
| +<div class="listingblock">
|
| +<div class="content">
|
| +<pre><code><strong><span class="white">$ git cl upload</span></strong></code></pre>
|
| +</div></div>
|
| +<div class="paragraph"><p>This will take the diff of your branch against its upstream (<code>origin/master</code>),
|
| +and will post it to the <a href="https://codereview.chromium.org">Chromium code
|
| +review site</a>.</p></div>
|
| +</div>
|
| +</div>
|
| +<div class="sect1">
|
| +<h2 id="_updating_the_code">UPDATING THE CODE</h2>
|
| +<div class="sectionbody">
|
| +<div class="paragraph"><p>Inevitably, you’ll want to pull in changes from the main Chromium repo. This is
|
| +pretty easy with <em>depot_tools</em>:</p></div>
|
| +<div class="listingblock">
|
| +<div class="content">
|
| +<pre><code><strong><span class="white">$ git rebase-update</span></strong></code></pre>
|
| +</div></div>
|
| +<div class="paragraph"><p>This command will update all of your CLs to contain the latest code from their
|
| +upstreams. It will also automatically clean up CLs which have been committed and
|
| +a couple other nice things. See <a href="git-rebase-update.html">git-rebase-update(1)</a> for the full
|
| +scoop.</p></div>
|
| +<div class="paragraph"><p>One thing to look out for are <em>merge conflicts</em>. These happen for exactly the
|
| +same as they do with SVN, but the experience is a little more controllable with
|
| +git. <code>git rebase-update</code> will try to rebase all your branches for you, but if it
|
| +encounters a merge conflict in one, it will halt and leave you in a rebase
|
| +conflict state (see <a href="git-rebase.html">git-rebase(1)</a>). Resolving <code>git rebase</code> merge
|
| +conflicts is beyond the scope of this tutorial, but there are many good sources
|
| +online (see the <a href="#_prerequisites">Prerequisites</a> for some).</p></div>
|
| +<div class="paragraph"><p>Sometimes you’re pretty certain that you’ve committed a certain branch, but <code>git
|
| +rebase-update</code> isn’t able to tell that for sure. This is usually because your
|
| +branch doesn’t rebase cleanly. You could just delete the branch with <code>git branch
|
| +-D <branch></code>, but you’d like to double check the diff of your branch against its
|
| +upstream before deleting it. If this is the case you can abort the rebase
|
| +started by <code>git rebase-update</code>, and then run <a href="git-squash-branch.html">git-squash-branch(1)</a> to
|
| +flatten your branch into a single commit. When you run <code>git rebase-update</code>
|
| +again, you’ll get a (hopefully) much smaller / saner diff. If it turns out you
|
| +were wrong about your branch being fully committed, you can use
|
| +<a href="git-reflog.html">git-reflog(1)</a> to reset your branch back to where it was before. If the
|
| +diff looks inconsequential, you can use <code>git rebase --skip</code> to ignore it, and
|
| +then <code>git rebase-update</code> will clean it up for you.</p></div>
|
| +<div class="paragraph"><p>Once you’re done resolving all of the merge conflict, just run <code>git
|
| +rebase-update</code>, and it will pick up where it left off. Once the command has
|
| +finished updating all of your branches, it will return you back to the branch
|
| +you started on.</p></div>
|
| +<div class="admonitionblock">
|
| +<table><tr>
|
| +<td class="icon">
|
| +<div class="title">Note</div>
|
| +</td>
|
| +<td class="content">Running <code>git rebase-update</code> will update all your branches, but it will not
|
| +automatically run <code>gclient sync</code> to update your dependencies.</td>
|
| +</tr></table>
|
| +</div>
|
| +</div>
|
| +</div>
|
| +<div class="sect1">
|
| +<h2 id="_managing_multiple_cls">MANAGING MULTIPLE CLS</h2>
|
| +<div class="sectionbody">
|
| +<div class="paragraph"><p>Sometimes you want to work on more than one CL at once (say, you have a CL
|
| +posted for review and want to work on something else). For each CL that you
|
| +want to work on, just use <code>git new-branch <branchname></code>.</p></div>
|
| +<div class="paragraph"><p>Once you start to have more than one CL at a time, it can be easy to lose your
|
| +bearings. Fortunately, <em>depot_tools</em> has two tools to help you out:</p></div>
|
| +<div class="listingblock">
|
| +<div class="content">
|
| +<pre><code><strong><span class="white">$ git map</span></strong>
|
| +<span class="white blue-background">*</span>​<strong><span class="blue-background red"> 7dcfe47 </span></strong> <span class="green">(</span>​<strong><span class="aqua">frozen_changes</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-12</span> ~ FREEZE.unindexed
|
| +* <strong><span class="red">4b0c180</span></strong> <span class="yellow">2014-03-12</span> ~ modfile
|
| +* <strong><span class="red">59a7cca</span></strong> <span class="yellow">2014-03-12</span> ~ a deleted file
|
| +* <strong><span class="red">6bec695</span></strong> <span class="green">(</span>​<span class="red">origin/master</span>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Add neat feature <strong><span class="white"><(frozen_changes)</span></strong>
|
| +* <strong><span class="red">d15a38a</span></strong> <span class="yellow">2014-03-11</span> ~ Epic README update
|
| +* <strong><span class="red">d559894</span></strong> <span class="green">(</span>​<strong><span class="lime">master</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Important upstream change
|
| +<span class="red">|</span> * <strong><span class="red">9c311fd</span></strong> <span class="green">(</span>​<strong><span class="lime">cool_feature</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Respond to CL comments
|
| +<span class="red">|</span> <span class="green">|</span> * <strong><span class="red">2a1eeb2</span></strong> <span class="green">(</span>​<strong><span class="lime">subfeature</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ integrate with CoolService
|
| +<span class="red">|</span> <span class="green">|</span> * <strong><span class="red">d777af6</span></strong> <span class="yellow">2014-03-11</span> ~ slick commenting action
|
| +<span class="red">|</span> <span class="green">|/</span>
|
| +<span class="red">|</span> * <strong><span class="red">265803a</span></strong> <span class="yellow">2014-03-11</span> ~ another improvement <strong><span class="white"><(subfeature)</span></strong>
|
| +<span class="red">|</span> * <strong><span class="red">6d831ac</span></strong> <span class="green">(</span>​<strong><span class="fuchsia">spleen_tag</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Refactor spleen
|
| +<span class="red">|</span> * <strong><span class="red">82e74ab</span></strong> <span class="yellow">2014-03-11</span> ~ Add widget
|
| +<span class="red">|/</span>
|
| +* <strong><span class="red">d08c5b3</span></strong> <span class="green">(</span>​<strong><span class="lime">bogus_noparent</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Wonderful beginnings <strong><span class="white"><(cool_feature)</span></strong></code></pre>
|
| +</div></div>
|
| +<div class="paragraph"><p>Note that this example repo is in dire need of a <a href="git-rebase-update.html">git-rebase-update(1)</a>!</p></div>
|
| +<div class="listingblock">
|
| +<div class="content">
|
| +<pre><code><strong><span class="white">$ git map-branches</span></strong>
|
| +<span class="red">origin/master</span>
|
| + <span class="green">cool_feature</span>
|
| + <span class="green">subfeature</span>
|
| + <span class="aqua">frozen_changes *</span>
|
| + <span class="green">master</span></code></pre>
|
| +</div></div>
|
| +<div class="dlist"><dl>
|
| +<dt class="hdlist1">
|
| +<a href="git-map.html">git-map(1)</a>
|
| +</dt>
|
| +<dd>
|
| <p>
|
| -This will pull all dependencies of the Chromium src checkout. You will need
|
| -to run this any time you update the main src checkout.
|
| + This tool shows you the history of all of your branches in a pseudo-graphical
|
| + format. In particular, it will show you which commits all of your branches
|
| + are on, which commit you currently have checked out, and more. Check out the
|
| + doc for the full details.
|
| </p>
|
| -</li>
|
| -</ol></div>
|
| +</dd>
|
| +<dt class="hdlist1">
|
| +<a href="git-map-branches.html">git-map-branches(1)</a>
|
| +</dt>
|
| +<dd>
|
| +<p>
|
| + This tool just shows you which branches you have in your repo, and thier
|
| + upstream relationship to each other (as well as which branch you have checked
|
| + out at the moment).
|
| +</p>
|
| +</dd>
|
| +</dl></div>
|
| +<div class="paragraph"><p>Additionally, sometimes you need to switch between branches, but you’ve got work
|
| +in progress. You could use <a href="git-stash.html">git-stash(1)</a>, but that can be tricky to
|
| +manage because you need to remember which branches you stashed what changes on.
|
| +Helpfully <em>depot_tools</em> includes two tools which can greatly assist in case:</p></div>
|
| +<div class="paragraph"><p><a href="git-freeze.html">git-freeze(1)</a> allows you to put the current branch in 'suspended
|
| +animation' by committing your changes to a specially-named commit on the top of
|
| +your current branch. When you come back to your branch later, you can just run
|
| +<a href="git-thaw.html">git-thaw(1)</a> to get your work-in-progress changes back to what they were.</p></div>
|
| +<div class="paragraph"><p>Another useful tool is <a href="git-rename-branch.html">git-rename-branch(1)</a>. Unlike <code>git branch -m <old>
|
| +<new></code>, this tool will correctly preserve the upstream relationships of your
|
| +branch compared to its downstreams.</p></div>
|
| +<div class="paragraph"><p>Finally, take a look at <a href="git-upstream-diff.html">git-upstream-diff(1)</a>. This will show you the
|
| +combined diff for all the commits on your branch against the upstream tracking
|
| +branch. This is <em>exactly</em> what <code>git cl upload</code> will push up to code review.
|
| +Additionally, consider trying the <code>--wordwise</code> argument to get a colorized
|
| +per-word diff (instead of a per-line diff).</p></div>
|
| </div>
|
| </div>
|
| <div class="sect1">
|
| -<h2 id="_tl_dr_walkthrough">TL;DR WALKTHROUGH</h2>
|
| +<h2 id="_managing_dependent_cls">MANAGING DEPENDENT CLS</h2>
|
| <div class="sectionbody">
|
| -<div class="paragraph"><p>This section will demo what a typical workflow looks like when writing, updating,
|
| -and committing multiple CLs.</p></div>
|
| +<div class="paragraph"><p>Now that you know how to manage <em>independent</em> CLs, we’ll see how to manage
|
| +<em>dependent</em> CLs. Dependent CLs are useful when your second (or third or fourth
|
| +or …) CL depends on the changes in one of your other CLs (such as: CL 2 won’t
|
| +compile without CL 1, but you want to submit them as two separate reviews).</p></div>
|
| +<div class="paragraph"><p>Like all of the other CLs we’ve created, we use <a href="git-new-branch.html">git-new-branch(1)</a>, but
|
| +this time with an extra argument. First, <code>git checkout</code> the branch
|
| +you want to base the new one on (i.e. CL 1), and then run:</p></div>
|
| +<div class="listingblock">
|
| +<div class="content">
|
| +<pre><code><strong><span class="white">$ git new-branch --upstream_current <branch_name></span></strong></code></pre>
|
| +</div></div>
|
| +<div class="paragraph"><p>This will make a new branch which tracks the <em>current</em> branch as its upstream
|
| +(as opposed to <em>origin/master</em>). All changes you commit to this branch will be
|
| +in addition to the previous branch, but when you <code>git cl upload</code>, you will only
|
| +upload the diff for the dependent (child) branch. You may have as many branches
|
| +nested in this fashion as you like.</p></div>
|
| +<div class="paragraph"><p><a href="git-map.html">git-map(1)</a> and <a href="git-map-branches.html">git-map-branches(1)</a> are particularly helpful when
|
| +you have dependent branches. In addition, there are two helper commands which
|
| +let you traverse your working copy up and down this tree of branches:
|
| +<a href="git-nav-upstream.html">git-nav-upstream(1)</a> and <a href="git-nav-downstream.html">git-nav-downstream(1)</a>.</p></div>
|
| +<div class="paragraph"><p>Sometimes when dealing with dependent CLs, it turns out that you accidentally
|
| +based a branch on the wrong upstream, but since then you’ve committed changes to
|
| +it, or even based <em>another</em> branch off of that one. Or you discover that you
|
| +have two independent CLs that would actually be much better off as dependent
|
| +CLs. In instances like these, you can check out the offending branch and use
|
| +<a href="git-reparent-branch.html">git-reparent-branch(1)</a> to move it to track a different parent. Note that
|
| +this can also be used to move a branch from tracking <code>origin/master</code> to <code>lkgr</code>
|
| +or vice versa.</p></div>
|
| +</div>
|
| +</div>
|
| +<div class="sect1">
|
| +<h2 id="_example_walkthrough">EXAMPLE WALKTHROUGH</h2>
|
| +<div class="sectionbody">
|
| +<div class="paragraph"><p>This section will demo what a typical workflow looks like when writing,
|
| +updating, and committing multiple CLs.</p></div>
|
| <div class="paragraph"><p></p></div><div class="listingblock"><div class="content"><pre><code><span style="font-weight: bold; color: #ffffff">$ fetch chromium</span>
|
| ... truncated output ...
|
| <span style="font-weight: bold; color: #ffffff">$ cd src</span>
|
| @@ -1047,10 +1260,10 @@ It was a Domo-Kuun.
|
| * <span style="font-weight: bold; color: #e42e16">2250f53 </span><span style="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ ozone: evdev: Filter devices by path
|
| * <span style="font-weight: bold; color: #e42e16">33a7a74 </span><span style="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Always output seccomp error messages to stderr
|
| <span style="font-weight: bold; color: #ffffff">$ git status</span>
|
| -# On branch fix_typo
|
| -# Your branch is ahead of 'origin/master' by 1 commit.
|
| -# (use "git push" to publish your local commits)
|
| -#
|
| +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 directory clean
|
| <span style="font-weight: bold; color: #ffffff">$ git cl upload -r domo@chromium.org --send-mail</span>
|
| ... truncated output ...
|
| @@ -1066,15 +1279,15 @@ overhead, barely disturbing the thick cigarette smoke. No doubt was left about
|
| when the fan was last cleaned.
|
| EOF
|
| <span style="font-weight: bold; color: #ffffff">$ git status</span>
|
| -# On branch chap2
|
| -# Your branch is up-to-date with 'origin/master'.
|
| -#
|
| -# Changes not staged for commit:
|
| -# (use "git add <file>..." to update what will be committed)
|
| -# (use "git checkout -- <file>..." to discard changes in working directory)
|
| -#
|
| -# <span style="color: #e42e16">modified: build/whitespace_file.txt</span>
|
| -#
|
| +On branch chap2
|
| +Your branch is up-to-date with 'origin/master'.
|
| +
|
| +Changes not staged for commit:
|
| + (use "git add <file>..." to update what will be committed)
|
| + (use "git checkout -- <file>..." to discard changes in working directory)
|
| +
|
| + <span style="color: #e42e16">modified: build/whitespace_file.txt</span>
|
| +
|
| no changes added to commit (use "git add" and/or "git commit -a")
|
| </code></pre></div></div><p><div class="paragraph"> Someone on the code review pointed out that our typo-fix has a typo :( We're still working on 'chap2' but we really want to land 'fix_typo', so let's switch over and fix it.</p></div><div class="listingblock"><div class="content"><pre><code><span style="font-weight: bold; color: #ffffff">$ git freeze</span>
|
| <span style="font-weight: bold; color: #ffffff">$ git checkout fix_typo</span>
|
| @@ -1319,196 +1532,6 @@ development using these tools. Any git workflow is compatible, as long as
|
| </div>
|
| </div>
|
| <div class="sect1">
|
| -<h2 id="_creating_uploading_a_cl">CREATING / UPLOADING A CL</h2>
|
| -<div class="sectionbody">
|
| -<div class="admonitionblock">
|
| -<table><tr>
|
| -<td class="icon">
|
| -<div class="title">Note</div>
|
| -</td>
|
| -<td class="content">The remainder of the tutorial assumes that your current working directory
|
| -is the <code>src/</code> folder mentioned in <a href="#_getting_the_code">Getting the code</a>.</td>
|
| -</tr></table>
|
| -</div>
|
| -<div class="paragraph"><p>Each CL corresponds exactly with a single branch in git. Any time you want to
|
| -begin a new CL, just:</p></div>
|
| -<div class="listingblock">
|
| -<div class="content">
|
| -<pre><code><strong><span class="white">$ git new-branch <branch_name></span></strong></code></pre>
|
| -</div></div>
|
| -<div class="paragraph"><p>This will create and checkout a new branch named <code>branch_name</code> which will track
|
| -the default upstream (which is <code>origin/master</code>). See <a href="git-new-branch.html">git-new-branch(1)</a>
|
| -for more features, such as the ability to track <em>LKGR</em>.</p></div>
|
| -<div class="paragraph"><p>Commit as many changes as you like to this branch. When you want to upload it
|
| -for review, run:</p></div>
|
| -<div class="listingblock">
|
| -<div class="content">
|
| -<pre><code><strong><span class="white">$ git cl upload</span></strong></code></pre>
|
| -</div></div>
|
| -<div class="paragraph"><p>This will take the diff of your branch against its upstream (<code>origin/master</code>),
|
| -and will post it to the <a href="https://codereview.chromium.org">Chromium code
|
| -review site</a>.</p></div>
|
| -</div>
|
| -</div>
|
| -<div class="sect1">
|
| -<h2 id="_updating_the_code">UPDATING THE CODE</h2>
|
| -<div class="sectionbody">
|
| -<div class="paragraph"><p>Inevitably, you’ll want to pull in changes from the main Chromium repo. This is
|
| -pretty easy with <em>depot_tools</em>:</p></div>
|
| -<div class="listingblock">
|
| -<div class="content">
|
| -<pre><code><strong><span class="white">$ git rebase-update</span></strong></code></pre>
|
| -</div></div>
|
| -<div class="paragraph"><p>This command will update all of your CLs to contain the latest code from their
|
| -upstreams. It will also automatically clean up CLs which have been committed and
|
| -a couple other nice things. See <a href="git-rebase-update.html">git-rebase-update(1)</a> for the full
|
| -scoop.</p></div>
|
| -<div class="paragraph"><p>One thing to look out for are <em>merge conflicts</em>. These happen for exactly the
|
| -same as they do with SVN, but the experience is a little more controllable with
|
| -git. <code>git rebase-update</code> will try to rebase all your branches for you, but if it
|
| -encounters a merge conflict in one, it will halt and leave you in a rebase
|
| -conflict state (see <a href="git-rebase.html">git-rebase(1)</a>). Resolving <code>git rebase</code> merge
|
| -conflicts is beyond the scope of this tutorial, but there are many good sources
|
| -online (see the <a href="#_prerequisites">Prerequisites</a> for some).</p></div>
|
| -<div class="paragraph"><p>Sometimes you’re pretty certain that you’ve committed a certain branch, but <code>git
|
| -rebase-update</code> isn’t able to tell that for sure. This is usually because your
|
| -branch doesn’t rebase cleanly. You could just delete the branch with <code>git branch
|
| --D <branch></code>, but you’d like to double check the diff of your branch against its
|
| -upstream before deleting it. If this is the case you can abort the rebase
|
| -started by <code>git rebase-update</code>, and then run <a href="git-squash-branch.html">git-squash-branch(1)</a> to
|
| -flatten your branch into a single commit. When you run <code>git rebase-update</code>
|
| -again, you’ll get a (hopefully) much smaller / saner diff. If it turns out you
|
| -were wrong about your branch being fully committed, you can use
|
| -<a href="git-reflog.html">git-reflog(1)</a> to reset your branch back to where it was before. If the
|
| -diff looks inconsequential, you can use <code>git rebase --skip</code> to ignore it, and
|
| -then <code>git rebase-update</code> will clean it up for you.</p></div>
|
| -<div class="paragraph"><p>Once you’re done resolving all of the merge conflict, just run <code>git
|
| -rebase-update</code>, and it will pick up where it left off. Once the command has
|
| -finished updating all of your branches, it will return you back to the branch
|
| -you started on.</p></div>
|
| -<div class="admonitionblock">
|
| -<table><tr>
|
| -<td class="icon">
|
| -<div class="title">Note</div>
|
| -</td>
|
| -<td class="content">Running <code>git rebase-update</code> will update all your branches, but it will not
|
| -automatically run <code>gclient sync</code> to update your dependencies.</td>
|
| -</tr></table>
|
| -</div>
|
| -</div>
|
| -</div>
|
| -<div class="sect1">
|
| -<h2 id="_managing_multiple_cls">MANAGING MULTIPLE CLS</h2>
|
| -<div class="sectionbody">
|
| -<div class="paragraph"><p>Sometimes you want to work on more than one CL at once (say, you have a CL
|
| -posted for review and want to work on something else). For each CL that you
|
| -want to work on, just use <code>git new-branch <branchname></code>.</p></div>
|
| -<div class="paragraph"><p>Once you start to have more than one CL at a time, it can be easy to lose your
|
| -bearings. Fortunately, <em>depot_tools</em> has two tools to help you out:</p></div>
|
| -<div class="listingblock">
|
| -<div class="content">
|
| -<pre><code><strong><span class="white">$ git map</span></strong>
|
| -<span class="white blue-background">*</span>​<strong><span class="blue-background red"> 7dcfe47 </span></strong> <span class="green">(</span>​<strong><span class="aqua">frozen_changes</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-12</span> ~ FREEZE.unindexed
|
| -* <strong><span class="red">4b0c180</span></strong> <span class="yellow">2014-03-12</span> ~ modfile
|
| -* <strong><span class="red">59a7cca</span></strong> <span class="yellow">2014-03-12</span> ~ a deleted file
|
| -* <strong><span class="red">6bec695</span></strong> <span class="green">(</span>​<span class="red">origin/master</span>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Add neat feature <strong><span class="white"><(frozen_changes)</span></strong>
|
| -* <strong><span class="red">d15a38a</span></strong> <span class="yellow">2014-03-11</span> ~ Epic README update
|
| -* <strong><span class="red">d559894</span></strong> <span class="green">(</span>​<strong><span class="lime">master</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Important upstream change
|
| -<span class="red">|</span> * <strong><span class="red">9c311fd</span></strong> <span class="green">(</span>​<strong><span class="lime">cool_feature</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Respond to CL comments
|
| -<span class="red">|</span> <span class="green">|</span> * <strong><span class="red">2a1eeb2</span></strong> <span class="green">(</span>​<strong><span class="lime">subfeature</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ integrate with CoolService
|
| -<span class="red">|</span> <span class="green">|</span> * <strong><span class="red">d777af6</span></strong> <span class="yellow">2014-03-11</span> ~ slick commenting action
|
| -<span class="red">|</span> <span class="green">|/</span>
|
| -<span class="red">|</span> * <strong><span class="red">265803a</span></strong> <span class="yellow">2014-03-11</span> ~ another improvement <strong><span class="white"><(subfeature)</span></strong>
|
| -<span class="red">|</span> * <strong><span class="red">6d831ac</span></strong> <span class="green">(</span>​<strong><span class="fuchsia">spleen_tag</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Refactor spleen
|
| -<span class="red">|</span> * <strong><span class="red">82e74ab</span></strong> <span class="yellow">2014-03-11</span> ~ Add widget
|
| -<span class="red">|/</span>
|
| -* <strong><span class="red">d08c5b3</span></strong> <span class="green">(</span>​<strong><span class="lime">bogus_noparent</span></strong>​<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ Wonderful beginnings <strong><span class="white"><(cool_feature)</span></strong></code></pre>
|
| -</div></div>
|
| -<div class="paragraph"><p>Note that this example repo is in dire need of a <a href="git-rebase-update.html">git-rebase-update(1)</a>!</p></div>
|
| -<div class="listingblock">
|
| -<div class="content">
|
| -<pre><code><strong><span class="white">$ git map-branches</span></strong>
|
| -<span class="red">origin/master</span>
|
| - <span class="green">cool_feature</span>
|
| - <span class="green">subfeature</span>
|
| - <span class="aqua">frozen_changes *</span>
|
| - <span class="green">master</span></code></pre>
|
| -</div></div>
|
| -<div class="dlist"><dl>
|
| -<dt class="hdlist1">
|
| -<a href="git-map.html">git-map(1)</a>
|
| -</dt>
|
| -<dd>
|
| -<p>
|
| - This tool shows you the history of all of your branches in a pseudo-graphical
|
| - format. In particular, it will show you which commits all of your branches
|
| - are on, which commit you currently have checked out, and more. Check out the
|
| - doc for the full details.
|
| -</p>
|
| -</dd>
|
| -<dt class="hdlist1">
|
| -<a href="git-map-branches.html">git-map-branches(1)</a>
|
| -</dt>
|
| -<dd>
|
| -<p>
|
| - This tool just shows you which branches you have in your repo, and thier
|
| - upstream relationship to each other (as well as which branch you have checked
|
| - out at the moment).
|
| -</p>
|
| -</dd>
|
| -</dl></div>
|
| -<div class="paragraph"><p>Additionally, sometimes you need to switch between branches, but you’ve got work
|
| -in progress. You could use <a href="git-stash.html">git-stash(1)</a>, but that can be tricky to
|
| -manage because you need to remember which branches you stashed what changes on.
|
| -Helpfully <em>depot_tools</em> includes two tools which can greatly assist in case:</p></div>
|
| -<div class="paragraph"><p><a href="git-freeze.html">git-freeze(1)</a> allows you to put the current branch in 'suspended
|
| -animation' by committing your changes to a specially-named commit on the top of
|
| -your current branch. When you come back to your branch later, you can just run
|
| -<a href="git-thaw.html">git-thaw(1)</a> to get your work-in-progress changes back to what they were.</p></div>
|
| -<div class="paragraph"><p>Another useful tool is <a href="git-rename-branch.html">git-rename-branch(1)</a>. Unlike <code>git branch -m <old>
|
| -<new></code>, this tool will correctly preserve the upstream relationships of your
|
| -branch compared to its downstreams.</p></div>
|
| -<div class="paragraph"><p>Finally, take a look at <a href="git-upstream-diff.html">git-upstream-diff(1)</a>. This will show you the
|
| -combined diff for all the commits on your branch against the upstream tracking
|
| -branch. This is <em>exactly</em> what <code>git cl upload</code> will push up to code review.
|
| -Additionally, consider trying the <code>--wordwise</code> argument to get a colorized
|
| -per-word diff (instead of a per-line diff).</p></div>
|
| -</div>
|
| -</div>
|
| -<div class="sect1">
|
| -<h2 id="_managing_dependent_cls">MANAGING DEPENDENT CLS</h2>
|
| -<div class="sectionbody">
|
| -<div class="paragraph"><p>Now that you know how to manage <em>independent</em> CLs, we’ll see how to manage
|
| -<em>dependent</em> CLs. Dependent CLs are useful when your second (or third or fourth
|
| -or …) CL depends on the changes in one of your other CLs (such as: CL 2 won’t
|
| -compile without CL 1, but you want to submit them as two separate reviews).</p></div>
|
| -<div class="paragraph"><p>Like all of the other CLs we’ve created, we use <a href="git-new-branch.html">git-new-branch(1)</a>, but
|
| -this time with an extra argument. First, <code>git checkout</code> the branch
|
| -you want to base the new one on (i.e. CL 1), and then run:</p></div>
|
| -<div class="listingblock">
|
| -<div class="content">
|
| -<pre><code><strong><span class="white">$ git new-branch --upstream_current <branch_name></span></strong></code></pre>
|
| -</div></div>
|
| -<div class="paragraph"><p>This will make a new branch which tracks the <em>current</em> branch as its upstream
|
| -(as opposed to <em>origin/master</em>). All changes you commit to this branch will be
|
| -in addition to the previous branch, but when you <code>git cl upload</code>, you will only
|
| -upload the diff for the dependent (child) branch. You may have as many branches
|
| -nested in this fashion as you like.</p></div>
|
| -<div class="paragraph"><p><a href="git-map.html">git-map(1)</a> and <a href="git-map-branches.html">git-map-branches(1)</a> are particularly helpful when
|
| -you have dependent branches. In addition, there are two helper commands which
|
| -let you traverse your working copy up and down this tree of branches:
|
| -<a href="git-nav-upstream.html">git-nav-upstream(1)</a> and <a href="git-nav-downstream.html">git-nav-downstream(1)</a>.</p></div>
|
| -<div class="paragraph"><p>Sometimes when dealing with dependent CLs, it turns out that you accidentally
|
| -based a branch on the wrong upstream, but since then you’ve committed changes to
|
| -it, or even based <em>another</em> branch off of that one. Or you discover that you
|
| -have two independent CLs that would actually be much better off as dependent
|
| -CLs. In instances like these, you can check out the offending branch and use
|
| -<a href="git-reparent-branch.html">git-reparent-branch(1)</a> to move it to track a different parent. Note that
|
| -this can also be used to move a branch from tracking <code>origin/master</code> to <code>lkgr</code>
|
| -or vice versa.</p></div>
|
| -</div>
|
| -</div>
|
| -<div class="sect1">
|
| <h2 id="_conclusion">CONCLUSION</h2>
|
| <div class="sectionbody">
|
| <div class="paragraph"><p>Hopefully that gives you a good starting overview on Chromium development using
|
| @@ -1564,7 +1587,7 @@ from <a href="https://chromium.googlesource.com/chromium/tools/depot_tools.git">
|
| <div id="footnotes"><hr /></div>
|
| <div id="footer">
|
| <div id="footer-text">
|
| -Last updated 2014-04-10 21:30:33 PDT
|
| +Last updated 2014-04-14 16:26:14 PDT
|
| </div>
|
| </div>
|
| </body>
|
|
|