Git хук форматирующий код перед коммитом.

Форматирование производиться средствами Astyle
#!/bin/perl
use File::Copy qw(copy);

open(GIT_STATUS,"git status -s |") || die "failed: $!\n";
while ( <GIT_STATUS> ){
    if (m/^(A|M)\s+(\S+\.(h|cpp|c|cxx|hpp))$/){
        print "styling $2\n";
        my $ret = system("astyle", $2, "$2.styling");
        if( $ret != 0) {
            print "styling failed\n";
            unlink "$2.styling";
            exit(1);
        } else {
            copy("$2.styling",$2);
            unlink "$2.styling";
        }
    }
}