[ovs-dev] [PATCH] Documentation: Document a useful pre-push hook for committers.

Ben Pfaff blp at ovn.org
Wed Sep 25 20:02:31 UTC 2019


Someone else wrote this script originally, I think, but I've extended
it quite a bit.

Signed-off-by: Ben Pfaff <blp at ovn.org>
---
 .../internals/committer-responsibilities.rst  | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/Documentation/internals/committer-responsibilities.rst b/Documentation/internals/committer-responsibilities.rst
index 4d10c3980875..c35fd708913b 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
-- 
2.21.0



More information about the dev mailing list