##// END OF EJS Templates
check-code: detect legacy exception syntax...
check-code: detect legacy exception syntax We just rewrote all files to use modern exception syntax. Ban the old form. This will detect the "except type, instance" and "except (type1, type2), instance" forms.

File last commit:

r25643:6f6c97d2 default
r25661:20de1ace default
Show More
check-commit
57 lines | 1.7 KiB | text/plain | TextLexer
Matt Mackall
contrib: add check-commit hook script to sanity-check commits
r22043 #!/usr/bin/env python
#
# Copyright 2014 Matt Mackall <mpm@selenic.com>
#
# A tool/hook to run basic sanity checks on commits/patches for
# submission to Mercurial. Install by adding the following to your
# .hg/hgrc:
#
# [hooks]
# pretxncommit = contrib/check-commit
#
# The hook can be temporarily bypassed with:
#
# $ BYPASS= hg commit
#
# See also: http://mercurial.selenic.com/wiki/ContributingChanges
import re, sys, os
errors = [
(r"[(]bc[)]", "(BC) needs to be uppercase"),
(r"[(]issue \d\d\d", "no space allowed between issue and number"),
Pierre-Yves David
check-commit: be more picky about detection of wrong bug tag...
r24703 (r"[(]bug(\d|\s)", "use (issueDDDD) instead of bug"),
Matt Mackall
contrib: add check-commit hook script to sanity-check commits
r22043 (r"^# User [^@\n]+$", "username is not an email address"),
(r"^# .*\n(?!merge with )[^#]\S+[^:] ",
"summary line doesn't start with 'topic: '"),
(r"^# .*\n[A-Z][a-z]\S+", "don't capitalize summary lines"),
Eric Sumner
check-commit: check capitalization in summary lines...
r24049 (r"^# .*\n[^\n]*: *[A-Z][a-z]\S+", "don't capitalize summary lines"),
Matt Mackall
contrib: add check-commit hook script to sanity-check commits
r22043 (r"^# .*\n.*\.\s+$", "don't add trailing period on summary line"),
Augie Fackler
check-commit: print limit when user has a too-long summary
r25137 (r"^# .*\n.{78,}", "summary line too long (limit is 78)"),
Matt Mackall
check-commit: spot growing whitespace...
r22058 (r"^\+\n \n", "adds double empty line"),
Yuya Nishihara
check-commit: catch both patterns of double empty lines
r25643 (r"^ \n\+\n", "adds double empty line"),
Gregory Szorc
check-commit: make foo_bar naming regexp less greedy...
r25379 (r"^\+[ \t]+def [a-z]+_[a-z]", "adds a function with foo_bar naming"),
Matt Mackall
contrib: add check-commit hook script to sanity-check commits
r22043 ]
node = os.environ.get("HG_NODE")
if node:
commit = os.popen("hg export %s" % node).read()
else:
commit = sys.stdin.read()
exitcode = 0
for exp, msg in errors:
m = re.search(exp, commit, re.MULTILINE)
if m:
pos = 0
for n, l in enumerate(commit.splitlines(True)):
pos += len(l)
if pos >= m.end():
print "%d: %s" % (n, msg)
print " %s" % l[:-1]
if "BYPASS" not in os.environ:
exitcode = 1
break
sys.exit(exitcode)