HEADS-UP: new Git hook linters for whitespace & commit msgs
Simon Peyton Jones
simonpj at microsoft.com
Mon Mar 9 13:11:01 UTC 2015
Great. Are these invariants documented on the GHC developers wiki?
This email will soon be lost, but the wiki lives.
Thanks
Simon
| -----Original Message-----
| From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Herbert
| Valerio Riedel
| Sent: 09 March 2015 08:05
| To: ghc-devs
| Subject: HEADS-UP: new Git hook linters for whitespace & commit msgs
|
| Hello GHC devs,
|
| I finally got to finish reworked Git hook validations[1] which are
| active effective immediately for the ghc.git repo:
|
| - A new whitespace linter that enforces 3 separate in variants for files
| with the suffixes
|
| .hs .hsc .lhs .cabal .c .h .lhs-boot .hs-boot .x .y
|
| the 3 invariants (i.e. if the particular invariant held before the
| commit, it ought to hold afterwards as well):
|
| 1. no TABs
| 2. no trailing whitespaces (NEW)
| 3. no missing final EOL (NEW)
|
|
| - A new commit msg linter
|
| The rationale is explained in
| http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
| TLDR: The structural conventions enforced by the new linter avoid
| messing up the output of Git tooling; Editors with support for
| commit-msg syntax-coloring like Vim or Emacs also follow these
| conventions.
|
| This linter has soft (-> warnings) and hard limits (->
| error/rejection)
|
| The most important hard limits are:
|
| - subject line (i.e. 1st line) 80-char max length (& 8-chars min len)
| - 2nd line must be empty (if it exists)
| - body lines (i.e. 3rd+ lines) 100-char max length
|
| For more details about additional checks see actual code in [1]; the
| linter tries to give verbose error/warning messages and pointing
| exactly to the offending lines.
|
|
| Comments/suggestions/debate/pull-requests/etc welcome!
|
|
| PS: the new validators can easily be tested locally on a Git tree
| (although I've only tested this on Linux):
|
| usage: validate-whitespace <git-dir> [<commit-id>+]
|
| and you can pass symbolic refs such as 'HEAD' for the <commit-id>,
| e.g.
|
| validate-whitespace ~/Work/ghc-tree/.git HEAD
|
|
| Cheers,
| hvr
|
| [1]: https://github.com/haskell-infra/git-haskell-org-
| hooks/tree/master/src
| _______________________________________________
| ghc-devs mailing list
| ghc-devs at haskell.org
| http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
More information about the ghc-devs
mailing list