Add a family of git-commands to assist with the management of multiple CLs/branches.

git-rebase-update - ensure all branches are up to date
git-new-branch - create branches
git-rename-branch - rename a branch while preserving parentage relationships
git-reparent-branch - change the parent of a branch, including rebasing it correctly onto that new parent.
git-squash-branch - collapse a branch into a single commit
git-upstream-diff - show the diff between the current branch and it's upstream branch
git-mark-merge-base - explicitly set what you want the above tools to consider the merge-base for the current branch.

R=agable@chromium.org, hinoka@chromium.org, stip@chromium.org, szager@chromium.org
BUG=261738

Review URL: https://codereview.chromium.org/184253003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@259520 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/docs/man1/git-upstream-diff.1 b/docs/man1/git-upstream-diff.1
new file mode 100644
index 0000000..ae47917
--- /dev/null
+++ b/docs/man1/git-upstream-diff.1
@@ -0,0 +1,119 @@
+'\" t
+.\"     Title: git-upstream-diff
+.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\"      Date: 03/25/2014
+.\"    Manual: Chromium depot_tools Manual
+.\"    Source: depot_tools 207bff1
+.\"  Language: English
+.\"
+.TH "GIT\-UPSTREAM\-DIFF" "1" "03/25/2014" "depot_tools 207bff1" "Chromium depot_tools Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+git-upstream-diff \- Print a diff of the current branch, compared to its upstream\&.
+.SH "SYNOPSIS"
+.sp
+.nf
+\fIgit upstream\-diff\fR [\-\-wordwise] [<extra args for git\-diff>*]
+.fi
+.sp
+.SH "DESCRIPTION"
+.sp
+Shows a diff beween your current branch and it\(cqs upstream\&. This is \fIroughly\fR the same as:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+git diff \-\-patience \-C \-C HEAD@{upstream}  \fB(1)\fR \fB(2)\fR
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+.sp
+\fB1. \fR\-C \-C
+detects file copies/renames
+.br
+\fB2. \fR\-\-patience
+uses the patience\-diff algorithm, which tends to produce nicer diffs in many cases\&.
+.br
+.sp
+The difference is that HEAD@{upstream} is actually the tagged merge base of your branch (See \fBgit-rebase-update\fR(1))\&. This means that if your upstream branch was rebased, but you haven\(cqt yet rebased the current branch on top of it, you\(cqll still see an accurate diff compared to just diffing against @{upstream}\&.
+.sp
+The \-\-wordwise option also allows git\-diff to do word\-by\-word comparison in a semi\-intelligent way\&. However, sometimes it can produce surprising results, so it is disabled by default\&.
+.SH "OPTIONS"
+.PP
+\-\-wordwise
+.RS 4
+Print a colorized word\-wise diff instead of a line\-wise diff\&.
+.RE
+.PP
+<extra args for git\-diff>
+.RS 4
+Extra arguments are included in the invocation of
+\fBgit-diff\fR(1)\&. These can be anything that
+git\-diff
+normally takes\&.
+.PP
+\-\-stat
+.RS 4
+This is particularly useful to show
+\fIwhich\fR
+files have been changed in comparison to the upstream branch\&.
+.RE
+.PP
+\-\- <filename patterns>*
+.RS 4
+Restrict the diff to only show the diff for given files compared to the upstream\&.
+.RE
+.RE
+.SH "CONFIGURATION VARIABLES"
+.SS "depot\-tools\&.upstream\-diff\&.default\-args"
+.sp
+A list\-configuration variable\&. Each instance of this config variable will be prepended to all invocations of git upstream\-diff, as if you had passed them on the command line\&.
+.SH "SUGGESTED ALIASES"
+.sp
+Some common short\-hand aliases\&. Feel free to add these to your \fI~/\&.gitconfig\fR file\&.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+[alias]
+  git udiff = upstream\-diff
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+.SH "SEE ALSO"
+.sp
+\fBgit-rebase-update\fR(1)
+.SH "CHROMIUM DEPOT_TOOLS"
+.sp
+Part of the chromium \fBdepot_tools\fR(1) suite\&. These tools are meant to assist with the development of chromium and related projects\&. Download the tools from \m[blue]\fBhere\fR\m[]\&\s-2\u[1]\d\s+2\&.
+.SH "NOTES"
+.IP " 1." 4
+here
+.RS 4
+\%https://chromium.googlesource.com/chromium/tools/depot_tools.git
+.RE