зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
452dfbed1a
Коммит
a078f7321b
|
@ -57,6 +57,17 @@ OPTIONS
|
|||
--no-scissors::
|
||||
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::
|
||||
--quiet::
|
||||
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)
|
||||
k,keep pass -k 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
|
||||
no-keep-cr do not pass --keep-cr flag to git-mailsplit independent of am.keepcr
|
||||
c,scissors strip everything before a scissors line
|
||||
|
@ -371,13 +372,18 @@ split_patches () {
|
|||
prec=4
|
||||
dotest="$GIT_DIR/rebase-apply"
|
||||
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=
|
||||
committer_date_is_author_date=
|
||||
ignore_date=
|
||||
allow_rerere_autoupdate=
|
||||
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
|
||||
then
|
||||
keepcr=t
|
||||
|
@ -400,6 +406,10 @@ it will be removed. Please do not use it anymore."
|
|||
utf8=t ;; # this is now default
|
||||
--no-utf8)
|
||||
utf8= ;;
|
||||
-m|--message-id)
|
||||
messageid=t ;;
|
||||
--no-message-id)
|
||||
messageid=f ;;
|
||||
-k|--keep)
|
||||
keep=t ;;
|
||||
--keep-non-patch)
|
||||
|
@ -567,6 +577,7 @@ Use \"git am --abort\" to remove it.")"
|
|||
echo "$sign" >"$dotest/sign"
|
||||
echo "$utf8" >"$dotest/utf8"
|
||||
echo "$keep" >"$dotest/keep"
|
||||
echo "$messageid" >"$dotest/messageid"
|
||||
echo "$scissors" >"$dotest/scissors"
|
||||
echo "$no_inbody_headers" >"$dotest/no_inbody_headers"
|
||||
echo "$GIT_QUIET" >"$dotest/quiet"
|
||||
|
@ -621,6 +632,12 @@ b)
|
|||
*)
|
||||
keep= ;;
|
||||
esac
|
||||
case "$(cat "$dotest/messageid")" in
|
||||
t)
|
||||
messageid=-m ;;
|
||||
f)
|
||||
messageid= ;;
|
||||
esac
|
||||
case "$(cat "$dotest/scissors")" in
|
||||
t)
|
||||
scissors=--scissors ;;
|
||||
|
@ -692,7 +709,7 @@ do
|
|||
get_author_ident_from_commit "$commit" >"$dotest/author-script"
|
||||
git diff-tree --root --binary --full-index "$commit" >"$dotest/patch"
|
||||
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" ||
|
||||
stop_here $this
|
||||
|
||||
|
|
|
@ -85,6 +85,7 @@ test_expect_success setup '
|
|||
|
||||
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 Two" &&
|
||||
echo "X-Fake-Field: Line Three" &&
|
||||
|
@ -536,4 +537,26 @@ test_expect_success 'am empty-file does not infloop' '
|
|||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче