зеркало из https://github.com/microsoft/git.git
format_note(): simplify API
We either stuff the notes message without modification for %N userformat, or format it for human consumption. Using two bits is an overkill that does not benefit anybody. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
e297cf5aff
Коммит
76141e2e62
13
notes.c
13
notes.c
|
@ -1204,10 +1204,11 @@ void free_notes(struct notes_tree *t)
|
|||
* If the given notes_tree is NULL, the internal/default notes_tree will be
|
||||
* used instead.
|
||||
*
|
||||
* 'flags' is a bitwise combination of the flags for format_display_notes.
|
||||
* (raw != 0) gives the %N userformat; otherwise, the note message is given
|
||||
* for human consumption.
|
||||
*/
|
||||
static void format_note(struct notes_tree *t, const unsigned char *object_sha1,
|
||||
struct strbuf *sb, const char *output_encoding, int flags)
|
||||
struct strbuf *sb, const char *output_encoding, int raw)
|
||||
{
|
||||
static const char utf8[] = "utf-8";
|
||||
const unsigned char *sha1;
|
||||
|
@ -1244,7 +1245,7 @@ static void format_note(struct notes_tree *t, const unsigned char *object_sha1,
|
|||
if (msglen && msg[msglen - 1] == '\n')
|
||||
msglen--;
|
||||
|
||||
if (flags & NOTES_SHOW_HEADER) {
|
||||
if (!raw) {
|
||||
const char *ref = t->ref;
|
||||
if (!ref || !strcmp(ref, GIT_NOTES_DEFAULT_REF)) {
|
||||
strbuf_addstr(sb, "\nNotes:\n");
|
||||
|
@ -1260,7 +1261,7 @@ static void format_note(struct notes_tree *t, const unsigned char *object_sha1,
|
|||
for (msg_p = msg; msg_p < msg + msglen; msg_p += linelen + 1) {
|
||||
linelen = strchrnul(msg_p, '\n') - msg_p;
|
||||
|
||||
if (flags & NOTES_INDENT)
|
||||
if (!raw)
|
||||
strbuf_addstr(sb, " ");
|
||||
strbuf_add(sb, msg_p, linelen);
|
||||
strbuf_addch(sb, '\n');
|
||||
|
@ -1270,13 +1271,13 @@ static void format_note(struct notes_tree *t, const unsigned char *object_sha1,
|
|||
}
|
||||
|
||||
void format_display_notes(const unsigned char *object_sha1,
|
||||
struct strbuf *sb, const char *output_encoding, int flags)
|
||||
struct strbuf *sb, const char *output_encoding, int raw)
|
||||
{
|
||||
int i;
|
||||
assert(display_notes_trees);
|
||||
for (i = 0; display_notes_trees[i]; i++)
|
||||
format_note(display_notes_trees[i], object_sha1, sb,
|
||||
output_encoding, flags);
|
||||
output_encoding, raw);
|
||||
}
|
||||
|
||||
int copy_note(struct notes_tree *t,
|
||||
|
|
6
notes.h
6
notes.h
|
@ -237,10 +237,6 @@ void prune_notes(struct notes_tree *t, int flags);
|
|||
*/
|
||||
void free_notes(struct notes_tree *t);
|
||||
|
||||
/* Flags controlling how notes are formatted */
|
||||
#define NOTES_SHOW_HEADER 1
|
||||
#define NOTES_INDENT 2
|
||||
|
||||
struct string_list;
|
||||
|
||||
struct display_notes_opt {
|
||||
|
@ -274,7 +270,7 @@ void init_display_notes(struct display_notes_opt *opt);
|
|||
* You *must* call init_display_notes() before using this function.
|
||||
*/
|
||||
void format_display_notes(const unsigned char *object_sha1,
|
||||
struct strbuf *sb, const char *output_encoding, int flags);
|
||||
struct strbuf *sb, const char *output_encoding, int raw);
|
||||
|
||||
/*
|
||||
* Load the notes tree from each ref listed in 'refs'. The output is
|
||||
|
|
5
pretty.c
5
pretty.c
|
@ -1035,7 +1035,7 @@ static size_t format_commit_one(struct strbuf *sb, const char *placeholder,
|
|||
case 'N':
|
||||
if (c->pretty_ctx->show_notes) {
|
||||
format_display_notes(commit->object.sha1, sb,
|
||||
get_log_output_encoding(), 0);
|
||||
get_log_output_encoding(), 1);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -1419,8 +1419,7 @@ void pretty_print_commit(const struct pretty_print_context *pp,
|
|||
strbuf_addch(sb, '\n');
|
||||
|
||||
if (pp->show_notes)
|
||||
format_display_notes(commit->object.sha1, sb, encoding,
|
||||
NOTES_SHOW_HEADER | NOTES_INDENT);
|
||||
format_display_notes(commit->object.sha1, sb, encoding, 0);
|
||||
|
||||
free(reencoded);
|
||||
}
|
||||
|
|
|
@ -2236,7 +2236,7 @@ static int commit_match(struct commit *commit, struct rev_info *opt)
|
|||
if (!buf.len)
|
||||
strbuf_addstr(&buf, commit->buffer);
|
||||
format_display_notes(commit->object.sha1, &buf,
|
||||
get_log_output_encoding(), 0);
|
||||
get_log_output_encoding(), 1);
|
||||
}
|
||||
|
||||
/* Find either in the commit object, or in the temporary */
|
||||
|
|
Загрузка…
Ссылка в новой задаче