|
40 | 40 | #include "progress.h" |
41 | 41 | #include "commit-slab.h" |
42 | 42 | #include "advice.h" |
| 43 | +#include "utf8.h" |
43 | 44 |
|
44 | 45 | #include "commit-reach.h" |
45 | 46 | #include "range-diff.h" |
@@ -1055,17 +1056,8 @@ static int git_format_config(const char *var, const char *value, |
1055 | 1056 | return 0; |
1056 | 1057 | } |
1057 | 1058 | if (!strcmp(var, "format.commitlistformat")) { |
1058 | | - struct strbuf tmp = STRBUF_INIT; |
1059 | | - strbuf_init(&tmp, 0); |
1060 | | - if (value) |
1061 | | - strbuf_addstr(&tmp, value); |
1062 | | - else |
1063 | | - strbuf_addstr(&tmp, "log:[%(count)/%(total)] %s"); |
1064 | | - |
1065 | 1059 | FREE_AND_NULL(cfg->fmt_cover_letter_commit_list); |
1066 | | - git_config_string(&cfg->fmt_cover_letter_commit_list, var, tmp.buf); |
1067 | | - strbuf_release(&tmp); |
1068 | | - return 0; |
| 1060 | + return git_config_string(&cfg->fmt_cover_letter_commit_list, var, value); |
1069 | 1061 | } |
1070 | 1062 | if (!strcmp(var, "format.outputdirectory")) { |
1071 | 1063 | FREE_AND_NULL(cfg->config_output_directory); |
@@ -1373,22 +1365,26 @@ static void generate_commit_list_cover(FILE *cover_file, const char *format, |
1373 | 1365 | struct commit **list, int n) |
1374 | 1366 | { |
1375 | 1367 | struct strbuf commit_line = STRBUF_INIT; |
| 1368 | + struct strbuf wrapped_line = STRBUF_INIT; |
1376 | 1369 | struct pretty_print_context ctx = {0}; |
1377 | 1370 | struct rev_info rev = REV_INFO_INIT; |
1378 | 1371 |
|
1379 | | - strbuf_init(&commit_line, 0); |
1380 | 1372 | rev.total = n; |
1381 | 1373 | ctx.rev = &rev; |
1382 | | - for (int i = n - 1; i >= 0; i--) { |
1383 | | - rev.nr = n - i; |
1384 | | - repo_format_commit_message(the_repository, list[i], format, |
| 1374 | + for (int i = 1; i <= n; i++) { |
| 1375 | + rev.nr = i; |
| 1376 | + repo_format_commit_message(the_repository, list[n - i], format, |
1385 | 1377 | &commit_line, &ctx); |
1386 | | - fprintf(cover_file, "%s\n", commit_line.buf); |
| 1378 | + strbuf_add_wrapped_text(&wrapped_line, commit_line.buf, 0, 0, |
| 1379 | + MAIL_DEFAULT_WRAP); |
| 1380 | + fprintf(cover_file, "%s\n", wrapped_line.buf); |
1387 | 1381 | strbuf_reset(&commit_line); |
| 1382 | + strbuf_reset(&wrapped_line); |
1388 | 1383 | } |
1389 | 1384 | fprintf(cover_file, "\n"); |
1390 | 1385 |
|
1391 | 1386 | strbuf_release(&commit_line); |
| 1387 | + strbuf_release(&wrapped_line); |
1392 | 1388 | } |
1393 | 1389 |
|
1394 | 1390 | static void make_cover_letter(struct rev_info *rev, int use_separate_file, |
@@ -1449,6 +1445,11 @@ static void make_cover_letter(struct rev_info *rev, int use_separate_file, |
1449 | 1445 | generate_commit_list_cover(rev->diffopt.file, format, list, nr); |
1450 | 1446 | else if (!strcmp(format, "shortlog")) |
1451 | 1447 | generate_shortlog_cover_letter(&log, rev, list, nr); |
| 1448 | + else if (!strcmp(format, "modern")) |
| 1449 | + generate_commit_list_cover(rev->diffopt.file, "[%(count)/%(total)] %s", |
| 1450 | + list, nr); |
| 1451 | + else if (strchr(format, '%')) |
| 1452 | + generate_commit_list_cover(rev->diffopt.file, format, list, nr); |
1452 | 1453 | else |
1453 | 1454 | die(_("'%s' is not a valid format string"), format); |
1454 | 1455 |
|
@@ -2015,7 +2016,7 @@ int cmd_format_patch(int argc, |
2015 | 2016 | N_("print patches to standard out")), |
2016 | 2017 | OPT_BOOL(0, "cover-letter", &cover_letter, |
2017 | 2018 | N_("generate a cover letter")), |
2018 | | - OPT_STRING(0, "cover-letter-format", &cover_letter_fmt, N_("format-spec"), |
| 2019 | + OPT_STRING(0, "commit-list-format", &cover_letter_fmt, N_("format-spec"), |
2019 | 2020 | N_("format spec used for the commit list in the cover letter")), |
2020 | 2021 | OPT_BOOL(0, "numbered-files", &just_numbers, |
2021 | 2022 | N_("use simple number sequence for output file names")), |
@@ -2359,6 +2360,8 @@ int cmd_format_patch(int argc, |
2359 | 2360 | cover_letter_fmt = cfg.fmt_cover_letter_commit_list; |
2360 | 2361 | if (!cover_letter_fmt) |
2361 | 2362 | cover_letter_fmt = "shortlog"; |
| 2363 | + } else if (cover_letter == -1) { |
| 2364 | + cover_letter = 1; |
2362 | 2365 | } |
2363 | 2366 |
|
2364 | 2367 | if (cover_letter == -1) { |
|
0 commit comments