mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
![Jeff King](/assets/img/avatar_default.png)
When pretty-printing a commit in the email format, we have to fill in the "after subject" field of the pretty_print_context with any extra headers the user provided (e.g., from "--to" or "--cc" options) plus any special MIME headers. We return an out-pointer that sometimes points to a newly heap-allocated string and sometimes not. To avoid leaking, we store the allocated version in a buffer with static lifetime, which is ugly. Worse, as we extend the header feature, we'll end up having to repeat this ugly pattern. Instead, let's have our out-pointer pass ownership back to the caller, and duplicate the string when necessary. This does mean one extra allocation per commit when you use extra headers, but in the context of format-patch which is showing diffs, I don't think that's even measurable. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
42 lines
1.3 KiB
C
42 lines
1.3 KiB
C
#ifndef LOG_TREE_H
|
|
#define LOG_TREE_H
|
|
|
|
struct rev_info;
|
|
|
|
struct log_info {
|
|
struct commit *commit, *parent;
|
|
};
|
|
|
|
struct decoration_filter {
|
|
struct string_list *include_ref_pattern;
|
|
struct string_list *exclude_ref_pattern;
|
|
struct string_list *exclude_ref_config_pattern;
|
|
};
|
|
|
|
struct decoration_options {
|
|
char *prefix;
|
|
char *suffix;
|
|
char *separator;
|
|
char *pointer;
|
|
char *tag;
|
|
};
|
|
|
|
int parse_decorate_color_config(const char *var, const char *slot_name, const char *value);
|
|
int log_tree_diff_flush(struct rev_info *);
|
|
int log_tree_commit(struct rev_info *, struct commit *);
|
|
void show_log(struct rev_info *opt);
|
|
void format_decorations(struct strbuf *sb, const struct commit *commit,
|
|
int use_color, const struct decoration_options *opts);
|
|
void show_decorations(struct rev_info *opt, struct commit *commit);
|
|
void log_write_email_headers(struct rev_info *opt, struct commit *commit,
|
|
char **extra_headers_p,
|
|
int *need_8bit_cte_p,
|
|
int maybe_multipart);
|
|
void load_ref_decorations(struct decoration_filter *filter, int flags);
|
|
|
|
void fmt_output_commit(struct strbuf *, struct commit *, struct rev_info *);
|
|
void fmt_output_subject(struct strbuf *, const char *subject, struct rev_info *);
|
|
void fmt_output_email_subject(struct strbuf *, struct rev_info *);
|
|
|
|
#endif
|