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

Unified Diff: git-cl-upload-hook

Issue 256075: Add git-cl upload hooks.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: '' Created 11 years, 2 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-upload-hook
===================================================================
--- git-cl-upload-hook (revision 0)
+++ git-cl-upload-hook (revision 0)
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+# Copyright (c) 2009 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 os
+import re
+import subprocess
+import sys
+
+# Find depot_tools in PATH, append it to sys.path so we can import.
+paths = os.environ.get("PATH")
+for path in paths.split(':'):
+ if not path.endswith("depot_tools"):
+ continue
+ sys.path.append(path)
+ break
+
+import gclient_scm
+import presubmit_support
+
+def Backquote(cmd, cwd=None):
+ """Like running `cmd` in a shell script."""
+ return subprocess.Popen(cmd,
+ cwd=cwd,
+ stdout=subprocess.PIPE).communicate()[0].strip()
+
+
+class ChangeOptions:
+ def __init__(self, commit=None, upstream_branch=None):
+ self.commit = commit
+ self.verbose = None
+ self.default_presubmit = None
+ self.may_prompt = None
+
+ root = os.path.abspath(Backquote(['git', 'rev-parse', '--show-cdup']))
+ if not root:
+ raise Exception("Could not get root directory.")
+ log = Backquote(['git', 'show', '--name-only',
+ '--pretty=format:%H%n%s%n%n%b'])
+ m = re.match(r'^(\w+)\n(.*)$', log, re.MULTILINE|re.DOTALL)
+ if not m:
+ raise Exception("Could not parse log message: %s" % log)
+ name = m.group(1)
+ description = m.group(2)
+ files = gclient_scm.CaptureGitStatus([root], upstream_branch)
+ issue = Backquote(['git', 'cl', 'status', '--field=id'])
+ patchset = None
+ self.change = presubmit_support.GitChange(name, description, root, files,
+ issue, patchset)
+
+
+# Ensure we were called with the necessary number of arguments.
+program_name = os.path.basename(sys.argv[0])
+if len(sys.argv) < 2:
+ raise Exception("usage: %s [upstream branch]" % program_name)
+
+# Get arguments from how we were called.
+commit = (program_name == 'pre-cl-dcommit')
+upstream_branch = sys.argv[1]
+
+# Create our options based on the command-line args and the current checkout.
+options = ChangeOptions(commit=commit, upstream_branch=upstream_branch)
+
+# Run the presubmit checks.
+if presubmit_support.DoPresubmitChecks(options.change,
+ options.commit,
+ options.verbose,
+ sys.stdout,
+ sys.stdin,
+ options.default_presubmit,
+ options.may_prompt):
+ sys.exit(0)
+else:
+ sys.exit(1)
Property changes on: git-cl-upload-hook
___________________________________________________________________
Added: svn:executable
+ *
« 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