From cd3e2c4a041ca314ab228a5fcc34c39535c43b6e Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 27 Jul 2011 18:44:06 +0200 Subject: git_hooks These local git_hooks are based on git-hooks tool by Ben Meyer. Please, read git_hooks/README about --- git_hooks/README | 8 +++++ git_hooks/pre-commit/codingstyle_check | 61 ++++++++++++++++++++++++++++++++ git_hooks/pre-commit/copyrightyear_check | 48 +++++++++++++++++++++++++ git_hooks/pre-commit/makeobj_check | 46 ++++++++++++++++++++++++ 4 files changed, 163 insertions(+) create mode 100644 git_hooks/README create mode 100755 git_hooks/pre-commit/codingstyle_check create mode 100755 git_hooks/pre-commit/copyrightyear_check create mode 100755 git_hooks/pre-commit/makeobj_check diff --git a/git_hooks/README b/git_hooks/README new file mode 100644 index 00000000..d460b95c --- /dev/null +++ b/git_hooks/README @@ -0,0 +1,8 @@ +These git hooks have been copied and adjusted from Arora code. + +Many thanks to Benjamin "icefox" Meyer for providing them. + +-------------- +They are managed using the git-hooks tool (Available here http://github.com/icefox/git-hooks) + +To enable them run "git hooks --install" diff --git a/git_hooks/pre-commit/codingstyle_check b/git_hooks/pre-commit/codingstyle_check new file mode 100755 index 00000000..dffebed5 --- /dev/null +++ b/git_hooks/pre-commit/codingstyle_check @@ -0,0 +1,61 @@ +#!/bin/bash +# +# Copyright (c) 2010, Benjamin C. Meyer +# Copyright (C) 2011 by Andrea Diamantini +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License or (at your option) version 3 or any later version +# accepted by the membership of KDE e.V. (or its successor approved +# by the membership of KDE e.V.), which shall act as a proxy +# defined in Section 14 of version 3 of the license. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +####################################################################### + +function test_file { + file="${1}" + echo "" + echo "------- Checking style on .cpp files" + tempfoo=`basename $0` + newfile=`mktemp /tmp/${tempfoo}.XXXXXX` || exit 1 + astyle \ + --indent=spaces=4 \ + --style=allman \ + --indent-labels \ + --pad-oper \ + --pad-header \ + --unpad-paren \ + --keep-one-line-statements \ + --convert-tabs \ + --indent-preprocessor < $file > $newfile 2>> /dev/null + diff "${file}" "${newfile}" + r=$? + rm "${newfile}" + if [ $r != 0 ] ; then + echo "Code style error in $file, please fix before commiting." + exit 1 + fi + echo "------- Style check PASSED" + echo "" +} + +case "${1}" in + --about ) + echo "Check that the code follows a consistent code style." + ;; + * ) + for file in `git diff-index --cached --name-only HEAD | grep .cpp` ; do + test_file "${file}" + done + ;; +esac diff --git a/git_hooks/pre-commit/copyrightyear_check b/git_hooks/pre-commit/copyrightyear_check new file mode 100755 index 00000000..535b3c16 --- /dev/null +++ b/git_hooks/pre-commit/copyrightyear_check @@ -0,0 +1,48 @@ +#!/bin/bash +# +# Copyright (c) 2010, Benjamin C. Meyer +# Copyright (C) 2011 by Andrea Diamantini +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License or (at your option) version 3 or any later version +# accepted by the membership of KDE e.V. (or its successor approved +# by the membership of KDE e.V.), which shall act as a proxy +# defined in Section 14 of version 3 of the license. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +####################################################################### + + +function test_file { + year=`date +%Y` + echo "------- checking copyright year: $file" + grep $year $file >> /dev/null + if [ $? -ne 0 ] ; then + echo "------- Warning: $file seems to be missing a copyright string with the year $year in it."; + exit 1 + else + echo "------- checking copyright year: PASS" + echo "" + fi +} + +case "${1}" in + --about ) + echo "Check the files that are being committed for a copyright with a proper year." + ;; + * ) + for file in `git diff-index --cached --name-only HEAD | /bin/grep -F .` ; do + test_file "${file}" + done + ;; +esac diff --git a/git_hooks/pre-commit/makeobj_check b/git_hooks/pre-commit/makeobj_check new file mode 100755 index 00000000..279c3554 --- /dev/null +++ b/git_hooks/pre-commit/makeobj_check @@ -0,0 +1,46 @@ +#!/bin/bash +# +# Copyright (c) 2010, Benjamin C. Meyer +# Copyright (C) 2011 by Andrea Diamantini +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License or (at your option) version 3 or any later version +# accepted by the membership of KDE e.V. (or its successor approved +# by the membership of KDE e.V.), which shall act as a proxy +# defined in Section 14 of version 3 of the license. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +####################################################################### + + +function compile { + unset GIT_DIR + echo "------- Attempting to build in $PWD" + makeobj --quiet + if [ $? != 0 ] ; then + echo "------- Build failed, fix failure before commiting"; + exit 1 + fi + + echo "------- Attempting to build PASS" + echo "" +} + +case "${1}" in + --about ) + echo "Wherever you are make sure something compiles". + ;; + * ) + compile + ;; +esac -- cgit v1.2.1