]> git.ipfire.org Git - thirdparty/git.git/blobdiff - pretty.c
Merge tag 'l10n-2.25.0-rnd1' of git://github.com/git-l10n/git-po
[thirdparty/git.git] / pretty.c
index 93eb6e837071a3e54437a92c0e2338e1ce1ef6f4..305e903192a7ae4fb125090436130f434bd46e7c 100644 (file)
--- a/pretty.c
+++ b/pretty.c
@@ -20,6 +20,7 @@ static struct cmt_fmt_map {
        int is_tformat;
        int expand_tabs_in_log;
        int is_alias;
+       enum date_mode_type default_date_mode_type;
        const char *user_format;
 } *commit_formats;
 static size_t builtin_formats_len;
@@ -97,7 +98,9 @@ static void setup_commit_formats(void)
                { "mboxrd",     CMIT_FMT_MBOXRD,        0,      0 },
                { "fuller",     CMIT_FMT_FULLER,        0,      8 },
                { "full",       CMIT_FMT_FULL,          0,      8 },
-               { "oneline",    CMIT_FMT_ONELINE,       1,      0 }
+               { "oneline",    CMIT_FMT_ONELINE,       1,      0 },
+               { "reference",  CMIT_FMT_USERFORMAT,    1,      0,
+                       0, DATE_SHORT, "%C(auto)%h (%s, %ad)" },
                /*
                 * Please update $__git_log_pretty_formats in
                 * git-completion.bash when you add new formats.
@@ -181,6 +184,8 @@ void get_commit_format(const char *arg, struct rev_info *rev)
        rev->commit_format = commit_format->format;
        rev->use_terminator = commit_format->is_tformat;
        rev->expand_tabs_in_log_default = commit_format->expand_tabs_in_log;
+       if (!rev->date_mode_explicit && commit_format->default_date_mode_type)
+               rev->date_mode.type = commit_format->default_date_mode_type;
        if (commit_format->format == CMIT_FMT_USERFORMAT) {
                save_user_format(rev, commit_format->user_format,
                                 commit_format->is_tformat);
@@ -738,6 +743,9 @@ static size_t format_person_part(struct strbuf *sb, char part,
        case 'I':       /* date, ISO 8601 strict */
                strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(ISO8601_STRICT)));
                return placeholder_len;
+       case 's':
+               strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(SHORT)));
+               return placeholder_len;
        }
 
 skip:
@@ -1617,14 +1625,14 @@ void repo_format_commit_message(struct repository *r,
                                const char *format, struct strbuf *sb,
                                const struct pretty_print_context *pretty_ctx)
 {
-       struct format_commit_context context;
+       struct format_commit_context context = {
+               .commit = commit,
+               .pretty_ctx = pretty_ctx,
+               .wrap_start = sb->len
+       };
        const char *output_enc = pretty_ctx->output_encoding;
        const char *utf8 = "UTF-8";
 
-       memset(&context, 0, sizeof(context));
-       context.commit = commit;
-       context.pretty_ctx = pretty_ctx;
-       context.wrap_start = sb->len;
        /*
         * convert a commit message to UTF-8 first
         * as far as 'format_commit_item' assumes it in UTF-8