diff options
author | Linus Torvalds <torvalds@osdl.org> | 2006-09-18 10:07:51 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-09-20 11:14:39 -0700 |
commit | a2ed6ae402582a3ee76e9b4639848eba261a12de (patch) | |
tree | 8cac99a9d0a1520ca790208d953306084d6e0d46 | |
parent | rev-list: fix segfault with --{author,committer,grep} (diff) | |
download | tgif-a2ed6ae402582a3ee76e9b4639848eba261a12de.tar.xz |
git-log --author and --committer are not left-anchored by default
I know that I'd prefer a rule where
"--author=^Junio"
would result in the grep-pattern being "^author Junio", but without the
initial '^' it would be "^author .*Junio".
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | revision.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/revision.c b/revision.c index 26dd418734..bca122961e 100644 --- a/revision.c +++ b/revision.c @@ -677,6 +677,7 @@ int handle_revision_arg(const char *arg, struct rev_info *revs, static void add_header_grep(struct rev_info *revs, const char *field, const char *pattern) { char *pat; + const char *prefix; int patlen, fldlen; if (!revs->header_filter) { @@ -689,8 +690,13 @@ static void add_header_grep(struct rev_info *revs, const char *field, const char fldlen = strlen(field); patlen = strlen(pattern); - pat = xmalloc(patlen + fldlen + 3); - sprintf(pat, "^%s %s", field, pattern); + pat = xmalloc(patlen + fldlen + 10); + prefix = ".*"; + if (*pattern == '^') { + prefix = ""; + pattern++; + } + sprintf(pat, "^%s %s%s", field, prefix, pattern); append_grep_pattern(revs->header_filter, pat, "command line", 0, GREP_PATTERN); } |