From: Denton Liu <liu.denton@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v2 0/2] format-patch: teach format.notes config option
Date: Wed, 8 May 2019 11:02:08 -0400 [thread overview]
Message-ID: <cover.1557327652.git.liu.denton@gmail.com> (raw)
In-Reply-To: <cover.1556388260.git.liu.denton@gmail.com>
Hi Junio,
Thanks for the review. I made format.notes accept one (or more) refs
now.
Changes since v1:
* Made format.notes accept a notes ref instead of a boolean
Denton Liu (2):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
Documentation/config/format.txt | 13 ++++++
Documentation/git-format-patch.txt | 7 ++-
builtin/log.c | 18 +++++++-
t/t4014-format-patch.sh | 70 ++++++++++++++++++++++++++++++
4 files changed, 106 insertions(+), 2 deletions(-)
Range-diff against v1:
1: 48b6331d75 = 1: 4c3535f25b git-format-patch.txt: document --no-notes option
2: 1338045be4 ! 2: fe674bf63e format-patch: teach format.notes config option
@@ -8,8 +8,9 @@
that they may forget to include it and generate a patch series without
notes.
- Teach git-format-patch the `format.notes` config option where if its
- value is true, notes will automatically be appended. This option is
+ Teach git-format-patch the `format.notes` config option its value is a
+ notes ref that will be automatically be appended. The special value of
+ "standard" can be used to specify the standard notes. This option is
overridable with the `--no-notes` option in case a user wishes not to
append notes.
@@ -24,8 +25,17 @@
format-patch by default.
+
+format.notes::
-+ A boolean value which lets you enable the `--notes` option of
-+ format-patch by default.
++ A ref which specifies where to get the notes (see
++ linkgit:git-notes[1]) that are appended for the commit after the
++ three-dash line.
+++
++If the special value of "standard" is specified, then the standard notes
++ref is used (i.e. the notes ref used by `git notes` when no `--ref`
++argument is specified). If one wishes to use the ref
++`ref/notes/standard`, please use that literal instead.
+++
++This configuration can be specified multiple times in order to allow
++multiple notes refs to be included.
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
--- a/Documentation/git-format-patch.txt
@@ -45,32 +55,45 @@
--- a/builtin/log.c
+++ b/builtin/log.c
@@
- static const char *signature_file;
- static int config_cover_letter;
- static const char *config_output_directory;
-+static int show_notes;
- enum {
- COVER_UNSET,
+ static int git_format_config(const char *var, const char *value, void *cb)
+ {
++ struct rev_info *rev = cb;
++
+ if (!strcmp(var, "format.headers")) {
+ if (!value)
+ die(_("format.headers without value"));
@@
from = NULL;
return 0;
}
+ if (!strcmp(var, "format.notes")) {
-+ show_notes = git_config_bool(var, value);
++ struct strbuf buf = STRBUF_INIT;
++
++ rev->show_notes = 1;
++ if (!strcmp(value, "standard"))
++ rev->notes_opt.use_default_notes = 1;
++ else {
++ strbuf_addstr(&buf, value);
++ expand_notes_ref(&buf);
++ string_list_append(&rev->notes_opt.extra_notes_refs,
++ strbuf_detach(&buf, NULL));
++ }
+ return 0;
+ }
return git_log_config(var, value, cb);
}
@@
- rev.max_parents = 1;
- rev.diffopt.flags.recursive = 1;
- rev.subject_prefix = fmt_patch_subject_prefix;
-+ rev.show_notes = show_notes;
- memset(&s_r_opt, 0, sizeof(s_r_opt));
- s_r_opt.def = "HEAD";
- s_r_opt.revarg_opt = REVARG_COMMITTISH;
+ extra_to.strdup_strings = 1;
+ extra_cc.strdup_strings = 1;
+ init_log_defaults();
+- git_config(git_format_config, NULL);
+ repo_init_revisions(the_repository, &rev, prefix);
++ git_config(git_format_config, &rev);
+ rev.commit_format = CMIT_FMT_EMAIL;
+ rev.expand_tabs_in_log_default = 0;
+ rev.verbose_header = 1;
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
--- a/t/t4014-format-patch.sh
@@ -94,7 +117,7 @@
+ git format-patch -1 --stdout --no-notes --notes >out &&
+ grep "notes config message" out &&
+
-+ test_config format.notes true &&
++ test_config format.notes standard &&
+ git format-patch -1 --stdout >out &&
+ grep "notes config message" out &&
+ git format-patch -1 --stdout --notes >out &&
@@ -106,6 +129,48 @@
+ git format-patch -1 --stdout --no-notes --notes >out &&
+ grep "notes config message" out
+'
++
++test_expect_success 'format-patch with multiple notes refs' '
++ git notes --ref note1 add -m "this is note 1" HEAD &&
++ test_when_finished git notes --ref note1 remove HEAD &&
++ git notes --ref note2 add -m "this is note 2" HEAD &&
++ test_when_finished git notes --ref note2 remove HEAD &&
++
++ git format-patch -1 --stdout >out &&
++ ! grep "this is note 1" out &&
++ ! grep "this is note 2" out &&
++ git format-patch -1 --stdout --notes=note1 >out &&
++ grep "this is note 1" out &&
++ ! grep "this is note 2" out &&
++ git format-patch -1 --stdout --notes=note2 >out &&
++ ! grep "this is note 1" out &&
++ grep "this is note 2" out &&
++ git format-patch -1 --stdout --notes=note1 --notes=note2 >out &&
++ grep "this is note 1" out &&
++ grep "this is note 2" out &&
++
++ test_config format.notes note1 &&
++ git format-patch -1 --stdout >out &&
++ grep "this is note 1" out &&
++ ! grep "this is note 2" out &&
++ git format-patch -1 --stdout --no-notes >out &&
++ ! grep "this is note 1" out &&
++ ! grep "this is note 2" out &&
++ git format-patch -1 --stdout --notes=note2 >out &&
++ grep "this is note 1" out &&
++ grep "this is note 2" out &&
++ git format-patch -1 --stdout --no-notes --notes=note2 >out &&
++ ! grep "this is note 1" out &&
++ grep "this is note 2" out &&
++
++ git config --add format.notes note2 &&
++ git format-patch -1 --stdout >out &&
++ grep "this is note 1" out &&
++ grep "this is note 2" out &&
++ git format-patch -1 --stdout --no-notes >out &&
++ ! grep "this is note 1" out &&
++ ! grep "this is note 2" out
++'
+
echo "fatal: --name-only does not make sense" > expect.name-only
echo "fatal: --name-status does not make sense" > expect.name-status
--
2.21.0.1049.geb646f7864
next prev parent reply other threads:[~2019-05-08 15:02 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-27 19:25 [PATCH 0/2] format-patch: teach format.notes config option Denton Liu
2019-04-27 19:25 ` [PATCH 1/2] git-format-patch.txt: document --no-notes option Denton Liu
2019-04-27 19:25 ` [PATCH 2/2] format-patch: teach format.notes config option Denton Liu
2019-05-07 4:43 ` Junio C Hamano
2019-05-08 15:02 ` Denton Liu [this message]
2019-05-08 15:02 ` [PATCH v2 1/2] git-format-patch.txt: document --no-notes option Denton Liu
2019-05-08 15:02 ` [PATCH v2 2/2] format-patch: teach format.notes config option Denton Liu
2019-05-08 17:18 ` Beat Bolli
2019-05-08 17:31 ` Denton Liu
2019-05-08 17:52 ` Beat Bolli
2019-05-10 18:37 ` [PATCH v3 0/2] " Denton Liu
2019-05-10 18:37 ` [PATCH v3 1/2] git-format-patch.txt: document --no-notes option Denton Liu
2019-05-10 18:37 ` [PATCH v3 2/2] format-patch: teach format.notes config option Denton Liu
2019-05-13 2:44 ` Junio C Hamano
2019-05-14 17:01 ` Denton Liu
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=cover.1557327652.git.liu.denton@gmail.com \
--to=liu.denton@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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.