[maintainer-tools PATCH] dim: append commit message tags in git, not in files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Email is hard. Let that sink in.

The message piped to dim may have, among other things, base64 encoding,
and using sed to modify the commit message directly on the input falls
apart. This is also true for messages sent using git-send-email. Let
'git am' handle the hard part, and modify the commit message after the
patch has been applied.

The same holds for running checkpatch on the email message; it's
doomed. We'll leave that for later.

Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx>
---
 dim | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/dim b/dim
index cdb48b9f8976..db92c57d82aa 100755
--- a/dim
+++ b/dim
@@ -172,11 +172,15 @@ if message_id is not None:
 EOF
 }
 
-# inject a new tag to a patch file
-# $1 = file, $2 = tag, $3 = value
-message_add_tag ()
+# append a new tag at the end of the commit message of HEAD
+# $1 = tag, $2 = value
+commit_add_tag ()
 {
-	sed -ie "/^---$/ i\\$2: $3" $1
+	# the first sed deletes all trailing blank lines at the end
+	git log -1 --pretty=%B | \
+		sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' | \
+		sed "\$a$1: $2" | \
+		git commit --amend -F-
 }
 
 function update_linux_next
@@ -370,13 +374,15 @@ function dim_apply
 	cat > $file
 
 	local message_id=$(message_get_id $file)
-	if [ -n $message_id ]; then
-		message_add_tag $file "Link" "http://patchwork.freedesktop.org/patch/msgid/$message_id";
-	fi
 
 	dim_shell_checkpatch "cat $file"
 
 	cat $file | git am -3 "$@"
+
+	if [ -n $message_id ]; then
+		commit_add_tag "Link" "http://patchwork.freedesktop.org/patch/msgid/$message_id";
+	fi
+
 	git commit --amend &
 }
 
-- 
2.1.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux