summaryrefslogtreecommitdiff
path: root/Documentation/internals
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2019-09-25 13:02:31 -0700
committerBen Pfaff <blp@ovn.org>2019-10-01 10:20:32 -0700
commiteedd4fd7481e6f2bc14c4e9d0afa7ae091dc1398 (patch)
tree3e2979fe3ba9898eaf50ac558df5519df430188d /Documentation/internals
parentbf2431fb0b81e5b4236e855a7d456d477907617b (diff)
downloadopenvswitch-eedd4fd7481e6f2bc14c4e9d0afa7ae091dc1398.tar.gz
Documentation: Document a useful pre-push hook for committers.
Someone else wrote this script originally, I think, but I've extended it quite a bit. Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'Documentation/internals')
-rw-r--r--Documentation/internals/committer-responsibilities.rst50
1 files changed, 50 insertions, 0 deletions
diff --git a/Documentation/internals/committer-responsibilities.rst b/Documentation/internals/committer-responsibilities.rst
index 4d10c3980..c35fd7089 100644
--- a/Documentation/internals/committer-responsibilities.rst
+++ b/Documentation/internals/committer-responsibilities.rst
@@ -94,3 +94,53 @@ Use Reported-by: and Tested-by: tags in commit messages to indicate the
source of a bug report.
Keep the ``AUTHORS.rst`` file up to date.
+
+Pre-Push Hook
+-------------
+
+The following script can be helpful because it provides an extra
+chance to check for mistakes while pushing to the master branch of OVS
+or OVN. If you would like to use it, install it as ``hooks/pre-push``
+in your ``.git`` directory and make sure to mark it as executable with
+``chmod +x``. For maximum utility, make sure ``checkpatch.py`` is in
+``$PATH``:
+
+.. code-block:: bash
+
+ #! /bin/bash
+
+ remote=$1
+
+ case $remote in
+ ovs|ovn|origin) ;;
+ *) exit 0 ;;
+ esac
+
+ while read local_ref local_sha1 remote_ref remote_sha1; do
+ case $remote_ref in
+ refs/heads/master)
+ n=0
+ while read sha
+ do
+ n=$(expr $n + 1)
+ git log -1 $sha
+ echo
+ checkpatch.py -1 $sha
+ done <<EOF
+ $(git --no-pager log --pretty=%H $local_sha1...$remote_sha1)
+ EOF
+
+ b=${remote_ref#refs/heads/}
+ echo "You're about to push $n commits to protected branch $b on $remote."
+
+ read -p "Do you want to proceed? [y|n] " reply < /dev/tty
+ if echo $reply | grep -E '^[Yy]$' > /dev/null; then
+ :
+ else
+ exit 1
+ fi
+ ;;
+ esac
+ done
+
+ exit 0