From: David Bremner <brem...@debian.org> This script is a thin wrapper around git rebase --interactive, that allows the user to fine tune patches if they break the test suite, or violate the coding style guidelines.
The user can always run "git rebase --continue" to ignore false positives. I decided to use perl because inplace editing with sed is non-portable. --- I have caught several formatting violations and at least one real bug using this as "last step before sending to the list". No doubt the more talented shell-scripters / perl-hackers in the crowd can can suggest some improvements. devel/check-commit | 10 ++++++++++ devel/check-series | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 devel/check-commit create mode 100755 devel/check-series diff --git a/devel/check-commit b/devel/check-commit new file mode 100755 index 0000000..86648b8 --- /dev/null +++ b/devel/check-commit @@ -0,0 +1,10 @@ +# This script is mainly intended to be used by the check-series script +# but you are welcome to use it as a standalone tool. It takes no +# parameters and operates on the latest git commit (HEAD). + +set -e +make test +for file in $(git diff --name-only HEAD^ | grep '[.]\(c\|h\|cc\|hh\)'); do + uncrustify --replace -c devel/uncrustify.cfg $file +done +git diff --quiet diff --git a/devel/check-series b/devel/check-series new file mode 100755 index 0000000..d48e70f --- /dev/null +++ b/devel/check-series @@ -0,0 +1,33 @@ +#/bin/sh + +# Usage: check-series [upstream-commit] + +# Checks each commit in a patch series (topic branch) by running the +# script devel/check-commit. If check-commit fails (exits with +# non-zero status), the user is left in the middle of a git rebase, and +# can fix the commit, e.g. using git commit --amend, followed by +# "git rebase --continue". If all else fails, "git rebase --abort" should +# get you back to where you started. +# +# NOTE: this runs "make test" many times, so it can take a while. +# + +trap cleanup EXIT + +cleanup () { + if [ -n "$tmpdir" ]; then + rm -rf $tmpdir + fi +} + +upstream=master +if [ -n "$1" ]; then + upstream="$1" +fi + +# make sure we always run the most recent version of check-commit +# in particular cope with it going away. +tmpdir=$(mktemp -d) +cp devel/check-commit $tmpdir + +GIT_SEQUENCE_EDITOR="perl -pi -e 's,^\s*([^#\s].*)$,\1\nexec $tmpdir/check-commit,'" git rebase -i $upstream -- 1.7.10.4