[Intel-gfx] [maintainer-tools PATCH] dim: Check for required tags before pushing a branch
Imre Deak
imre.deak at intel.com
Thu Mar 3 10:13:42 UTC 2016
On Thu, 2016-03-03 at 10:11 +0200, Jani Nikula wrote:
> On Wed, 02 Mar 2016, Imre Deak <imre.deak at intel.com> wrote:
> > Check if the committer's and author's Signed-off-by line and at
> > least
> > one Reviewed-by line exists in each commit to be pushed.
> >
> > Signed-off-by: Imre Deak <imre.deak at intel.com>
> > ---
> > dim | 32 ++++++++++++++++++++++++++++++++
> > 1 file changed, 32 insertions(+)
> >
> > diff --git a/dim b/dim
> > index 1addd6f..b951fb4 100755
> > --- a/dim
> > +++ b/dim
> > @@ -361,6 +361,37 @@ function dim_nightly_forget
> > git rerere forget
> > }
> >
> > +function assert_one_commit_tag
> > +{
> > + local commit_message="$1"
> > + local tag="$2"
> > +
> > + if ! echo "$commit_message" | grep -q "^$tag"; then
>
> I think you'll find this is too strict. There may be subtle
> differences
> in the author (which comes from the patch email From: header) and
> signed-off-by lines.
How about requiring that at least the name part matches? We have a few
existing cases where it doesn't due to the missing "name" part in
GIT_AUTHOR_EMAIL, but imo that's just incorrect setup on the author's
side.
> > + echo "Tag '$tag' missing from $commit"
> > + return 1
> > + fi
> > +
> > +}
> > +
> > +function assert_all_commit_tags
> > +{
> > + local branch=$1
> > + local new_commits=$(git rev-list
> > $DIM_DRM_INTEL_REMOTE/$branch..$branch)
> > +
> > + local commit
> > + for commit in $new_commits; do
> > + local commit_message=$(git show -s --format=%B
> > $commit)
> > + local committer_email=$(git show -s --format="%cn
> > <%ce>" $commit)
> > + local author_email=$(git show -s --format="%an
> > <%ae>" $commit)
> > +
> > + assert_one_commit_tag "$commit_message" "Signed-
> > off-by: $author_email"
> > + assert_one_commit_tag "$commit_message" "Signed-
> > off-by: $committer_email"
> > + assert_one_commit_tag "$commit_message" "Reviewed-
> > by: .\+ <.\+ at .\+>"
>
> If you write a patch and I review and push it, I won't add an extra
> reviewed-by, just a signed-off-by.
To me it's clearer to state explicitly that you reviewed it, but if
people don't do that in general then I'll remove this check.
> > + done
> > + return 0
> > +}
> > +
> > # push branch $1, rebuild nightly. the rest of the arguments are
> > passed to git
> > # push.
> > function dim_push_branch
> > @@ -374,6 +405,7 @@ function dim_push_branch
> > shift
> >
> > assert_branch $branch
> > + assert_all_commit_tags $branch
>
> This should be added to the checkpatch part instead of push. First,
> we
> need to push a lot of non-i915 stuff when rebasing fixes or pushing
> backmerges. Second, it is useful to be able to non-intrusively check
> this before pushing.
Ok, I can move it to dim_checkpatch.
But I also wanted to actually prevent the push without proper commit
tags. So how about a customizable DIM_PRE_PUSH_CHECK that would be
called from dim_push_branch?
--Imre
More information about the Intel-gfx
mailing list