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/git_upstream_diff.py b/git_upstream_diff.py
new file mode 100755
index 0000000..c7fe1f3
--- /dev/null
+++ b/git_upstream_diff.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import argparse
+import sys
+
+import subprocess2
+
+from git_common import current_branch, get_or_create_merge_base, config_list
+from git_common import GIT_EXE
+
+def main(args):
+ default_args = config_list('depot-tools.upstream-diff.default-args')
+ args = default_args + args
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--wordwise', action='store_true', default=False,
+ help=(
+ 'Print a colorized wordwise diff '
+ 'instead of line-wise diff'))
+ opts, extra_args = parser.parse_known_args(args)
+
+ cmd = [GIT_EXE, 'diff', '--patience', '-C', '-C']
+ if opts.wordwise:
+ cmd += ['--word-diff=color', r'--word-diff-regex=(\w+|[^[:space:]])']
+ cmd += [get_or_create_merge_base(current_branch())]
+
+ cmd += extra_args
+
+ subprocess2.check_call(cmd)
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))