git-am: add --message-id/--no-message-id
Parse the option and pass it directly to git-mailinfo. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									452dfbed1a
								
							
						
					
					
						commit
						a078f7321b
					
				|  | @ -57,6 +57,17 @@ OPTIONS | ||||||
| --no-scissors:: | --no-scissors:: | ||||||
| 	Ignore scissors lines (see linkgit:git-mailinfo[1]). | 	Ignore scissors lines (see linkgit:git-mailinfo[1]). | ||||||
|  |  | ||||||
|  | -m:: | ||||||
|  | --message-id:: | ||||||
|  | 	Pass the `-m` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]), | ||||||
|  | 	so that the Message-ID header is added to the commit message. | ||||||
|  | 	The `am.messageid` configuration variable can be used to specify | ||||||
|  | 	the default behaviour. | ||||||
|  |  | ||||||
|  | --no-message-id:: | ||||||
|  | 	Do not add the Message-ID header to the commit message. | ||||||
|  | 	`no-message-id` is useful to override `am.messageid`. | ||||||
|  |  | ||||||
| -q:: | -q:: | ||||||
| --quiet:: | --quiet:: | ||||||
| 	Be quiet. Only print error messages. | 	Be quiet. Only print error messages. | ||||||
|  |  | ||||||
							
								
								
									
										21
									
								
								git-am.sh
								
								
								
								
							
							
						
						
									
										21
									
								
								git-am.sh
								
								
								
								
							|  | @ -17,6 +17,7 @@ s,signoff       add a Signed-off-by line to the commit message | ||||||
| u,utf8          recode into utf8 (default) | u,utf8          recode into utf8 (default) | ||||||
| k,keep          pass -k flag to git-mailinfo | k,keep          pass -k flag to git-mailinfo | ||||||
| keep-non-patch  pass -b flag to git-mailinfo | keep-non-patch  pass -b flag to git-mailinfo | ||||||
|  | m,message-id    pass -m flag to git-mailinfo | ||||||
| keep-cr         pass --keep-cr flag to git-mailsplit for mbox format | keep-cr         pass --keep-cr flag to git-mailsplit for mbox format | ||||||
| no-keep-cr      do not pass --keep-cr flag to git-mailsplit independent of am.keepcr | no-keep-cr      do not pass --keep-cr flag to git-mailsplit independent of am.keepcr | ||||||
| c,scissors      strip everything before a scissors line | c,scissors      strip everything before a scissors line | ||||||
|  | @ -371,13 +372,18 @@ split_patches () { | ||||||
| prec=4 | prec=4 | ||||||
| dotest="$GIT_DIR/rebase-apply" | dotest="$GIT_DIR/rebase-apply" | ||||||
| sign= utf8=t keep= keepcr= skip= interactive= resolved= rebasing= abort= | sign= utf8=t keep= keepcr= skip= interactive= resolved= rebasing= abort= | ||||||
| resolvemsg= resume= scissors= no_inbody_headers= | messageid= resolvemsg= resume= scissors= no_inbody_headers= | ||||||
| git_apply_opt= | git_apply_opt= | ||||||
| committer_date_is_author_date= | committer_date_is_author_date= | ||||||
| ignore_date= | ignore_date= | ||||||
| allow_rerere_autoupdate= | allow_rerere_autoupdate= | ||||||
| gpg_sign_opt= | gpg_sign_opt= | ||||||
|  |  | ||||||
|  | if test "$(git config --bool --get am.messageid)" = true | ||||||
|  | then | ||||||
|  |     messageid=t | ||||||
|  | fi | ||||||
|  |  | ||||||
| if test "$(git config --bool --get am.keepcr)" = true | if test "$(git config --bool --get am.keepcr)" = true | ||||||
| then | then | ||||||
|     keepcr=t |     keepcr=t | ||||||
|  | @ -400,6 +406,10 @@ it will be removed. Please do not use it anymore." | ||||||
| 		utf8=t ;; # this is now default | 		utf8=t ;; # this is now default | ||||||
| 	--no-utf8) | 	--no-utf8) | ||||||
| 		utf8= ;; | 		utf8= ;; | ||||||
|  | 	-m|--message-id) | ||||||
|  | 		messageid=t ;; | ||||||
|  | 	--no-message-id) | ||||||
|  | 		messageid=f ;; | ||||||
| 	-k|--keep) | 	-k|--keep) | ||||||
| 		keep=t ;; | 		keep=t ;; | ||||||
| 	--keep-non-patch) | 	--keep-non-patch) | ||||||
|  | @ -567,6 +577,7 @@ Use \"git am --abort\" to remove it.")" | ||||||
| 	echo "$sign" >"$dotest/sign" | 	echo "$sign" >"$dotest/sign" | ||||||
| 	echo "$utf8" >"$dotest/utf8" | 	echo "$utf8" >"$dotest/utf8" | ||||||
| 	echo "$keep" >"$dotest/keep" | 	echo "$keep" >"$dotest/keep" | ||||||
|  | 	echo "$messageid" >"$dotest/messageid" | ||||||
| 	echo "$scissors" >"$dotest/scissors" | 	echo "$scissors" >"$dotest/scissors" | ||||||
| 	echo "$no_inbody_headers" >"$dotest/no_inbody_headers" | 	echo "$no_inbody_headers" >"$dotest/no_inbody_headers" | ||||||
| 	echo "$GIT_QUIET" >"$dotest/quiet" | 	echo "$GIT_QUIET" >"$dotest/quiet" | ||||||
|  | @ -621,6 +632,12 @@ b) | ||||||
| *) | *) | ||||||
| 	keep= ;; | 	keep= ;; | ||||||
| esac | esac | ||||||
|  | case "$(cat "$dotest/messageid")" in | ||||||
|  | t) | ||||||
|  | 	messageid=-m ;; | ||||||
|  | f) | ||||||
|  | 	messageid= ;; | ||||||
|  | esac | ||||||
| case "$(cat "$dotest/scissors")" in | case "$(cat "$dotest/scissors")" in | ||||||
| t) | t) | ||||||
| 	scissors=--scissors ;; | 	scissors=--scissors ;; | ||||||
|  | @ -692,7 +709,7 @@ do | ||||||
| 			get_author_ident_from_commit "$commit" >"$dotest/author-script" | 			get_author_ident_from_commit "$commit" >"$dotest/author-script" | ||||||
| 			git diff-tree --root --binary --full-index "$commit" >"$dotest/patch" | 			git diff-tree --root --binary --full-index "$commit" >"$dotest/patch" | ||||||
| 		else | 		else | ||||||
| 			git mailinfo $keep $no_inbody_headers $scissors $utf8 "$dotest/msg" "$dotest/patch" \ | 			git mailinfo $keep $no_inbody_headers $messageid $scissors $utf8 "$dotest/msg" "$dotest/patch" \ | ||||||
| 				<"$dotest/$msgnum" >"$dotest/info" || | 				<"$dotest/$msgnum" >"$dotest/info" || | ||||||
| 				stop_here $this | 				stop_here $this | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ -85,6 +85,7 @@ test_expect_success setup ' | ||||||
|  |  | ||||||
| 	git format-patch --stdout first >patch1 && | 	git format-patch --stdout first >patch1 && | ||||||
| 	{ | 	{ | ||||||
|  | 		echo "Message-Id: <1226501681-24923-1-git-send-email-bda@mnsspb.ru>" && | ||||||
| 		echo "X-Fake-Field: Line One" && | 		echo "X-Fake-Field: Line One" && | ||||||
| 		echo "X-Fake-Field: Line Two" && | 		echo "X-Fake-Field: Line Two" && | ||||||
| 		echo "X-Fake-Field: Line Three" && | 		echo "X-Fake-Field: Line Three" && | ||||||
|  | @ -536,4 +537,26 @@ test_expect_success 'am empty-file does not infloop' ' | ||||||
| 	test_i18ncmp expected actual | 	test_i18ncmp expected actual | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'am --message-id really adds the message id' ' | ||||||
|  | 	rm -fr .git/rebase-apply && | ||||||
|  | 	git reset --hard && | ||||||
|  | 	git checkout HEAD^ && | ||||||
|  | 	git am --message-id patch1.eml && | ||||||
|  | 	test_path_is_missing .git/rebase-apply && | ||||||
|  | 	git cat-file commit HEAD | tail -n1 >actual && | ||||||
|  | 	grep Message-Id patch1.eml >expected && | ||||||
|  | 	test_cmp expected actual | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'am --message-id -s signs off after the message id' ' | ||||||
|  | 	rm -fr .git/rebase-apply && | ||||||
|  | 	git reset --hard && | ||||||
|  | 	git checkout HEAD^ && | ||||||
|  | 	git am -s --message-id patch1.eml && | ||||||
|  | 	test_path_is_missing .git/rebase-apply && | ||||||
|  | 	git cat-file commit HEAD | tail -n2 | head -n1 >actual && | ||||||
|  | 	grep Message-Id patch1.eml >expected && | ||||||
|  | 	test_cmp expected actual | ||||||
|  | ' | ||||||
|  |  | ||||||
| test_done | test_done | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Paolo Bonzini
						Paolo Bonzini