[PATCH] dim: Add add-missing-cc command

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Wed Jul 12 06:17:21 UTC 2017


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 at 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 at lists.freedesktop.org" -o \
+		     "$email" = "linux-kernel at 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
-- 
2.11.0



More information about the dri-devel mailing list