From: Junio C Hamano <gitster@pobox.com>
To: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: git rev-list --author/--committer b0rked with -F/--fixed-strings
Date: Thu, 04 Sep 2008 00:12:28 -0700 [thread overview]
Message-ID: <7v4p4w75b7.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <g9o0ac$qig$1@ger.gmane.org> (Giuseppe Bilotta's message of "Thu, 04 Sep 2008 08:47:37 +0200")
Giuseppe Bilotta <giuseppe.bilotta@gmail.com> writes:
> So, is this a known bug (I would call it a bug, yes) in rev-list?
> Are there any ideas around on how to fix it?
It depends on what you are trying to do. An obvious thing to do is to
accept the fact that it has always been a regexp match, and quotemeta your
input string.
Because we allow you to give "-F" and "--author=foo" in any order, looking
at the options we have seen already and adjusting the pattern depending on
the fixed-string option in the code would not be workable. You would have
to instead queue up all the --grep/--author/--committer options until the
very end and _then_ compile them at the end, after you saw all the other
grep related options such as -i/-F/-E
I am not interested in helping people with attitude very much ;-), but one
somewhat related thing I have been wanting to add was the change in the
attached patch. It allows you to anchor not just at the beginning but at
the end.
revision.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git c/revision.c w/revision.c
index 36291b6..83478ef 100644
--- c/revision.c
+++ w/revision.c
@@ -956,18 +956,24 @@ static void add_grep(struct rev_info *revs, const char *ptn, enum grep_pat_token
static void add_header_grep(struct rev_info *revs, const char *field, const char *pattern)
{
char *pat;
- const char *prefix;
+ const char *prefix, *suffix;
int patlen, fldlen;
fldlen = strlen(field);
patlen = strlen(pattern);
- pat = xmalloc(patlen + fldlen + 10);
- prefix = ".*";
+ pat = xmalloc(patlen + fldlen + 64);
+ suffix = prefix = ".*";
if (*pattern == '^') {
prefix = "";
pattern++;
+ patlen--;
}
- sprintf(pat, "^%s %s%s", field, prefix, pattern);
+ if (pattern[patlen-1] == '$') {
+ suffix = "";
+ patlen--;
+ }
+ sprintf(pat, "^%s %s%.*s%s [1-9][0-9]* [-+][0-1][0-9][0-9][0-9]$",
+ field, prefix, patlen, pattern, suffix);
add_grep(revs, pat, GREP_PATTERN_HEAD);
}
next prev parent reply other threads:[~2008-09-04 7:14 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-04 6:47 git rev-list --author/--committer b0rked with -F/--fixed-strings Giuseppe Bilotta
2008-09-04 7:12 ` Junio C Hamano [this message]
2008-09-04 8:31 ` [PATCH] Teach "log -F --author=<match>" to behave better Junio C Hamano
2008-09-04 13:33 ` Teemu Likonen
2008-09-04 19:06 ` Junio C Hamano
2008-09-04 19:25 ` Teemu Likonen
2008-09-05 1:04 ` Junio C Hamano
2008-09-04 13:56 ` Giuseppe Bilotta
2008-09-04 14:09 ` Petr Baudis
2008-09-04 19:34 ` Junio C Hamano
2008-09-05 12:35 ` --all-match Teemu Likonen
2008-09-05 4:47 ` [PATCH] Teach "log -F --author=<match>" to behave better Junio C Hamano
2008-09-04 13:46 ` git rev-list --author/--committer b0rked with -F/--fixed-strings Giuseppe Bilotta
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7v4p4w75b7.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=giuseppe.bilotta@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.
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 NNTP newsgroup(s).