[PATCH v4 0/2] am: support --empty-commit=(die|skip|asis) option to am empty commits
From: Aleen via GitGitGadget <hidden>
Date: 2021-11-16 05:54:04
Since that git has supported the --always option for the git-format-patch
command to create a patch with an empty commit message, git-am should
support applying and committing with empty patches.
----------------------------------------------------------------------------
Changes since v1:
1. add a case when not passing the --always option
2. rename the --always option to --allow-empty
----------------------------------------------------------------------------
Changes since v2:
1. rename the --allow-empty option to --empty-commit
2. introduce three different strategies (die|skip|asis) when trying to
record empty patches as empty commits.
----------------------------------------------------------------------------
Changes since v3:
1. generate the missed file for test cases
2. grep -f cannot be used under Mac OS
----------------------------------------------------------------------------
Aleen (2):
doc: git-format-patch: describe the option --always
am: support --empty-commit option to handle empty patches
Documentation/git-am.txt | 9 ++++
Documentation/git-format-patch.txt | 6 ++-
builtin/am.c | 48 ++++++++++++++++++--
t/t4150-am.sh | 73 ++++++++++++++++++++++++++++++
4 files changed, 130 insertions(+), 6 deletions(-)
base-commit: b550198c73edd4cc058832dcf74b41aeec2adba2
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1076%2Faleen42%2Fnext-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1076/aleen42/next-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/1076
Range-diff vs v3:
1: 9f1b3dd6d0b = 1: 9f1b3dd6d0b doc: git-format-patch: describe the option --always
2: ef33ce8c6f9 ! 2: b7e30c9b7ab am: support --empty-commit option to handle empty patches
@@ t/t4150-am.sh: test_expect_success setup '
+ git commit -m "empty commit" --allow-empty &&
+
+ git format-patch --stdout empty-commit^ >empty.patch &&
++ git format-patch --stdout --cover-letter empty-commit^ >cover-letter.patch &&
+ git format-patch --always --stdout empty-commit^ >empty-commit.patch &&
+
# reset time
@@ t/t4150-am.sh: test_expect_success 'apply binary blob in partial clone' '
+
+ git am --empty-commit=skip cover-letter.patch >err &&
+ test_path_is_missing .git/rebase-apply &&
-+ git rev-parse empty-commit^ >expected &&
-+ git rev-parse HEAD >actual &&
-+ test_cmp expected actual
++ test_cmp_rev empty-commit^ HEAD
+'
+
+test_expect_success 'record as an empty commit when meeting e-mail message that lacks a patch' '
+ git am --empty-commit=asis empty-commit.patch &&
+ test_path_is_missing .git/rebase-apply &&
-+ git show empty-commit --format="%B" >expected &&
++ {
++ git show empty-commit --format="%B" &&
++ echo "--" &&
++ git version | sed -e "s/^git version //" &&
++ echo
++ } >expected &&
+ git show HEAD --format="%B" >actual &&
-+ grep -f actual expected &&
++ test_cmp actual expected &&
+
+ git am --empty-commit=asis cover-letter.patch &&
+ test_path_is_missing .git/rebase-apply &&
-+ git show empty-commit --format="%B" >expected &&
++ {
++ echo "*** SUBJECT HERE ***" &&
++ echo &&
++ echo "*** BLURB HERE ***" &&
++ echo &&
++ echo "A U Thor (1):" &&
++ printf " " &&
++ git show empty-commit --format="%B" &&
++ echo "--" &&
++ git version | sed -e "s/^git version //" &&
++ echo
++ } >expected &&
+ git show HEAD --format="%B" >actual &&
-+ grep -f actual expected
++ test_cmp actual expected
+'
+
test_done
--
gitgitgadget