Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: git_cl.py

Issue 24276008: Add 'git cl diff' command. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git_cl.py
diff --git a/git_cl.py b/git_cl.py
index 289640a77cc0b1962faf9dc8c50abaabe8bd4f35..1062a7a0fa440ab01ab2ba157c5601d2beecdc57 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -1861,7 +1861,18 @@ def CMDpatch(parser, args):
# TODO(maruel): Use apply_issue.py
# TODO(ukai): use gerrit-cherry-pick for gerrit repository?
- if issue_arg.isdigit():
+ if options.newbranch:
+ if options.force:
+ RunGit(['branch', '-D', options.newbranch],
+ stderr=subprocess2.PIPE, error_ok=True)
+ RunGit(['checkout', '-b', options.newbranch,
+ Changelist().GetUpstreamBranch()])
+
+ return PatchIssue(issue_arg, options.reject, options.nocommit)
+
+
+def PatchIssue(issue_arg, reject, nocommit):
+ if type(issue_arg) is int or issue_arg.isdigit():
# Input is an issue id. Figure out the URL.
issue = int(issue_arg)
cl = Changelist(issue=issue)
@@ -1878,13 +1889,6 @@ def CMDpatch(parser, args):
patchset = int(match.group(2))
patch_data = urllib2.urlopen(issue_arg).read()
- if options.newbranch:
- if options.force:
- RunGit(['branch', '-D', options.newbranch],
- stderr=subprocess2.PIPE, error_ok=True)
- RunGit(['checkout', '-b', options.newbranch,
- Changelist().GetUpstreamBranch()])
-
# Switch up to the top-level directory, if necessary, in preparation for
# applying the patch.
top = RunGit(['rev-parse', '--show-cdup']).strip()
@@ -1909,7 +1913,7 @@ def CMDpatch(parser, args):
# pick up file adds.
# The --index flag means: also insert into the index (so we catch adds).
cmd = ['git', 'apply', '--index', '-p0']
- if options.reject:
+ if reject:
cmd.append('--reject')
elif IsGitVersionAtLeast('1.7.12'):
cmd.append('--3way')
@@ -1920,7 +1924,7 @@ def CMDpatch(parser, args):
DieWithError('Failed to apply the patch')
# If we had an issue, commit the current state and register the issue.
- if not options.nocommit:
+ if not nocommit:
RunGit(['commit', '-m', 'patch from issue %s' % issue])
cl = Changelist()
cl.SetIssue(issue)
@@ -2128,6 +2132,31 @@ def CMDset_close(parser, args):
return 0
+def CMDdiff(parser, args):
+ """shows differences between local tree and last upload."""
+ cl = Changelist()
+ branch = cl.GetBranch()
+ TMP_BRANCH = 'git-cl-diff'
+ base_branch = RunGit(['merge-base', cl.GetUpstreamBranch(), 'HEAD']).strip()
+
+ # Create a new branch based on the merge-base
+ RunGit(['checkout', '-q', '-b', TMP_BRANCH, base_branch])
+ try:
+ # Patch in the latest changes from rietveld.
+ rtn = PatchIssue(cl.GetIssue(), False, False)
+ if rtn != 0:
+ return rtn
+
+ # Switch back to starting brand and diff against the temporary
+ # branch containing the latest rietveld patch.
+ subprocess2.check_call(['git', 'diff', TMP_BRANCH, branch])
+ finally:
+ RunGit(['checkout', '-q', branch])
+ RunGit(['branch', '-D', TMP_BRANCH])
+
+ return 0
+
+
def CMDowners(parser, args):
"""interactively find the owners for reviewing"""
parser.add_option(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698