From: "Aleen via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Aleen 徐沛文" <pwxu@coremail.cn>, Aleen <aleen42@vip.qq.com>
Subject: [PATCH v7 0/2] am: support --empty=(die|drop|keep) option to handle empty patches
Date: Fri, 19 Nov 2021 05:04:56 +0000 [thread overview]
Message-ID: <pull.1076.v7.git.1637298298.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1076.v6.git.1637232636.gitgitgadget@gmail.com>
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.
----------------------------------------------------------------------------
Changes since v4:
1. rename the --empty-commit option to --empty.
2. rename three different strategies (die|skip|asis) to die, drop and keep
correspondingly.
----------------------------------------------------------------------------
Changes since v5:
1. throw an error when passing --empty option without value.
----------------------------------------------------------------------------
cc: René Scharfe l.s.r@web.de cc: Phillip Wood phillip.wood123@gmail.com cc:
Aleen 徐沛文 pwxu@coremail.cn
Aleen (2):
doc: git-format-patch: describe the option --always
am: support --empty=<option> to handle empty patches
Documentation/git-am.txt | 8 +++++
Documentation/git-format-patch.txt | 6 +++-
builtin/am.c | 55 +++++++++++++++++++++++++++---
po/bg.po | 2 +-
po/ca.po | 2 +-
po/de.po | 2 +-
po/el.po | 2 +-
po/es.po | 2 +-
po/fr.po | 2 +-
po/git.pot | 2 +-
po/id.po | 2 +-
po/it.po | 2 +-
po/ko.po | 2 +-
po/pl.po | 2 +-
po/pt_PT.po | 8 ++---
po/ru.po | 4 +--
po/sv.po | 2 +-
po/tr.po | 2 +-
po/vi.po | 2 +-
po/zh_CN.po | 9 +++--
po/zh_TW.po | 7 +++-
t/t4150-am.sh | 49 ++++++++++++++++++++++++++
22 files changed, 145 insertions(+), 29 deletions(-)
base-commit: ca35af825273b98fc8dc11527488952f5db8eb80
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1076%2Faleen42%2Fnext-v7
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1076/aleen42/next-v7
Pull-Request: https://github.com/gitgitgadget/git/pull/1076
Range-diff vs v6:
1: 9f1b3dd6d0b ! 1: d612bc49d57 doc: git-format-patch: describe the option --always
@@ Metadata
## Commit message ##
doc: git-format-patch: describe the option --always
+ This commit has described how to use '--always' option in the command
+ 'git-format-patch' to include patches for commits that emit no changes.
+
Signed-off-by: Aleen <aleen42@vip.qq.com>
## Documentation/git-format-patch.txt ##
2: 96d8573dc80 ! 2: 9e60e77c041 am: support --empty option to handle empty patches
@@ Metadata
Author: Aleen <aleen42@vip.qq.com>
## Commit message ##
- am: support --empty option to handle empty patches
+ am: support --empty=<option> to handle empty patches
+
+ Since that the command 'git-format-patch' can include patches of
+ commits that emit no changes, the 'git-am' command should also
+ support an option, named as '--empty', to specify how to handle
+ those empty patches. In this commit, we have implemented three
+ valid options ('die', 'drop' and 'keep').
Signed-off-by: Aleen <aleen42@vip.qq.com>
@@ Documentation/git-am.txt: OPTIONS
This flag will be passed down to 'git mailinfo' (see linkgit:git-mailinfo[1]).
+--empty-commit=(die|drop|keep)::
-+ The command usually errors out when seeing an input e-mail
-+ message that lacks a patch. When this option is set to
-+ 'drop', skip such an e-mail message without outputting error.
++ By default, or when the option is set to 'die', the command
++ errors out on an input e-mail message that lacks a patch. When
++ this option is set to 'drop', skip such an e-mail message instead.
+ When this option is set to 'keep', create an empty commit,
+ recording the contents of the e-mail message as its log.
-+ 'die' is specified by default.
+
-m::
--message-id::
@@ builtin/am.c: enum show_patch_type {
+enum empty_action {
+ DIE_EMPTY_COMMIT = 0, /* output errors */
-+ DROP_EMPTY_COMMIT, /* skip without outputting errors */
++ DROP_EMPTY_COMMIT, /* skip with a notice message, unless "--quiet" has been passed */
+ KEEP_EMPTY_COMMIT /* keep recording as empty commits */
+};
+
@@ builtin/am.c: static int am_option_parse_quoted_cr(const struct option *opt,
return 0;
}
-+static int am_option_parse_empty_commit(const struct option *opt,
++static int am_option_parse_empty(const struct option *opt,
+ const char *arg, int unset)
+{
+ int *opt_value = opt->value;
+
-+ if (unset || !strcmp(arg, "die"))
++ BUG_ON_OPT_NEG(unset);
++
++ if (!strcmp(arg, "die"))
+ *opt_value = DIE_EMPTY_COMMIT;
+ else if (!strcmp(arg, "drop"))
+ *opt_value = DROP_EMPTY_COMMIT;
@@ builtin/am.c: static int parse_mail(struct am_state *state, const char *mail)
strbuf_addstr(&msg, "\n\n");
strbuf_addbuf(&msg, &mi.log_message);
strbuf_stripspace(&msg, 0);
+@@ builtin/am.c: static void am_run(struct am_state *state, int resume)
+ while (state->cur <= state->last) {
+ const char *mail = am_path(state, msgnum(state));
+ int apply_status;
++ int to_keep;
+
+ reset_ident_date();
+
@@ builtin/am.c: static void am_run(struct am_state *state, int resume)
if (state->interactive && do_interactive(state))
goto next;
++ to_keep = 0;
+ if (is_empty_or_missing_file(am_path(state, "patch"))) {
-+ if (state->empty_type == DROP_EMPTY_COMMIT)
++ switch (state->empty_type) {
++ case DROP_EMPTY_COMMIT:
++ say(state, stdout, _("Skipping: %.*s"), linelen(state->msg), state->msg);
+ goto next;
-+ else if (state->empty_type == KEEP_EMPTY_COMMIT) {
-+ if (run_applypatch_msg_hook(state))
-+ exit(1);
-+ else
-+ goto commit;
-+ } else if (state->empty_type == DIE_EMPTY_COMMIT) {
++ break;
++ case KEEP_EMPTY_COMMIT:
++ to_keep = 1;
++ break;
++ case DIE_EMPTY_COMMIT:
+ printf_ln(_("Patch is empty."));
+ die_user_resolve(state);
++ break;
+ }
+ }
+
if (run_applypatch_msg_hook(state))
exit(1);
++ if (to_keep)
++ goto commit;
+
+ say(state, stdout, _("Applying: %.*s"), linelen(state->msg), state->msg);
@@ builtin/am.c: static void am_run(struct am_state *state, int resume)
die_user_resolve(state);
@@ builtin/am.c: int cmd_am(int argc, const char **argv, const char *prefix)
{ OPTION_STRING, 'S', "gpg-sign", &state.sign_commit, N_("key-id"),
N_("GPG-sign commits"),
PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
-+ { OPTION_CALLBACK, 0, "empty", &state.empty_type,
-+ "(die|drop|keep)",
-+ N_("specify how to handle empty patches"),
-+ PARSE_OPT_OPTARG, am_option_parse_empty_commit },
++ OPT_CALLBACK_F(0, "empty", &state.empty_type, "{drop,keep,die}",
++ N_("how to handle empty patches"),
++ PARSE_OPT_NONEG, am_option_parse_empty),
OPT_HIDDEN_BOOL(0, "rebasing", &state.rebasing,
N_("(internal use for git-rebase)")),
OPT_END()
+ ## po/bg.po ##
+@@ po/bg.po: msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr ""
+ "Индексът не е чист: кръпките не може да бъдат приложени (замърсени са: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Прилагане: %.*s"
+
+ ## po/ca.po ##
+@@ po/ca.po: msgstr "no s'ha pogut escriure el fitxer d'índex"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Índex brut: no es poden aplicar pedaços (bruts: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "S'està aplicant: %.*s"
+
+ ## po/de.po ##
+@@ po/de.po: msgstr "Konnte Index-Datei nicht schreiben."
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Geänderter Index: kann Patches nicht anwenden (geändert: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Wende an: %.*s"
+
+ ## po/el.po ##
+@@ po/el.po: msgstr "Να γίνει εφαρμογή; [y]es/[n]o/[e]dit/[v]iew patch/[a]ccep
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr ""
+
+-#: builtin/am.c:1749 builtin/am.c:1817
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr ""
+
+ ## po/es.po ##
+@@ po/es.po: msgstr "no es posible escribir el archivo índice"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Índice sucio: no se puede aplicar parches (sucio: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Aplicando: %.*s"
+
+ ## po/fr.po ##
+@@ po/fr.po: msgstr "impossible d'écrire le fichier d'index"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Index sale : impossible d'appliquer des patchs (sales : %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Application de %.*s"
+
+ ## po/git.pot ##
+@@ po/git.pot: msgstr ""
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr ""
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr ""
+
+ ## po/id.po ##
+@@ po/id.po: msgstr "tidak dapat menulis berkas indeks"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Indeks kotor: tidak dapat menerapkan tambalan (kotor: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Menerapkan: %.*s"
+
+ ## po/it.po ##
+@@ po/it.po: msgstr "impossibile scrivere il file indice"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Indice sporco: impossibile applicare le patch (elemento sporco: %s)"
+
+-#: builtin/am.c:1761 builtin/am.c:1829
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Applicazione in corso: %.*s"
+
+ ## po/ko.po ##
+@@ po/ko.po: msgstr "적용? 예[y]/아니오[n]/편집[e]/패치 보기[v]/모두 적용[a]:
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "변경된 인덱스: 패치를 적용할 수 없습니다 (dirty: %s)"
+
+-#: builtin/am.c:1808 builtin/am.c:1879
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "적용하는 중: %.*s"
+
+ ## po/pl.po ##
+@@ po/pl.po: msgstr "nie można zapisać pliku indeksu"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Brudny indeks: nie można zastosować łatek (brudny: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Stosowanie: %.*s"
+
+ ## po/pt_PT.po ##
+@@
+ # bisect | bisetar
+ # blame | blame
+ # blob object | objeto-blob
+-# branch | ramo
++# branch | ramo
+ # bug | bug
+ # bundle | conjunto
+ # bypass | desviar
+@@
+ # loose refs | refs soltas
+ # mark | marca
+ # master | master
+-# merge | junção
++# merge | junção
+ # mergetag | etiqueta-junção
+ # object | objeto
+ # object database | base dados de objeto
+@@
+ # token | token
+ # unset | desdefinir
+ # untrack | desmonitorizar
+-#
++#
+ #
+ msgid ""
+ msgstr ""
+@@ po/pt_PT.po: msgstr "incapaz escrever ficheiro de index"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Index sujo: incapaz aplicar patches (sujo: %s)"
+
+-#: builtin/am.c:1797 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "A aplicar: %.*s"
+
+ ## po/ru.po ##
+@@
+ # SOME DESCRIPTIVE TITLE.
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+ # This file is distributed under the same license as the PACKAGE package.
+-#
++#
+ # Translators:
+ # Alexander Golubev <fatzer2@gmail.com>, 2020
+ # Dimitriy Ryazantcev <DJm00n@mail.ru>, 2014-2021
+@@ po/ru.po: msgstr "не удалось записать индекс"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Индекс изменён: нельзя применять патчи (изменено: %s)"
+
+-#: builtin/am.c:1748 builtin/am.c:1816
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Применение: %.*s"
+
+ ## po/sv.po ##
+@@ po/sv.po: msgstr "kan inte skriva indexfil"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Smutsigt index: kan inte tillämpa patchar (smutsiga: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Tillämpar: %.*s"
+
+ ## po/tr.po ##
+@@ po/tr.po: msgstr "indeks dosyası yazılamıyor"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Kirli indeks: Yamalar uygulanamıyor (kirli: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Uygulanıyor: %.*s"
+
+ ## po/vi.po ##
+@@ po/vi.po: msgstr "không thể ghi tập tin lưu mục lục"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "Bảng mục lục bẩn: không thể áp dụng các miếng vá (bẩn: %s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "Áp dụng: %.*s"
+
+ ## po/zh_CN.po ##
+@@ po/zh_CN.po: msgstr "坏的索引文件 sha1 签名"
+ msgid "index uses %.4s extension, which we do not understand"
+ msgstr "索引使用不被支持的 %.4s 扩展"
+
+-#
++#
+ #: read-cache.c:1834
+ #, c-format
+ msgid "ignoring %.4s extension"
+@@ po/zh_CN.po: msgstr "无法写入索引文件"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "脏索引:不能应用补丁(脏文件:%s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "应用:%.*s"
+
++#: builtin/am.c:1818
++#, c-format
++msgid "Skipping: %.*s"
++msgstr "跳过:%.*s"
++
+ #: builtin/am.c:1815
+ msgid "No changes -- Patch already applied."
+ msgstr "没有变更 —— 补丁已经应用过。"
+
+ ## po/zh_TW.po ##
+@@ po/zh_TW.po: msgstr "無法寫入索引檔案"
+ msgid "Dirty index: cannot apply patches (dirty: %s)"
+ msgstr "髒索引:不能套用修補檔(髒檔案:%s)"
+
+-#: builtin/am.c:1798 builtin/am.c:1865
++#: builtin/am.c:1834 builtin/am.c:1902
+ #, c-format
+ msgid "Applying: %.*s"
+ msgstr "套用:%.*s"
+
++#: builtin/am.c:1818
++#, c-format
++msgid "Skipping: %.*s"
++msgstr "忽略:%.*s"
++
+ #: builtin/am.c:1815
+ msgid "No changes -- Patch already applied."
+ msgstr "沒有變更——修補檔已經套用過。"
+
## t/t4150-am.sh ##
@@ t/t4150-am.sh: test_expect_success setup '
@@ t/t4150-am.sh: test_expect_success setup '
+ git checkout -b empty-commit &&
+ 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 &&
++ : >empty.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 -C client am ../patch
'
-+test_expect_success 'still output error with --empty when meeting empty files' '
++test_expect_success 'An empty input file is error regardless of --empty option' '
+ test_must_fail git am --empty=drop empty.patch 2>actual &&
+ echo Patch format detection failed. >expected &&
+ test_cmp expected actual
+'
+
-+test_expect_success 'error when meeting e-mail message that lacks a patch by default' '
++test_expect_success 'invalid when passing the --empty option alone' '
+ git checkout empty-commit^ &&
++ test_must_fail git am --empty empty-commit.patch 2>err &&
++ echo "error: Invalid value for --empty: empty-commit.patch" >expected &&
++ test_cmp expected err
++'
++
++test_expect_success 'a message without a patch is an error (default)' '
++ test_when_finished "git am --abort || :" &&
+ test_must_fail git am empty-commit.patch >err &&
-+ test_path_is_dir .git/rebase-apply &&
-+ test_i18ngrep "Patch is empty." err &&
-+ rm -fr .git/rebase-apply &&
++ grep "Patch is empty" err &&
++ rm -fr .git/rebase-apply
++'
+
++test_expect_success 'a message without a patch is an error where an explicit "--empty=die" is given' '
++ test_when_finished "git am --abort || :" &&
+ test_must_fail git am --empty=die empty-commit.patch >err &&
-+ test_path_is_dir .git/rebase-apply &&
-+ test_i18ngrep "Patch is empty." err &&
-+ rm -fr .git/rebase-apply &&
-+
-+ test_must_fail git am --empty=die cover-letter.patch >err &&
-+ test_path_is_dir .git/rebase-apply &&
-+ test_i18ngrep "Patch is empty." err &&
++ grep "Patch is empty." err &&
+ rm -fr .git/rebase-apply
+'
+
-+test_expect_success 'skip without error when meeting e-mail message that lacks a patch' '
-+ git am --empty=drop empty-commit.patch >err &&
-+ test_path_is_missing .git/rebase-apply &&
++test_expect_success 'a message without a patch will be skipped when "--empty=drop" is given' '
++ git am --empty=drop empty-commit.patch >output &&
+ git rev-parse empty-commit^ >expected &&
+ git rev-parse HEAD >actual &&
+ test_cmp expected actual &&
-+
-+ git am --empty=drop cover-letter.patch >err &&
-+ test_path_is_missing .git/rebase-apply &&
-+ test_cmp_rev empty-commit^ HEAD
++ grep "Skipping: empty commit" output
+'
+
+test_expect_success 'record as an empty commit when meeting e-mail message that lacks a patch' '
+ git am --empty=keep empty-commit.patch &&
+ test_path_is_missing .git/rebase-apply &&
-+ {
-+ git show empty-commit --format="%B" &&
-+ echo "--" &&
-+ git version | sed -e "s/^git version //" &&
-+ echo
-+ } >expected &&
-+ git show HEAD --format="%B" >actual &&
-+ test_cmp actual expected &&
-+
-+ git am --empty=keep cover-letter.patch &&
-+ test_path_is_missing .git/rebase-apply &&
-+ {
-+ 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 &&
++ git show empty-commit --format="%s" >expected &&
++ git show HEAD --format="%s" >actual &&
+ test_cmp actual expected
+'
+
3: e907a2b2faa < -: ----------- am: throw an error when passing --empty option without value
--
gitgitgadget
next prev parent reply other threads:[~2021-11-19 5:05 UTC|newest]
Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-12 4:58 [PATCH 0/2] am: support --always option to am empty commits Aleen via GitGitGadget
2021-11-12 4:58 ` [PATCH 1/2] doc: git-format-patch: specify the option --always Aleen via GitGitGadget
2021-11-12 4:58 ` [PATCH 2/2] am: support --always option to am empty commits Aleen via GitGitGadget
2021-11-12 6:17 ` [PATCH 0/2] " René Scharfe
2021-11-12 6:42 ` Aleen
2021-11-12 6:47 ` Junio C Hamano
2021-11-12 7:10 ` Aleen 徐沛文
2021-11-12 15:28 ` René Scharfe
2021-11-12 16:08 ` Junio C Hamano
2021-11-12 6:53 ` [PATCH v2 0/4] am: support --allow-empty " Aleen via GitGitGadget
2021-11-12 6:53 ` [PATCH v2 1/4] doc: git-format-patch: specify the option --always Aleen via GitGitGadget
2021-11-12 22:17 ` Junio C Hamano
2021-11-12 6:53 ` [PATCH v2 2/4] am: support --always option to am empty commits Aleen via GitGitGadget
2021-11-12 22:23 ` Junio C Hamano
2021-11-12 6:53 ` [PATCH v2 3/4] test: am: add the case when not passing the --always option Aleen via GitGitGadget
2021-11-12 6:54 ` [PATCH v2 4/4] chore: am: rename the --always option to --allow-empty Aleen via GitGitGadget
2021-11-15 10:39 ` [PATCH v3 0/2] am: support --empty-commit=(die|skip|asis) option to am empty commits Aleen via GitGitGadget
2021-11-15 10:39 ` [PATCH v3 1/2] doc: git-format-patch: describe the option --always Aleen via GitGitGadget
2021-11-15 10:39 ` [PATCH v3 2/2] am: support --empty-commit option to handle empty patches Aleen via GitGitGadget
2021-11-15 11:13 ` Aleen 徐沛文
2021-11-16 5:18 ` [PATCH v4 0/2] am: support --empty-commit=(die|skip|asis) option to am empty commits Aleen via GitGitGadget
2021-11-16 5:18 ` [PATCH v4 1/2] doc: git-format-patch: describe the option --always Aleen via GitGitGadget
2021-11-16 5:18 ` [PATCH v4 2/2] am: support --empty-commit option to handle empty patches Aleen via GitGitGadget
2021-11-16 10:07 ` Phillip Wood
2021-11-16 10:31 ` Aleen 徐沛文
2021-11-17 8:39 ` Junio C Hamano
2021-11-17 9:33 ` [PATCH v5 0/2] am: support --empty-commit=(die|skip|asis) option to am empty commits Aleen via GitGitGadget
2021-11-17 9:33 ` [PATCH v5 1/2] doc: git-format-patch: describe the option --always Aleen via GitGitGadget
2021-11-17 9:33 ` [PATCH v5 2/2] am: support --empty option to handle empty patches Aleen via GitGitGadget
2021-11-18 10:50 ` [PATCH v6 0/3] am: support --empty=(die|drop|keep) " Aleen via GitGitGadget
2021-11-18 10:50 ` [PATCH v6 1/3] doc: git-format-patch: describe the option --always Aleen via GitGitGadget
2021-11-18 10:50 ` [PATCH v6 2/3] am: support --empty option to handle empty patches Aleen via GitGitGadget
2021-11-19 0:56 ` Junio C Hamano
2021-11-19 10:33 ` Bagas Sanjaya
2021-11-19 12:10 ` Ævar Arnfjörð Bjarmason
2021-11-19 12:20 ` Eric Sunshine
2021-11-19 16:49 ` Junio C Hamano
2021-11-19 16:46 ` Junio C Hamano
2021-11-18 10:50 ` [PATCH v6 3/3] am: throw an error when passing --empty option without value Aleen via GitGitGadget
2021-11-19 1:13 ` Junio C Hamano
2021-11-19 2:11 ` Aleen 徐沛文
2021-11-18 23:47 ` [PATCH v6 0/3] am: support --empty=(die|drop|keep) option to handle empty patches Junio C Hamano
2021-11-19 1:45 ` Aleen 徐沛文
2021-11-19 5:46 ` Junio C Hamano
2021-11-19 7:23 ` Aleen 徐沛文
2021-11-19 7:25 ` =?gb18030?B?QWxlZW4=?=
2021-11-19 16:54 ` Junio C Hamano
2021-11-19 17:14 ` Aleen 徐沛文
2021-11-19 19:25 ` Junio C Hamano
2021-11-22 11:57 ` Johannes Schindelin
2021-11-19 4:16 ` Aleen 徐沛文
2021-11-19 5:04 ` Aleen via GitGitGadget [this message]
2021-11-19 5:04 ` [PATCH v7 1/2] doc: git-format-patch: describe the option --always Aleen via GitGitGadget
2021-11-19 5:04 ` [PATCH v7 2/2] am: support --empty=<option> to handle empty patches Aleen via GitGitGadget
2021-11-19 22:50 ` Junio C Hamano
2021-11-19 23:07 ` Junio C Hamano
2021-11-22 6:46 ` [PATCH v8 0/2] am: support --empty=(die|drop|keep) option " Aleen via GitGitGadget
2021-11-22 6:46 ` [PATCH v8 1/2] doc: git-format-patch: describe the option --always Aleen via GitGitGadget
2021-11-22 6:46 ` [PATCH v8 2/2] am: support --empty=<option> to handle empty patches Aleen via GitGitGadget
2021-11-22 7:06 ` Junio C Hamano
2021-11-22 7:19 ` Aleen 徐沛文
2021-11-22 7:02 ` [PATCH v9 0/2] am: support --empty=(die|drop|keep) option " Aleen via GitGitGadget
2021-11-22 7:02 ` [PATCH v9 1/2] doc: git-format-patch: describe the option --always Aleen 徐沛文 via GitGitGadget
2021-11-22 7:02 ` [PATCH v9 2/2] am: support --empty=<option> to handle empty patches Aleen 徐沛文 via GitGitGadget
2021-11-22 7:04 ` Aleen 徐沛文
2021-11-22 7:51 ` [PATCH v10 0/2] am: support --empty=(die|drop|keep) option " Aleen via GitGitGadget
2021-11-22 7:51 ` [PATCH v10 1/2] doc: git-format-patch: describe the option --always Aleen via GitGitGadget
2021-11-22 12:00 ` Johannes Schindelin
2021-11-23 1:25 ` Aleen 徐沛文
2021-11-23 12:30 ` Johannes Schindelin
2021-11-22 7:51 ` [PATCH v10 2/2] am: support --empty=<option> to handle empty patches Aleen via GitGitGadget
2021-11-23 15:26 ` [PATCH v11 0/2] am: support --empty=(die|drop|keep) option " Aleen via GitGitGadget
2021-11-23 15:26 ` [PATCH v11 1/2] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-11-23 16:12 ` Johannes Schindelin
2021-11-23 22:02 ` Junio C Hamano
2021-11-23 15:26 ` [PATCH v11 2/2] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-11-26 20:14 ` Elijah Newren
2021-11-29 9:19 ` Aleen 徐沛文
2021-11-29 10:00 ` Aleen 徐沛文
2021-11-29 17:10 ` Elijah Newren
2021-11-30 5:45 ` [PATCH v12 3/3] am: support --allow-empty to record specific " Aleen 徐沛文
2021-11-29 18:17 ` [PATCH v11 2/2] am: support --empty=<option> to handle " Junio C Hamano
2021-11-29 18:57 ` Elijah Newren
2021-11-30 5:37 ` [PATCH v12 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option " Aleen via GitGitGadget
2021-11-30 5:37 ` [PATCH v12 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-11-30 5:37 ` [PATCH v12 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-11-30 5:37 ` [PATCH v12 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
2021-11-30 7:21 ` Junio C Hamano
2021-11-30 9:55 ` [PATCH v13 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option to handle " Aleen via GitGitGadget
2021-11-30 9:55 ` [PATCH v13 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-11-30 9:55 ` [PATCH v13 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-11-30 9:55 ` [PATCH v13 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
2021-12-01 3:37 ` [PATCH v14 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option to handle " Aleen via GitGitGadget
2021-12-01 3:37 ` [PATCH v14 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-12-01 3:37 ` [PATCH v14 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-12-03 22:30 ` Johannes Schindelin
2021-12-01 3:37 ` [PATCH v14 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
2021-12-02 0:58 ` Junio C Hamano
2021-12-06 1:35 ` Aleen 徐沛文
2021-12-06 9:41 ` [PATCH v15 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option to handle " Aleen via GitGitGadget
2021-12-06 9:41 ` [PATCH v15 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-12-06 9:41 ` [PATCH v15 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-12-06 9:41 ` [PATCH v15 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
2021-12-07 5:01 ` [PATCH v16 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option to handle " Aleen via GitGitGadget
2021-12-07 5:01 ` [PATCH v16 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-12-07 5:01 ` [PATCH v16 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-12-07 5:01 ` [PATCH v16 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
2021-12-07 8:31 ` [PATCH v17 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option to handle " Aleen via GitGitGadget
2021-12-07 8:31 ` [PATCH v17 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-12-07 8:31 ` [PATCH v17 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-12-07 18:12 ` Junio C Hamano
2021-12-07 8:31 ` [PATCH v17 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
2021-12-07 18:23 ` Junio C Hamano
2021-12-07 18:24 ` [PATCH v17 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option to handle " Junio C Hamano
2021-12-08 5:05 ` [PATCH v18 " Aleen via GitGitGadget
2021-12-08 5:05 ` [PATCH v18 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-12-08 5:05 ` [PATCH v18 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-12-08 5:05 ` [PATCH v18 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
2021-12-08 6:22 ` Junio C Hamano
2021-12-08 6:46 ` Aleen 徐沛文
2021-12-08 11:32 ` Junio C Hamano
2021-12-09 7:25 ` [PATCH v19 0/3] am: support --empty=(die|drop|keep) option and --allow-empty option to handle " Aleen via GitGitGadget
2021-12-09 7:25 ` [PATCH v19 1/3] doc: git-format-patch: describe the option --always 徐沛文 (Aleen) via GitGitGadget
2021-12-09 9:28 ` Bagas Sanjaya
2021-12-10 1:26 ` Aleen 徐沛文
2021-12-10 6:50 ` Bagas Sanjaya
2021-12-11 9:22 ` Junio C Hamano
2021-12-09 7:25 ` [PATCH v19 2/3] am: support --empty=<option> to handle empty patches 徐沛文 (Aleen) via GitGitGadget
2021-12-09 7:25 ` [PATCH v19 3/3] am: support --allow-empty to record specific " 徐沛文 (Aleen) via GitGitGadget
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1076.v7.git.1637298298.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=aleen42@vip.qq.com \
--cc=git@vger.kernel.org \
--cc=pwxu@coremail.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).