Re: precise keyword matching for pretty switch
Nicolas Vilz <niv@iaglans.de> wrote:
Show 14 quoted lines
> hi,
>
> i noticed today, that the pretty-switch in git-log -diff and many other
> tools triggers to "oneline" if you just type an "o" after --pretty=
>
> so, not only
>
> git log --pretty=oneline
>
> but also
>
> git log --pretty=online
> git log --pretty=offline
> git log --pretty=omfg
Show 9 quoted lines
> and finally (just to make it short *G*)
>
> git log --pretty=osolomio
>
> does trigger the oneline-feature. Perhaps this is not intended to work
> as it works now. I would recommend, that the switch should only accept
> the fully matched keyword and not just a lowercase "o" as the first
> letter of the keywords following after --pretty=, just to prevent people
> getting bad habbits.
No. The abbreviations are intentional. It's anything but a bad habit.
--pretty=o --pretty=on --pretty=one --pretty=onel --pretty=oneli --pretty=onelin --pretty=oneline
are all valid abbreviations. I'm a lazy git :)
I also intend to resurrect gitopt in some form in the near future...
From: Eric Wong <normalperson@yhbt.net>
Date: Fri, 2 Feb 2007 05:10:25 -0800
Subject: [PATCH] Disallow invalid --pretty= abbreviations
--pretty=o is a valid abbreviation, --pretty=omfg is not
Noticed by: Nicolas Vilz
Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
commit.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/commit.c b/commit.c
index 9b2b842..3e8c872 100644
--- a/commit.c
+++ b/commit.c
@@ -47,7 +47,8 @@ enum cmit_fmt get_commit_format(const char *arg)
if (*arg == '=')
arg++;
for (i = 0; i < ARRAY_SIZE(cmt_fmts); i++) {
- if (!strncmp(arg, cmt_fmts[i].n, cmt_fmts[i].cmp_len))
+ if (!strncmp(arg, cmt_fmts[i].n, cmt_fmts[i].cmp_len) &&
+ !strncmp(arg, cmt_fmts[i].n, strlen(arg)))
return cmt_fmts[i].v;
}
--
Eric Wong