diff mbox

dim: Add add-missing-cc command

Message ID 20170712061721.16164-1-maarten.lankhorst@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Maarten Lankhorst July 12, 2017, 6:17 a.m. UTC
This commit will take the topmost commit and add all cc's from
get_maintainer.pl, it is useful for adding cc's to an entire patch
series touching multiple drivers, to add the right cc to each one.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 dim     | 41 +++++++++++++++++++++++++++++++++++++++++
 dim.rst |  6 ++++++
 2 files changed, 47 insertions(+)

Comments

Jani Nikula July 12, 2017, 9:53 a.m. UTC | #1
On Wed, 12 Jul 2017, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote:
> This commit will take the topmost commit and add all cc's from
> get_maintainer.pl, it is useful for adding cc's to an entire patch
> series touching multiple drivers, to add the right cc to each one.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  dim     | 41 +++++++++++++++++++++++++++++++++++++++++
>  dim.rst |  6 ++++++
>  2 files changed, 47 insertions(+)
>
> diff --git a/dim b/dim
> index 267dbc0313b1..2378ec56e438 100755
> --- a/dim
> +++ b/dim
> @@ -1914,6 +1914,47 @@ function dim_fixes
>  	fi
>  }
>  
> +function dim_add_missing_cc
> +{
> +	git show | scripts/get_maintainer.pl --email --norolestats --pattern-depth 1 | while read cc; do
> +		email="$(echo "$cc" | sed -e 's/.*<//' -e 's/>.*//')"
> +		name=''
> +
> +		if echo "$cc" | grep -q '<'; then
> +			name="$(echo ${cc/<*/} | sed -e 's/[[:space:]]*\$//')";
> +		fi
> +
> +		# Don't add main mailing lists
> +		if [ "$email" = "dri-devel@lists.freedesktop.org" -o \
> +		     "$email" = "linux-kernel@vger.kernel.org}" ]; then
> +			continue
> +		fi
> +
> +		# Variables from the while loop don't propagate,
> +		# print out a 1 on success
> +		matches=$(
> +			git show -s | grep -i "^    Cc:" | sed 's/^ *[Cc][Cc]: *//' | while read testcc; do
> +				testemail="$(echo "$testcc" | sed -e 's/.*<//' -e 's/>.*//')"
> +
> +				if [ "$testemail" != "$email" ]; then
> +					if [ -z "$name" ]; then continue; fi
> +
> +					testname="$(echo ${testcc/<*/} | sed -e 's/[[:space:]]*\$//' -e 's/^[[:space:]]*//')"
> +
> +					if [ "$testname" != "$name" ]; then continue; fi
> +				fi
> +
> +				echo 1
> +				break
> +			done
> +		)
> +
> +		if [ -z "$matches" ]; then
> +			$DRY dim_commit_add_tag "Cc: ${cc}"
> +		fi
> +	done
> +}
> +
>  function dim_help
>  {
>  	manpage=$DIM_PREFIX/maintainer-tools/dim.rst
> diff --git a/dim.rst b/dim.rst
> index 10572f139130..ae511ca54cbe 100644
> --- a/dim.rst
> +++ b/dim.rst
> @@ -274,6 +274,12 @@ add-link-queued
>  **add-link** shorthands for *drm-intel-fixes*, *drm-intel-next-fixes*, and
>  *drm-intel-next-queued* branches respectively.
>  
> +add-missing-cc
> +--------------
> +Adds missing cc's to the topmost commit, can be used with

This needs the explanation what missing cc's are and where they are
added from.

BR,
Jani.

> +*git rebase --exec "dim add-missing-cc"*
> +to add cc's for an entire patch series.
> +
>  magic-rebase-resolve
>  --------------------
>  Tries to resolve a rebase conflict by first resetting the tree
Maarten Lankhorst July 12, 2017, 9:56 a.m. UTC | #2
Op 12-07-17 om 11:53 schreef Jani Nikula:
> On Wed, 12 Jul 2017, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote:
>> This commit will take the topmost commit and add all cc's from
>> get_maintainer.pl, it is useful for adding cc's to an entire patch
>> series touching multiple drivers, to add the right cc to each one.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> ---
>>  dim     | 41 +++++++++++++++++++++++++++++++++++++++++
>>  dim.rst |  6 ++++++
>>  2 files changed, 47 insertions(+)
>>
>> diff --git a/dim b/dim
>> index 267dbc0313b1..2378ec56e438 100755
>> --- a/dim
>> +++ b/dim
>> @@ -1914,6 +1914,47 @@ function dim_fixes
>>  	fi
>>  }
>>  
>> +function dim_add_missing_cc
>> +{
>> +	git show | scripts/get_maintainer.pl --email --norolestats --pattern-depth 1 | while read cc; do
>> +		email="$(echo "$cc" | sed -e 's/.*<//' -e 's/>.*//')"
>> +		name=''
>> +
>> +		if echo "$cc" | grep -q '<'; then
>> +			name="$(echo ${cc/<*/} | sed -e 's/[[:space:]]*\$//')";
>> +		fi
>> +
>> +		# Don't add main mailing lists
>> +		if [ "$email" = "dri-devel@lists.freedesktop.org" -o \
>> +		     "$email" = "linux-kernel@vger.kernel.org}" ]; then
>> +			continue
>> +		fi
>> +
>> +		# Variables from the while loop don't propagate,
>> +		# print out a 1 on success
>> +		matches=$(
>> +			git show -s | grep -i "^    Cc:" | sed 's/^ *[Cc][Cc]: *//' | while read testcc; do
>> +				testemail="$(echo "$testcc" | sed -e 's/.*<//' -e 's/>.*//')"
>> +
>> +				if [ "$testemail" != "$email" ]; then
>> +					if [ -z "$name" ]; then continue; fi
>> +
>> +					testname="$(echo ${testcc/<*/} | sed -e 's/[[:space:]]*\$//' -e 's/^[[:space:]]*//')"
>> +
>> +					if [ "$testname" != "$name" ]; then continue; fi
>> +				fi
>> +
>> +				echo 1
>> +				break
>> +			done
>> +		)
>> +
>> +		if [ -z "$matches" ]; then
>> +			$DRY dim_commit_add_tag "Cc: ${cc}"
>> +		fi
>> +	done
>> +}
>> +
>>  function dim_help
>>  {
>>  	manpage=$DIM_PREFIX/maintainer-tools/dim.rst
>> diff --git a/dim.rst b/dim.rst
>> index 10572f139130..ae511ca54cbe 100644
>> --- a/dim.rst
>> +++ b/dim.rst
>> @@ -274,6 +274,12 @@ add-link-queued
>>  **add-link** shorthands for *drm-intel-fixes*, *drm-intel-next-fixes*, and
>>  *drm-intel-next-queued* branches respectively.
>>  
>> +add-missing-cc
>> +--------------
>> +Adds missing cc's to the topmost commit, can be used with
> This needs the explanation what missing cc's are and where they are
> added from.
>
> BR,
> Jani.
How about the following?

add-missing-cc
--------------
Adds all maintainers from scripts/get_maintainer.pl as cc's to the topmost
commit. Any duplicates by name or email will be removed, so this can be used
with *git rebase --exec "dim add-missing-cc"* to add cc's for an entire patch
series that affect multiple drivers each with different maintainers.
Maarten Lankhorst July 12, 2017, 10:28 a.m. UTC | #3
Op 12-07-17 om 12:33 schreef Jani Nikula:
> On Wed, 12 Jul 2017, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote:
>> How about the following?
>>
>> add-missing-cc
>> --------------
>> Adds all maintainers from scripts/get_maintainer.pl as cc's to the topmost
>> commit. Any duplicates by name or email will be removed, so this can be used
>> with *git rebase --exec "dim add-missing-cc"* to add cc's for an entire patch
>> series that affect multiple drivers each with different maintainers.
> Works for me.
>
> J.
>
is that an ack?

~Maarten
Jani Nikula July 12, 2017, 10:33 a.m. UTC | #4
On Wed, 12 Jul 2017, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote:
> How about the following?
>
> add-missing-cc
> --------------
> Adds all maintainers from scripts/get_maintainer.pl as cc's to the topmost
> commit. Any duplicates by name or email will be removed, so this can be used
> with *git rebase --exec "dim add-missing-cc"* to add cc's for an entire patch
> series that affect multiple drivers each with different maintainers.

Works for me.

J.
Maarten Lankhorst July 12, 2017, 11:41 a.m. UTC | #5
Op 12-07-17 om 12:33 schreef Jani Nikula:
> On Wed, 12 Jul 2017, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote:
>> How about the following?
>>
>> add-missing-cc
>> --------------
>> Adds all maintainers from scripts/get_maintainer.pl as cc's to the topmost
>> commit. Any duplicates by name or email will be removed, so this can be used
>> with *git rebase --exec "dim add-missing-cc"* to add cc's for an entire patch
>> series that affect multiple drivers each with different maintainers.
> Works for me.
>
> J.
>
Thanks, pushed. :)
diff mbox

Patch

diff --git a/dim b/dim
index 267dbc0313b1..2378ec56e438 100755
--- a/dim
+++ b/dim
@@ -1914,6 +1914,47 @@  function dim_fixes
 	fi
 }
 
+function dim_add_missing_cc
+{
+	git show | scripts/get_maintainer.pl --email --norolestats --pattern-depth 1 | while read cc; do
+		email="$(echo "$cc" | sed -e 's/.*<//' -e 's/>.*//')"
+		name=''
+
+		if echo "$cc" | grep -q '<'; then
+			name="$(echo ${cc/<*/} | sed -e 's/[[:space:]]*\$//')";
+		fi
+
+		# Don't add main mailing lists
+		if [ "$email" = "dri-devel@lists.freedesktop.org" -o \
+		     "$email" = "linux-kernel@vger.kernel.org}" ]; then
+			continue
+		fi
+
+		# Variables from the while loop don't propagate,
+		# print out a 1 on success
+		matches=$(
+			git show -s | grep -i "^    Cc:" | sed 's/^ *[Cc][Cc]: *//' | while read testcc; do
+				testemail="$(echo "$testcc" | sed -e 's/.*<//' -e 's/>.*//')"
+
+				if [ "$testemail" != "$email" ]; then
+					if [ -z "$name" ]; then continue; fi
+
+					testname="$(echo ${testcc/<*/} | sed -e 's/[[:space:]]*\$//' -e 's/^[[:space:]]*//')"
+
+					if [ "$testname" != "$name" ]; then continue; fi
+				fi
+
+				echo 1
+				break
+			done
+		)
+
+		if [ -z "$matches" ]; then
+			$DRY dim_commit_add_tag "Cc: ${cc}"
+		fi
+	done
+}
+
 function dim_help
 {
 	manpage=$DIM_PREFIX/maintainer-tools/dim.rst
diff --git a/dim.rst b/dim.rst
index 10572f139130..ae511ca54cbe 100644
--- a/dim.rst
+++ b/dim.rst
@@ -274,6 +274,12 @@  add-link-queued
 **add-link** shorthands for *drm-intel-fixes*, *drm-intel-next-fixes*, and
 *drm-intel-next-queued* branches respectively.
 
+add-missing-cc
+--------------
+Adds missing cc's to the topmost commit, can be used with
+*git rebase --exec "dim add-missing-cc"*
+to add cc's for an entire patch series.
+
 magic-rebase-resolve
 --------------------
 Tries to resolve a rebase conflict by first resetting the tree