aboutsummaryrefslogtreecommitdiff
path: root/log-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-05-29 13:09:13 -0700
committerJunio C Hamano <gitster@pobox.com>2012-05-29 13:09:13 -0700
commit261ec7d02ae25ba1f5532645fa6fd790515bfa70 (patch)
tree7c9c68dd5cbef0aff748eaa40a0c88de0d970f4f /log-tree.c
parent12d7d150743acebe9684100e98979f2d0188114e (diff)
parent59f9b8a9a95cbcf4f6a5123cac04dc5073a8d0cc (diff)
downloadgit-261ec7d02ae25ba1f5532645fa6fd790515bfa70.tar.xz
Merge branch 'jk/ident-gecos-strbuf'
Fixes quite a lot of brokenness when ident information needs to be taken from the system and cleans up the code. By Jeff King * jk/ident-gecos-strbuf: (22 commits) format-patch: do not use bogus email addresses in message ids ident: reject bogus email addresses with IDENT_STRICT ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT format-patch: use GIT_COMMITTER_EMAIL in message ids ident: let callers omit name with fmt_indent ident: refactor NO_DATE flag in fmt_ident ident: reword empty ident error message format-patch: refactor get_patch_filename ident: trim whitespace from default name/email ident: use a dynamic strbuf in fmt_ident ident: use full dns names to generate email addresses ident: report passwd errors with a more friendly message drop length limitations on gecos-derived names and emails ident: don't write fallback username into git_default_name fmt_ident: drop IDENT_WARN_ON_NO_NAME code format-patch: use default email for generating message ids ident: trim trailing newline from /etc/mailname move git_default_* variables to ident.c move identity config parsing to ident.c fmt-merge-msg: don't use static buffer in record_person ...
Diffstat (limited to 'log-tree.c')
-rw-r--r--log-tree.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/log-tree.c b/log-tree.c
index 376d973176..c894930c18 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -299,19 +299,22 @@ static unsigned int digits_in_number(unsigned int number)
return result;
}
-void get_patch_filename(struct commit *commit, int nr, const char *suffix,
- struct strbuf *buf)
+void get_patch_filename(struct commit *commit, const char *subject, int nr,
+ const char *suffix, struct strbuf *buf)
{
int suffix_len = strlen(suffix) + 1;
int start_len = buf->len;
- strbuf_addf(buf, commit ? "%04d-" : "%d", nr);
- if (commit) {
+ strbuf_addf(buf, commit || subject ? "%04d-" : "%d", nr);
+ if (commit || subject) {
int max_len = start_len + FORMAT_PATCH_NAME_MAX - suffix_len;
struct pretty_print_context ctx = {0};
- ctx.date_mode = DATE_NORMAL;
- format_commit_message(commit, "%f", buf, &ctx);
+ if (subject)
+ strbuf_addstr(buf, subject);
+ else if (commit)
+ format_commit_message(commit, "%f", buf, &ctx);
+
if (max_len < buf->len)
strbuf_setlen(buf, max_len);
strbuf_addstr(buf, suffix);
@@ -384,8 +387,8 @@ void log_write_email_headers(struct rev_info *opt, struct commit *commit,
mime_boundary_leader, opt->mime_boundary);
extra_headers = subject_buffer;
- get_patch_filename(opt->numbered_files ? NULL : commit, opt->nr,
- opt->patch_suffix, &filename);
+ get_patch_filename(opt->numbered_files ? NULL : commit, NULL,
+ opt->nr, opt->patch_suffix, &filename);
snprintf(buffer, sizeof(buffer) - 1,
"\n--%s%s\n"
"Content-Type: text/x-patch;"