DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/3] more commits checks
@ 2016-07-06 10:38 Thomas Monjalon
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 1/3] scripts: check spacing after commit references Thomas Monjalon
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-06 10:38 UTC (permalink / raw)
  To: dev

The script check-git-log.sh helps to keep a consistent git history.
Scrolling/parsing the history is easier when we are used to some
rules.

Nélio Laranjeiro (1):
  scripts: check headline of drivers commits

Thomas Monjalon (2):
  scripts: check spacing after commit references
  scripts: reduce line size of commit checks

 scripts/check-git-log.sh | 36 ++++++++++++++++++++++++++++++++----
 1 file changed, 32 insertions(+), 4 deletions(-)

-- 
2.7.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 1/3] scripts: check spacing after commit references
  2016-07-06 10:38 [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon
@ 2016-07-06 10:38 ` Thomas Monjalon
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 2/3] scripts: reduce line size of commit checks Thomas Monjalon
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-06 10:38 UTC (permalink / raw)
  To: dev

A blank line between "Fixes" and "Signed-off-by" helps to
separate information in blocks.

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

diff --git a/scripts/check-git-log.sh b/scripts/check-git-log.sh
index c7fc0e4..a24f101 100755
--- a/scripts/check-git-log.sh
+++ b/scripts/check-git-log.sh
@@ -129,6 +129,12 @@ bad=$(echo "$tags" |
 	sed 's,^.,\t&,')
 [ -z "$bad" ] || printf "Wrong tag:\n$bad\n"
 
+# check blank line after last Fixes: tag
+bad=$(echo "$bodylines" |
+	sed -n 'N;/\nFixes:/D;/\n$/D;/^Fixes:/P' |
+	sed 's,^.,\t&,')
+[ -z "$bad" ] || printf "Missing blank line after 'Fixes' tag:\n$bad\n"
+
 # check missing Fixes: tag
 bad=$(for fix in $fixes ; do
 	git log --format='%b' -1 $fix | grep -q '^Fixes: ' ||
-- 
2.7.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 2/3] scripts: reduce line size of commit checks
  2016-07-06 10:38 [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 1/3] scripts: check spacing after commit references Thomas Monjalon
@ 2016-07-06 10:38 ` Thomas Monjalon
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits Thomas Monjalon
  2016-07-10 14:37 ` [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon
  3 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-06 10:38 UTC (permalink / raw)
  To: dev

Small cleanup to comply with the 80 chars limit.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 scripts/check-git-log.sh | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/scripts/check-git-log.sh b/scripts/check-git-log.sh
index a24f101..833aa39 100755
--- a/scripts/check-git-log.sh
+++ b/scripts/check-git-log.sh
@@ -52,8 +52,9 @@ range=${1:-origin/master..}
 commits=$(git log --format='%h' $range)
 headlines=$(git log --format='%s' $range)
 bodylines=$(git log --format='%b' $range)
-tags=$(git log --format='%b' $range | grep -i -e 'by *:' -e 'fix.*:')
 fixes=$(git log --format='%h %s' $range | grep -i ': *fix' | cut -d' ' -f1)
+tags=$(git log --format='%b' $range | grep -i -e 'by *:' -e 'fix.*:')
+bytag='\(Reported\|Suggested\|Signed-off\|Acked\|Reviewed\|Tested\)-by:'
 
 # check headline format (spacing, no punctuation, no code)
 bad=$(echo "$headlines" | grep --color=always \
@@ -108,11 +109,15 @@ bad=$(echo "$headlines" | grep -E --color=always \
 [ -z "$bad" ] || printf "Wrong headline lowercase:\n$bad\n"
 
 # check headline length (60 max)
-bad=$(echo "$headlines" | awk 'length>60 {print}' | sed 's,^,\t,')
+bad=$(echo "$headlines" |
+	awk 'length>60 {print}' |
+	sed 's,^,\t,')
 [ -z "$bad" ] || printf "Headline too long:\n$bad\n"
 
 # check body lines length (75 max)
-bad=$(echo "$bodylines" | grep -v '^Fixes:' | awk 'length>75 {print}' | sed 's,^,\t,')
+bad=$(echo "$bodylines" | grep -v '^Fixes:' |
+	awk 'length>75 {print}' |
+	sed 's,^,\t,')
 [ -z "$bad" ] || printf "Line too long:\n$bad\n"
 
 # check starting commit message with "It"
@@ -124,7 +129,7 @@ done | sed 's,^,\t,')
 
 # check tags spelling
 bad=$(echo "$tags" |
-	grep -v '^\(Reported\|Suggested\|Signed-off\|Acked\|Reviewed\|Tested\)-by: [^,]* <.*@.*>$' |
+	grep -v "^$bytag [^,]* <.*@.*>$" |
 	grep -v '^Fixes: [0-9a-f]\{7\}[0-9a-f]* (".*")$' |
 	sed 's,^.,\t&,')
 [ -z "$bad" ] || printf "Wrong tag:\n$bad\n"
-- 
2.7.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits
  2016-07-06 10:38 [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 1/3] scripts: check spacing after commit references Thomas Monjalon
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 2/3] scripts: reduce line size of commit checks Thomas Monjalon
@ 2016-07-06 10:38 ` Thomas Monjalon
  2016-07-06 11:09   ` Bruce Richardson
                     ` (2 more replies)
  2016-07-10 14:37 ` [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon
  3 siblings, 3 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-06 10:38 UTC (permalink / raw)
  To: dev; +Cc: Nelio Laranjeiro

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:')
+	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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits Thomas Monjalon
@ 2016-07-06 11:09   ` Bruce Richardson
  2016-07-06 12:36     ` Thomas Monjalon
  2016-07-06 11:59   ` Nélio Laranjeiro
  2016-07-06 13:41   ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
  2 siblings, 1 reply; 10+ messages in thread
From: Bruce Richardson @ 2016-07-06 11:09 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Nelio Laranjeiro

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits Thomas Monjalon
  2016-07-06 11:09   ` Bruce Richardson
@ 2016-07-06 11:59   ` Nélio Laranjeiro
  2016-07-06 13:15     ` Thomas Monjalon
  2016-07-06 13:41   ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
  2 siblings, 1 reply; 10+ messages in thread
From: Nélio Laranjeiro @ 2016-07-06 11:59 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

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,

-- 
Nélio Laranjeiro
6WIND

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits
  2016-07-06 11:09   ` Bruce Richardson
@ 2016-07-06 12:36     ` Thomas Monjalon
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-06 12:36 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev, Nelio Laranjeiro

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits
  2016-07-06 11:59   ` Nélio Laranjeiro
@ 2016-07-06 13:15     ` Thomas Monjalon
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-06 13:15 UTC (permalink / raw)
  To: Nélio Laranjeiro; +Cc: dev

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH v2] scripts: check headline of drivers commits
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits Thomas Monjalon
  2016-07-06 11:09   ` Bruce Richardson
  2016-07-06 11:59   ` Nélio Laranjeiro
@ 2016-07-06 13:41   ` Thomas Monjalon
  2 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-06 13:41 UTC (permalink / raw)
  To: bruce.richardson, nelio.laranjeiro; +Cc: dev

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.

The directories doc/ and config/ are ignored because a driver patch
can modify them.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
v2:
- fix capture in bad variable
- ignore doc/ and config/
---
 scripts/check-git-log.sh | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/scripts/check-git-log.sh b/scripts/check-git-log.sh
index 833aa39..21f1055 100755
--- a/scripts/check-git-log.sh
+++ b/scripts/check-git-log.sh
@@ -70,6 +70,24 @@ 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\|doc\|config\)/')" ] ||
+		continue
+	drv=$(echo "$files" | grep '^drivers/' | cut -d "/" -f 2,3 | sort -u)
+	drvgrp=$(echo "$drv" | cut -d "/" -f 1 | uniq)
+	if [ $(echo "$drvgrp" | wc -l) -gt 1 ] ; then
+		echo "$headline" | grep -v '^drivers:'
+	elif [ $(echo "$drv" | wc -l) -gt 1 ] ; then
+		echo "$headline" | grep -v "^$drvgrp"
+	else
+		echo "$headline" | grep -v "^$drv"
+	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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 0/3] more commits checks
  2016-07-06 10:38 [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon
                   ` (2 preceding siblings ...)
  2016-07-06 10:38 ` [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits Thomas Monjalon
@ 2016-07-10 14:37 ` Thomas Monjalon
  3 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2016-07-10 14:37 UTC (permalink / raw)
  To: dev

2016-07-06 12:38, Thomas Monjalon:
> The script check-git-log.sh helps to keep a consistent git history.
> Scrolling/parsing the history is easier when we are used to some
> rules.
> 
> Nélio Laranjeiro (1):
>   scripts: check headline of drivers commits
> 
> Thomas Monjalon (2):
>   scripts: check spacing after commit references
>   scripts: reduce line size of commit checks

Series applied (with 3/3 v2)

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-07-10 14:37 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-06 10:38 [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon
2016-07-06 10:38 ` [dpdk-dev] [PATCH 1/3] scripts: check spacing after commit references Thomas Monjalon
2016-07-06 10:38 ` [dpdk-dev] [PATCH 2/3] scripts: reduce line size of commit checks Thomas Monjalon
2016-07-06 10:38 ` [dpdk-dev] [PATCH 3/3] scripts: check headline of drivers commits Thomas Monjalon
2016-07-06 11:09   ` Bruce Richardson
2016-07-06 12:36     ` Thomas Monjalon
2016-07-06 11:59   ` Nélio Laranjeiro
2016-07-06 13:15     ` Thomas Monjalon
2016-07-06 13:41   ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
2016-07-10 14:37 ` [dpdk-dev] [PATCH 0/3] more commits checks Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).