diff options
author | Junio C Hamano <junkio@cox.net> | 2006-05-17 15:49:23 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-05-17 15:49:23 -0700 |
commit | e9ce27543d29aa23bb4740a241339c6d42674f7d (patch) | |
tree | d2f4ac336c84cb7ea2e61d1a3e1f226a1c22eee1 | |
parent | 53684bba4921b5a07d977ef794689de111c645b5 (diff) | |
parent | 6cdfd1797486138f50f1929c39e77a2cd1e3e033 (diff) | |
download | git-e9ce27543d29aa23bb4740a241339c6d42674f7d.tar.gz git-e9ce27543d29aa23bb4740a241339c6d42674f7d.tar.xz |
Merge branch 'ew/pretty-fmt'
* ew/pretty-fmt:
commit: allow --pretty= args to be abbreviated
-rw-r--r-- | commit.c | 38 |
1 files changed, 24 insertions, 14 deletions
@@ -22,23 +22,33 @@ struct sort_node const char *commit_type = "commit"; +struct cmt_fmt_map { + const char *n; + size_t cmp_len; + enum cmit_fmt v; +} cmt_fmts[] = { + { "raw", 1, CMIT_FMT_RAW }, + { "medium", 1, CMIT_FMT_MEDIUM }, + { "short", 1, CMIT_FMT_SHORT }, + { "full", 5, CMIT_FMT_FULL }, + { "fuller", 5, CMIT_FMT_FULLER }, + { "oneline", 1, CMIT_FMT_ONELINE }, +}; + enum cmit_fmt get_commit_format(const char *arg) { - if (!*arg) + int i; + + if (!arg || !*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; - if (!strcmp(arg, "=fuller")) - return CMIT_FMT_FULLER; - if (!strcmp(arg, "=oneline")) - return CMIT_FMT_ONELINE; - die("invalid --pretty format"); + if (*arg == '=') + arg++; + for (i = 0; i < ARRAY_SIZE(cmt_fmts); i++) { + if (!strncmp(arg, cmt_fmts[i].n, cmt_fmts[i].cmp_len)) + return cmt_fmts[i].v; + } + + die("invalid --pretty format: %s", arg); } static struct commit *check_commit(struct object *obj, |