[neomutt-devel] clang-format pre-commit hook

Julian Andres Klode jak at jak-linux.org
Sun Jun 25 14:20:00 CEST 2017


On Sun, Jun 25, 2017 at 12:57:51PM +0100, Thomas Adam wrote:
> On Sun, Jun 25, 2017 at 11:37:00AM +0200, Julian Andres Klode wrote:
> > result=0
> > for file in `git diff-index --cached --name-only HEAD | grep '\.[ch]$'` ; do
> 
> You shouldn't need to invoke grep, for instance:
> 
>     for file in $(git diff-index --cached --name-only HEAD -- **/*.[ch]); do

That requires ** support, which I know bash supports, but is disabled by
default.

> 
> Plus, any shell which doesn't support $() in favour of backticks shouldn't e
> supported by definition.

$(command) is the primary standard POSIX version, `command` is a historic
alternative that should not be used anymore.

> 
> >   clang-format  ${file} > ${GIT_DIR}/current_file
> >   colordiff --label "$file (to be committed)" --label "$file (reformatted)" -u ${file} ${GIT_DIR}/current_file || result=1
> 
> colordiff?  You can still use git to give you this information.

Thatt was flatcap's idea. You could use some weird git diff invocation
with GIT_DIR manipulation or something.

> 
> Whilst the idea of this might be useful for some, chances are it's likely to
> get caught through other means; I'd hope when peer-review happens.

It might catch some glaring mistakes like { on the wrong line, but usually
does not catch smaller whitespace issues in my experience. And it's pointless
- any commit will likely have at least one issue, so best to automatize this
locally rather than involving a review roundtrip.

-- 
Debian Developer - deb.li/jak | jak-linux.org - free software dev
                  |  Ubuntu Core Developer |
When replying, only quote what is necessary, and write each reply
directly below the part(s) it pertains to ('inline').  Thank you.


More information about the neomutt-devel mailing list