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

Unified Diff: PRESUBMIT.py

Issue 9432013: Add presubmit checks and watchlist for FFmpeg repo. (Closed) Base URL: ssh://gerrit.chromium.org:29418/chromium/third_party/ffmpeg.git@master
Patch Set: Watchlist. Created 8 years, 10 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 | codereview.settings » ('j') | codereview.settings » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: PRESUBMIT.py
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
new file mode 100644
index 0000000000000000000000000000000000000000..8174d96bd9ce902d29727bafaff249ae4231cbc8
--- /dev/null
+++ b/PRESUBMIT.py
@@ -0,0 +1,79 @@
+# Copyright (c) 2012 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.
+
+"""Presubmit script for FFmpeg repository.
+
+Does the following:
+- Displays a message indicating that all changes must be pushed to SVN.
+- Prevents changes inside the git-svn and svn repositories.
+- Warns users when a change is made without updating the README file.
+"""
+
+import re
+import subprocess
+
+
+# Setup some basic ANSI colors.
+BOLD_RED = '\033[1;31m'
+BOLD_BLUE = '\033[1;34m'
+
+
+def Color(color, string):
+ return ''.join([color, string, '\033[m'])
+
+
+def _CheckForMainRepository(input_api, output_api):
+ """Ensure no commits are allowed to the Subversion repository."""
+ try:
+ stdout = subprocess.Popen('git config --get remote.origin.url', shell=True,
+ cwd=input_api.PresubmitLocalPath(),
+ stdout=subprocess.PIPE).communicate()[0]
+ if 'chromium/third_party/ffmpeg.git' in stdout:
+ return []
+ except Exception, e:
+ # Not everyone has a working Git configuration, so print the exception text
+ # and move on.
+ print e
+
+ return [output_api.PresubmitError('\n'.join([
+ 'Commits to the FFmpeg repository must be made through Git. The easiest',
Ami GONE FROM CHROMIUM 2012/02/22 01:22:00 Get scherkus@' approval of this; his workflow is b
DaleCurtis 2012/02/22 20:15:13 +scherkus.
+ 'way to do this is to switch to using NewGit:\n',
+ ' http://code.google.com/p/chromium/wiki/UsingNewGit\n',
+ 'Alternatively, you can clone the repository directly using:\n',
+ ' git clone http://git.chromium.org/chromium/third_party/ffmpeg.git']))]
+
+
+def _WarnAboutManualSteps():
+ """Warn about the manual steps required for rolling the FFmpeg repository."""
+ print Color(BOLD_RED, '[ WARNING ]'.center(70, '*'))
Ami GONE FROM CHROMIUM 2012/02/22 01:22:00 Snazzy!
Ami GONE FROM CHROMIUM 2012/02/22 01:22:00 I don't like scripts that always WARN; it has a de
DaleCurtis 2012/02/22 20:15:13 Done.
+ print Color(
+ BOLD_BLUE, '\n'.join([
+ 'Updates to FFmpeg require the following additional manual steps:',
+ ' - Rebuild and commit of Chrome and Chromium Windows DLLs.',
+ ' - Push of new sources from Git to Subversion. See sync_svn.py.',
+ ' - Internal and external DEPS roll.',
+ ' - If new source files were added, generate_gyp.py must be run.\n',
+ 'Please see README.chromium or contact videostack-eng for help.']))
Ami GONE FROM CHROMIUM 2012/02/22 01:22:00 videostack-eng is a google-internal list, but this
DaleCurtis 2012/02/22 20:15:13 Done.
+ print Color(BOLD_RED, 70 * '*')
+
+
+def _WarnIfReadmeIsUnchanged(input_api, output_api):
+ """Warn if the README file hasn't been updated with change notes."""
+ readme_re = re.compile(r'.*[/\\]chromium[/\\]patches[/\\]README$')
+ for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
+ if readme_re.match(f.LocalPath()):
+ return []
+
+ return [output_api.PresubmitPromptWarning('\n'.join([
Ami GONE FROM CHROMIUM 2012/02/22 01:22:00 Fine as long as this doesn't block CQ submission.
DaleCurtis 2012/02/22 20:15:13 These are OnUpload checks, so as far as I understa
+ 'FFmpeg changes detected without any update to chromium/patches/README,',
+ 'it\'s good practice to update this file with a note about your changes.'
+ ]))]
+
+
+def CheckChangeOnUpload(input_api, output_api):
+ _WarnAboutManualSteps()
+ results = []
+ results.extend(_CheckForMainRepository(input_api, output_api))
+ results.extend(_WarnIfReadmeIsUnchanged(input_api, output_api))
+ return results
« no previous file with comments | « no previous file | codereview.settings » ('j') | codereview.settings » ('J')

Powered by Google App Engine
This is Rietveld 408576698