[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

pre-commit hook to check syntax



Hi all,

While working with the tracker, I noticed that:
1) From time to time error mails are generated when invalid commits are done.
2) A syntax checker exists.

This sounds like an ideal use case for a pre-commit SVN hook: the commit is 
checked for syntax, and rejected to the user when the syntax is not right. 
This will prevent errors from being commited in the first place, evading:
- Error mails;
- Extra commits to fix stuff;
- Spurious log entires related to that.

Please see attached the following files I propose to put in svn's hooks dir. 
I've tested it on a test repository and it seems to work just fine. If you 
commit something invalid, you get:

$ svn commit -m test
Sending        data/CVE/list
Transmitting file data .svn: Commit failed (details follow):
svn: MERGE request failed on '/svn/test/data/CVE'
svn: 'pre-commit' hook failed with error output:
Traceback (most recent call last):
  File "bin/check-syntax", line 75, in ?
    file_types[sys.argv[1]](sys.argv[2])
  File "bin/check-syntax", line 55, in parse_CVE
    do_parse(f)
  File "bin/check-syntax", line 28, in do_parse
    for r in f:
  File "/tmp/test/lib/python/bugs.py", line 633, in __iter__
    pkg_notes.append(
  File "/tmp/test/lib/python/bugs.py", line 218, in __init__
    raise SyntaxError , 'unknown package note %s\n' % `n`
SyntaxError: unknown package note 'bug 439226'


pre-commit is the actual hook; check-file is called from that. This is to keep 
things separated when more pre-commit hooks might be added in the future. It 
depends on a checkout of the repository in alioth, for the check-syntax 
python script.

Let me know of any objections or comments.


Thijs

Attachment: check-file
Description: application/shellscript

Attachment: pre-commit
Description: application/shellscript

Attachment: pgpVyyUlbZN_8.pgp
Description: PGP signature


Reply to: