##// END OF EJS Templates
convert: improve support for unusual .gitmodules...
convert: improve support for unusual .gitmodules Previously convert would throw an exception if it encountered a git commit with a .gitmodules file that was malformed (i.e. was missing, but had submodule files, or was malformed). Instead of breaking the convert entirely, let's print error messages and move on.

File last commit:

r25643:6f6c97d2 default
r25699:5c97a4ec 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)