[dpdk-dev,3/3] scripts: check headline of drivers commits

Message ID 1467801530-20800-4-git-send-email-thomas.monjalon@6wind.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Thomas Monjalon July 6, 2016, 10:38 a.m. UTC
  From: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>

A driver patch under net should start with "net/<driver name>" or if
a patch touch multiple drivers, it should only start with "net:".
The same apply for crypto.
A patch touching all drivers (net + crypto) should start with "drivers:".

Longer prefixes like "net/mlx:" (for mlx4/mlx5) or "net/e1000/base:" are
handled by not checking the colon.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 scripts/check-git-log.sh | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
  

Comments

Bruce Richardson July 6, 2016, 11:09 a.m. UTC | #1
On Wed, Jul 06, 2016 at 12:38:50PM +0200, Thomas Monjalon wrote:
> From: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
> 
> A driver patch under net should start with "net/<driver name>" or if
> a patch touch multiple drivers, it should only start with "net:".
> The same apply for crypto.
> A patch touching all drivers (net + crypto) should start with "drivers:".
> 
> Longer prefixes like "net/mlx:" (for mlx4/mlx5) or "net/e1000/base:" are
> handled by not checking the colon.
> 
> Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
> ---
>  scripts/check-git-log.sh | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/scripts/check-git-log.sh b/scripts/check-git-log.sh
> index 833aa39..3f3cf19 100755
> --- a/scripts/check-git-log.sh
> +++ b/scripts/check-git-log.sh
> @@ -70,6 +70,23 @@ bad=$(echo "$headlines" | grep --color=always \
>  	| sed 's,^,\t,')
>  [ -z "$bad" ] || printf "Wrong headline format:\n$bad\n"
>  
> +# check headline prefix when touching only drivers/, e.g. net/<driver name>
> +bad=$(for commit in $commits ; do
> +	headline=$(git log --format='%s' -1 $commit)
> +	files=$(git diff-tree --no-commit-id --name-only -r $commit)
> +	[ -z "$(echo "$files" | grep -v '^drivers/')" ] || continue

Given the preference for including documentation in with the code changes,
we should perhaps exclude any doc changes when making this check.

/Bruce
  
Nélio Laranjeiro July 6, 2016, 11:59 a.m. UTC | #2
Thomas,

On Wed, Jul 06, 2016 at 12:38:50PM +0200, Thomas Monjalon wrote:
> From: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
> 
> A driver patch under net should start with "net/<driver name>" or if
> a patch touch multiple drivers, it should only start with "net:".
> The same apply for crypto.
> A patch touching all drivers (net + crypto) should start with "drivers:".
> 
> Longer prefixes like "net/mlx:" (for mlx4/mlx5) or "net/e1000/base:" are
> handled by not checking the colon.
> 
> Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
> ---
>  scripts/check-git-log.sh | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/scripts/check-git-log.sh b/scripts/check-git-log.sh
> index 833aa39..3f3cf19 100755
> --- a/scripts/check-git-log.sh
> +++ b/scripts/check-git-log.sh
> @@ -70,6 +70,23 @@ bad=$(echo "$headlines" | grep --color=always \
>  	| sed 's,^,\t,')
>  [ -z "$bad" ] || printf "Wrong headline format:\n$bad\n"
>  
> +# check headline prefix when touching only drivers/, e.g. net/<driver name>
> +bad=$(for commit in $commits ; do
> +	headline=$(git log --format='%s' -1 $commit)
> +	files=$(git diff-tree --no-commit-id --name-only -r $commit)
> +	[ -z "$(echo "$files" | grep -v '^drivers/')" ] || continue
> +	driversgrp=$(echo "$files" | cut -d "/" -f 2 | sort -u)
> +	drivers=$(echo "$files" | cut -d "/" -f 2,3 | sort -u)
> +	if [ $(echo "$driversgrp" | wc -l) -gt 1 ] ; then
> +		bad=$(echo "$headline" | grep -v '^drivers:')

I think you forgot the '$' for drivers in the line just above.

> +	elif [ $(echo "$drivers" | wc -l) -gt 1 ] ; then
> +		bad=$(echo "$headline" | grep -v "^$driversgrp")
> +	else
> +		bad=$(echo "$headline" | grep -v "^$drivers")
> +	fi
> +done | sed 's,^,\t,')
> +[ -z "$bad" ] || printf "Wrong headline prefix:\n$bad\n"
> +
>  # check headline label for common typos
>  bad=$(echo "$headlines" | grep --color=always \
>  	-e '^example[:/]' \
> -- 
> 2.7.0

Otherwise it seems good.

Regards,
  
Thomas Monjalon July 6, 2016, 12:36 p.m. UTC | #3
2016-07-06 12:09, Bruce Richardson:
> On Wed, Jul 06, 2016 at 12:38:50PM +0200, Thomas Monjalon wrote:
> > From: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
> > +# check headline prefix when touching only drivers/, e.g. net/<driver name>
> > +bad=$(for commit in $commits ; do
> > +	headline=$(git log --format='%s' -1 $commit)
> > +	files=$(git diff-tree --no-commit-id --name-only -r $commit)
> > +	[ -z "$(echo "$files" | grep -v '^drivers/')" ] || continue
> 
> Given the preference for including documentation in with the code changes,
> we should perhaps exclude any doc changes when making this check.

Yes we can exclude doc/ and config/.
Thanks
  
Thomas Monjalon July 6, 2016, 1:15 p.m. UTC | #4
2016-07-06 13:59, Nélio Laranjeiro:
> > +# check headline prefix when touching only drivers/, e.g. net/<driver name>
> > +bad=$(for commit in $commits ; do
> > +	headline=$(git log --format='%s' -1 $commit)
> > +	files=$(git diff-tree --no-commit-id --name-only -r $commit)
> > +	[ -z "$(echo "$files" | grep -v '^drivers/')" ] || continue
> > +	driversgrp=$(echo "$files" | cut -d "/" -f 2 | sort -u)
> > +	drivers=$(echo "$files" | cut -d "/" -f 2,3 | sort -u)
> > +	if [ $(echo "$driversgrp" | wc -l) -gt 1 ] ; then
> > +		bad=$(echo "$headline" | grep -v '^drivers:')
> 
> I think you forgot the '$' for drivers in the line just above.

No it is a plain "drivers:" for cases where we have net and crypto.
(it is an addition from your original idea)
But I forgot to remove bad=$( which I've moved to the first line.

> > +	elif [ $(echo "$drivers" | wc -l) -gt 1 ] ; then
> > +		bad=$(echo "$headline" | grep -v "^$driversgrp")
> > +	else
> > +		bad=$(echo "$headline" | grep -v "^$drivers")
> > +	fi
> > +done | sed 's,^,\t,')
> > +[ -z "$bad" ] || printf "Wrong headline prefix:\n$bad\n"
> 
> Otherwise it seems good.

V2 on going
  

Patch

diff --git a/scripts/check-git-log.sh b/scripts/check-git-log.sh
index 833aa39..3f3cf19 100755
--- a/scripts/check-git-log.sh
+++ b/scripts/check-git-log.sh
@@ -70,6 +70,23 @@  bad=$(echo "$headlines" | grep --color=always \
 	| sed 's,^,\t,')
 [ -z "$bad" ] || printf "Wrong headline format:\n$bad\n"
 
+# check headline prefix when touching only drivers/, e.g. net/<driver name>
+bad=$(for commit in $commits ; do
+	headline=$(git log --format='%s' -1 $commit)
+	files=$(git diff-tree --no-commit-id --name-only -r $commit)
+	[ -z "$(echo "$files" | grep -v '^drivers/')" ] || continue
+	driversgrp=$(echo "$files" | cut -d "/" -f 2 | sort -u)
+	drivers=$(echo "$files" | cut -d "/" -f 2,3 | sort -u)
+	if [ $(echo "$driversgrp" | wc -l) -gt 1 ] ; then
+		bad=$(echo "$headline" | grep -v '^drivers:')
+	elif [ $(echo "$drivers" | wc -l) -gt 1 ] ; then
+		bad=$(echo "$headline" | grep -v "^$driversgrp")
+	else
+		bad=$(echo "$headline" | grep -v "^$drivers")
+	fi
+done | sed 's,^,\t,')
+[ -z "$bad" ] || printf "Wrong headline prefix:\n$bad\n"
+
 # check headline label for common typos
 bad=$(echo "$headlines" | grep --color=always \
 	-e '^example[:/]' \