From 0adde5bbb53bfb2aadcb566c514efd3e218bf0bc Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Wed, 24 Jul 2013 12:55:54 -0700 Subject: Clang: Add presubmit script and OWNERS file to match our LLVM repo Several people have been bitten recently by the strange git cl behavior that silently fails to push changes if the local branch does not have the correct upstream branch, so copy our llvm presubmit script that checks for this. Also create an OWNERS file, because adding a presubmit script also causes git cl to do an OWNERS check which fails if no OWNERS file is present R=jvoung@chromium.org BUG=none Review URL: https://codereview.chromium.org/20051011 --- OWNERS | 7 +++++++ PRESUBMIT.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 OWNERS create mode 100644 PRESUBMIT.py diff --git a/OWNERS b/OWNERS new file mode 100644 index 0000000000..8c726f55fa --- /dev/null +++ b/OWNERS @@ -0,0 +1,7 @@ +dschuff@chromium.org +eliben@chromium.org +jfb@chromium.org +jvoung@chromium.org +mseaborn@chromium.org +sehr@chromium.org + diff --git a/PRESUBMIT.py b/PRESUBMIT.py new file mode 100644 index 0000000000..d81168ea09 --- /dev/null +++ b/PRESUBMIT.py @@ -0,0 +1,66 @@ +# Copyright (c) 2012 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Documentation on PRESUBMIT.py can be found at: +# http://www.chromium.org/developers/how-tos/depottools/presubmit-scripts + +EXCLUDE_PROJECT_CHECKS_DIRS = [ '.' ] + +import subprocess +def CheckGitBranch(): + p = subprocess.Popen("git branch -vv", shell=True, + stdout=subprocess.PIPE) + output, _ = p.communicate() + + lines = output.split('\n') + for line in lines: + # output format for checked-out branch should be + # * branchname hash [TrackedBranchName ... + toks = line.split() + if '*' not in toks[0]: + continue + if not 'origin/master' in toks[3]: + warning = 'Warning: your current branch:\n' + line + warning += '\nis not tracking origin/master. git cl push may silently ' + warning += 'fail to push your change. To fix this, do\n' + warning += 'git branch -u origin/master' + return warning + return None + print 'Warning: presubmit check could not determine local git branch' + return None + +def _CommonChecks(input_api, output_api): + """Checks for both upload and commit.""" + results = [] + results.extend(input_api.canned_checks.PanProjectChecks( + input_api, output_api, project_name='Native Client', + excluded_paths=tuple(EXCLUDE_PROJECT_CHECKS_DIRS))) + branch_warning = CheckGitBranch() + if branch_warning: + results.append(output_api.PresubmitPromptWarning(branch_warning)) + return results + +def CheckChangeOnUpload(input_api, output_api): + """Verifies all changes in all files. + Args: + input_api: the limited set of input modules allowed in presubmit. + output_api: the limited set of output modules allowed in presubmit. + """ + report = [] + report.extend(_CommonChecks(input_api, output_api)) + return report + +def CheckChangeOnCommit(input_api, output_api): + """Verifies all changes in all files and verifies that the + tree is open and can accept a commit. + Args: + input_api: the limited set of input modules allowed in presubmit. + output_api: the limited set of output modules allowed in presubmit. + """ + report = [] + report.extend(CheckChangeOnUpload(input_api, output_api)) + return report + +def GetPreferredTrySlaves(project, change): + return [] -- cgit v1.2.3-18-g5258