From: Ramkumar Ramachandra <artagnon@gmail.com>
To: Git List <git@vger.kernel.org>
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>
Subject: [PATCH v2 14/15] pretty: introduce get_pretty_userformat
Date: Sun, 9 Jun 2013 23:24:33 +0530 [thread overview]
Message-ID: <1370800474-8940-15-git-send-email-artagnon@gmail.com> (raw)
In-Reply-To: <1370800474-8940-1-git-send-email-artagnon@gmail.com>
This helper function is intended to be used by callers implementing
--pretty themselves; it parses pretty.* configuration variables
recursively and hands the user-defined format back to the caller. No
builtins are supported, as CMT_FMT_* are really only useful when
displaying commits. Callers might like to define their own builtins in
the future.
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
commit.h | 1 +
pretty.c | 25 +++++++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/commit.h b/commit.h
index 38dc0c0..7755282 100644
--- a/commit.h
+++ b/commit.h
@@ -113,6 +113,7 @@ extern char *logmsg_reencode(const struct commit *commit,
const char *output_encoding);
extern void logmsg_free(char *msg, const struct commit *commit);
extern void get_commit_format(const char *arg, struct rev_info *);
+extern const char *get_pretty_userformat(const char *arg);
extern const char *format_subject(struct strbuf *sb, const char *msg,
const char *line_separator);
extern void userformat_find_requirements(const char *fmt, struct userformat_want *w);
diff --git a/pretty.c b/pretty.c
index 28c0a72..70e4e44 100644
--- a/pretty.c
+++ b/pretty.c
@@ -174,6 +174,31 @@ void get_commit_format(const char *arg, struct rev_info *rev)
}
/*
+ * Function to parse --pretty string, lookup pretty.* configuration
+ * variables and return the format string, assuming no builtin
+ * formats. Not limited to commits, unlike get_commit_format().
+ */
+const char *get_pretty_userformat(const char *arg)
+{
+ struct cmt_fmt_map *commit_format;
+
+ if (!arg || !*arg)
+ return NULL;
+
+ if (!prefixcmp(arg, "format:") || !prefixcmp(arg, "tformat:"))
+ return xstrdup(strchr(arg, ':' + 1));
+
+ if (strchr(arg, '%'))
+ return xstrdup(arg);
+
+ commit_format = find_commit_format(arg);
+ if (!commit_format || commit_format->format != CMIT_FMT_USERFORMAT)
+ die("invalid --pretty format: %s", arg);
+
+ return xstrdup(commit_format->user_format);
+}
+
+/*
* Generic support for pretty-printing the header
*/
static int get_one_line(const char *msg)
--
1.8.3.247.g485169c
next prev parent reply other threads:[~2013-06-09 17:57 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-09 17:54 [PATCH v2 00/15] Towards a more awesome git branch Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 01/15] for-each-ref, quote: convert *_quote_print -> *_quote_buf Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 02/15] for-each-ref: don't print out elements directly Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 03/15] tar-tree: remove dependency on sq_quote_print() Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 04/15] quote: remove sq_quote_print() Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 05/15] pretty: extend pretty_print_context with callback Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 06/15] pretty: limit recursion in format_commit_one() Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 07/15] pretty: allow passing NULL commit to format_commit_message() Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 08/15] for-each-ref: get --pretty using format_commit_message() Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 09/15] for-each-ref: teach verify_format() about pretty's syntax Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 10/15] for-each-ref: introduce format specifier %>(*) and %<(*) Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 11/15] for-each-ref: introduce %(HEAD) marker Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 12/15] for-each-ref: introduce %(upstream:track[short]) Ramkumar Ramachandra
2013-06-09 17:54 ` [PATCH v2 13/15] for-each-ref: improve responsiveness of %(upstream:track) Ramkumar Ramachandra
2013-06-09 17:54 ` Ramkumar Ramachandra [this message]
2013-06-09 17:54 ` [PATCH v2 15/15] for-each-ref: use get_pretty_userformat in --pretty Ramkumar Ramachandra
2013-06-10 1:25 ` [PATCH v2 00/15] Towards a more awesome git branch Duy Nguyen
2013-06-10 12:08 ` Ramkumar Ramachandra
2013-06-10 16:02 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1370800474-8940-15-git-send-email-artagnon@gmail.com \
--to=artagnon@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).