diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-26 17:50:46 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-26 17:50:46 -0700 |
commit | 9b66ec04741b4030e7654dcb7b978a29a8214b31 (patch) | |
tree | 0f39632df69a6b7898fc5057e26dab67e7983537 | |
parent | f336e71f86560df3503c1da1f68635a184af28a9 (diff) | |
download | git-9b66ec04741b4030e7654dcb7b978a29a8214b31.tar.gz git-9b66ec04741b4030e7654dcb7b978a29a8214b31.tar.xz |
Add "--pretty=full" format that also shows committer.
Also move the common implementation of parsing the --pretty argument
format into commit.c rather than having duplicates in diff-tree.c and
rev-list.c.
-rw-r--r-- | commit.c | 26 | ||||
-rw-r--r-- | commit.h | 4 | ||||
-rw-r--r-- | diff-tree.c | 13 | ||||
-rw-r--r-- | rev-list.c | 14 |
4 files changed, 25 insertions, 32 deletions
@@ -5,6 +5,21 @@ const char *commit_type = "commit"; +enum cmit_fmt get_commit_format(const char *arg) +{ + if (!*arg) + return CMIT_FMT_DEFAULT; + if (!strcmp(arg, "=raw")) + return CMIT_FMT_RAW; + if (!strcmp(arg, "=medium")) + return CMIT_FMT_MEDIUM; + if (!strcmp(arg, "=short")) + return CMIT_FMT_SHORT; + if (!strcmp(arg, "=full")) + return CMIT_FMT_FULL; + die("invalid --pretty format"); +} + static struct commit *check_commit(struct object *obj, const unsigned char *sha1) { if (obj->type != commit_type) { @@ -196,14 +211,13 @@ static int get_one_line(const char *msg, unsigned long len) return ret; } -static int add_author_info(enum cmit_fmt fmt, char *buf, const char *line, int len) +static int add_user_info(const char *what, enum cmit_fmt fmt, char *buf, const char *line) { char *date; unsigned int namelen; unsigned long time; int tz, ret; - line += strlen("author "); date = strchr(line, '>'); if (!date) return 0; @@ -211,7 +225,7 @@ static int add_author_info(enum cmit_fmt fmt, char *buf, const char *line, int l time = strtoul(date, &date, 10); tz = strtol(date, NULL, 10); - ret = sprintf(buf, "Author: %.*s\n", namelen, line); + ret = sprintf(buf, "%s: %.*s\n", what, namelen, line); if (fmt == CMIT_FMT_MEDIUM) ret += sprintf(buf + ret, "Date: %s\n", show_date(time, tz)); return ret; @@ -284,7 +298,11 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const char *msg, unsigned l offset += add_parent_info(fmt, buf + offset, line, ++parents); } if (!memcmp(line, "author ", 7)) - offset += add_author_info(fmt, buf + offset, line, linelen); + offset += add_user_info("Author", fmt, buf + offset, line + 7); + if (fmt == CMIT_FMT_FULL) { + if (!memcmp(line, "committer ", 10)) + offset += add_user_info("Commit", fmt, buf + offset, line + 10); + } continue; } @@ -37,9 +37,11 @@ enum cmit_fmt { CMIT_FMT_RAW, CMIT_FMT_MEDIUM, CMIT_FMT_DEFAULT = CMIT_FMT_MEDIUM, - CMIT_FMT_SHORT + CMIT_FMT_SHORT, + CMIT_FMT_FULL, }; +extern enum cmit_fmt get_commit_format(const char *arg); extern unsigned long pretty_print_commit(enum cmit_fmt fmt, const char *msg, unsigned long len, char *buf, unsigned long space); void insert_by_date(struct commit_list **list, struct commit *item); diff --git a/diff-tree.c b/diff-tree.c index d467e6cf8..60ad2b5b6 100644 --- a/diff-tree.c +++ b/diff-tree.c @@ -397,19 +397,6 @@ static int diff_tree_stdin(char *line) static char *diff_tree_usage = "git-diff-tree [-p] [-r] [-z] [--stdin] [-m] [-s] [-v] [--pretty] [-t] [-R] [-B] [-M] [-C] [--find-copies-header] [-O<orderfile>] [-S<string>] [--pickaxe-all] <tree-ish> <tree-ish>"; -static enum cmit_fmt get_commit_format(const char *arg) -{ - if (!*arg) - return CMIT_FMT_DEFAULT; - if (!strcmp(arg, "=raw")) - return CMIT_FMT_RAW; - if (!strcmp(arg, "=medium")) - return CMIT_FMT_MEDIUM; - if (!strcmp(arg, "=short")) - return CMIT_FMT_SHORT; - usage(diff_tree_usage); -} - int main(int argc, const char **argv) { int nr_sha1; diff --git a/rev-list.c b/rev-list.c index 6a383f853..bf61b74db 100644 --- a/rev-list.c +++ b/rev-list.c @@ -307,20 +307,6 @@ struct commit_list *limit_list(struct commit_list *list) return newlist; } -static enum cmit_fmt get_commit_format(const char *arg) -{ - if (!*arg) - return CMIT_FMT_DEFAULT; - if (!strcmp(arg, "=raw")) - return CMIT_FMT_RAW; - if (!strcmp(arg, "=medium")) - return CMIT_FMT_MEDIUM; - if (!strcmp(arg, "=short")) - return CMIT_FMT_SHORT; - usage(rev_list_usage); -} - - int main(int argc, char **argv) { struct commit_list *list = NULL; |