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.lankho...@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-ker...@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

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to