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
* 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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.