[libcamera-devel] [PATCH] utils: hooks: Add pre-push commit hook
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Thu Mar 26 14:29:25 CET 2020
Hi Kieran,
On Thu, Mar 26, 2020 at 12:13:10PM +0000, Kieran Bingham wrote:
> On 26/03/2020 11:49, Laurent Pinchart wrote:
> > Add a pre-push commit hooks to prevent unintentional push of patches
> > containing local changelogs to the master branch.
>
> Thanks this sounds like a useful check/addition.
>
> Unfortunately due to lacking a .sh extension, checkstyle.py did not run
> shell-check on this for you ...
Oops :-/ I could add a .sh extension, but that would be a bit less
user-friendly.
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> > utils/hooks/pre-push | 59 ++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 59 insertions(+)
> > create mode 100755 utils/hooks/pre-push
> >
> > diff --git a/utils/hooks/pre-push b/utils/hooks/pre-push
> > new file mode 100755
> > index 000000000000..dc054b2553ff
> > --- /dev/null
> > +++ b/utils/hooks/pre-push
> > @@ -0,0 +1,59 @@
> > +#!/bin/sh
> > +
> > +# A hook script to verify what is about to be pushed. Called by "git
> > +# push" after it has checked the remote status, but before anything has been
> > +# pushed. If this script exits with a non-zero status nothing will be pushed.
> > +#
> > +# This hook is called with the following parameters:
> > +#
> > +# $1 -- Name of the remote to which the push is being done
> > +# $2 -- URL to which the push is being done
> > +#
> > +# If pushing without using a named remote those arguments will be equal.
> > +#
> > +# Information about the commits which are being pushed is supplied as lines to
> > +# the standard input in the form:
> > +#
> > +# <local ref> <local sha1> <remote ref> <remote sha1>
> > +#
> > +# This script prevents push of commits than contain a local changelog to the
> > +# master branch.
> > +
> > +remote="$1"
> > +url="$2"
>
> In ./utils/hooks/pre-push line 22:
> remote="$1"
> ^-- SC2034: remote appears unused. Verify use (or export if used
> externally).
>
> In ./utils/hooks/pre-push line 23:
> url="$2"
> ^-- SC2034: url appears unused. Verify use (or export if used externally).
>
>
> But these are indeed 'unused' - but probably not needed, though useful
> reference.
>
> > +
> > +z40=0000000000000000000000000000000000000000
> > +
> > +while read local_ref local_sha remote_ref remote_sha
>
>
> In ./utils/hooks/pre-push line 27:
> while read local_ref local_sha remote_ref remote_sha
> ^-- SC2162: read without -r will mangle backslashes.
All these come straight from the example pre-push hook from git. I'll
still fix them, but if we depart from the original, I'll take that as an
opportunity to remove more unneeded code.
> > +do
> > + if [ "$remote_ref" != refs/heads/master ]
> > + then
> > + continue
> > + fi
> > +
> > + if [ "$local_sha" = $z40 ]
> > + then
> > + # Handle delete
> > + :
> > + else
> > + if [ "$remote_sha" = $z40 ]
> > + then
> > + # New branch, examine all commits
> > + range="$local_sha"
> > + else
> > + # Update to existing branch, examine new commits
> > + range="$remote_sha..$local_sha"
> > + fi
> > +
> > + # Check for WIP commit
> > + commit=`git rev-list -n 1 --grep '^---' "$range"`
>
> In ./utils/hooks/pre-push line 49:
> commit=`git rev-list -n 1 --grep '^---' "$range"`
> ^-- SC2006: Use $(..) instead of legacy `..`.
>
> > + if [ -n "$commit" ]
> > + then
> > + echo >&2 "Found local changelog in $local_ref, not pushing"
> > + echo >&2 "Check commit $commit"
> > + exit 1
> > + fi
>
> It might be interesting to do some last minute call to checkstyle.py
> here too ... (with an optional manual accept if it flags anything).
>
> But that is feature creep and can be outside of this patch.
>
> > + fi
> > +done
> > +
> > +exit 0
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list