From: Mark Lodato <lodatom@gmail.com>
To: git@vger.kernel.org
Cc: Mark Lodato <lodatom@gmail.com>
Subject: git-grep ignores untracked files
Date: Sun, 14 Feb 2010 19:35:37 -0500 [thread overview]
Message-ID: <1266194137-25653-1-git-send-email-lodatom@gmail.com> (raw)
Currently, git-grep ignores untracked files in the working directory.
For example:
$ pattern=qazxswedc
$ echo $pattern > foo
$ git grep $pattern || echo not found
not found
This is annoying and counter-intuitive, since it *does* search modified
files with unstaged changes. More importantly, this is undocumented.
The situation is much worse when untracked files are given on the
command line. For example, the following command warns me that a file
does not exist, as expected.
$ git grep $pattern does_not_exist
fatal: ambiguous argument 'does_not_exist': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
However, if I give it an untracked file, it just tells me there's no match.
$ git grep $pattern foo || echo not found
not found
In this case, I would expect the program to either search that file
(would be nice!) or die with an error message (I'll take this for now).
Furthermore, when '--' is given, even the non-existent case fails
silently.
$ git grep $pattern -- does_not_exist || echo not found
not found
So, what I would I like to see? Ideally, something like the following
series of patches:
1. Document the current behavior in the man page.
2. Issue a warning if any paths (pattern or non-pattern) fail to match
any files. Ideally, this would work in all cases (work tree, --cached,
and trees). If an untracked file matches a pattern that also matches
a tracked file, there would be no warning - not sure what's best in this
case. This warning should probably be disable-able with a flag, say
--no-warn-if-unmatched.
3. If neither --cached nor trees are given, and a non-pattern filename
is given that does not not exist in the cache, search this file as well.
(That is, instead of issuing a warning, just search it.) If the
filename is a directory, issue a warning.
4. Add an --untracked flag that causes grep to search *all* files in the
working directory, not just tracked ones. (This includes searches with
and without a pathspec.) The option would be incompatible with --cached
or given trees.
I post this wish list for several reasons. First, to see if anyone
agrees with me. Second, to see if this patch series has a chance of
ever being accepted. Third, to implant this idea into someones head so
they write it for me :). I may try to do it myself, but it will take me
a while.
To get started, here's a shot at #1.
Mark
---- 8< ----
From 697d97ca45b5c7abe8c84c3caae28cf839c668ac Mon Sep 17 00:00:00 2001
From: Mark Lodato <lodatom@gmail.com>
Date: Sun, 14 Feb 2010 19:28:55 -0500
Subject: [PATCH] Documentation: clarify untracked files and <path>
Note that only tracked files are searched, that non-matching paths are
silently ignored, and that <path> is a glob(7) pattern.
Signed-off-by: Mark Lodato <lodatom@gmail.com>
---
Documentation/git-grep.txt | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt
index e019e76..fdc05ec 100644
--- a/Documentation/git-grep.txt
+++ b/Documentation/git-grep.txt
@@ -27,7 +27,9 @@ SYNOPSIS
DESCRIPTION
-----------
Look for specified patterns in the working tree files, blobs
-registered in the index file, or given tree objects.
+registered in the index file, or given tree objects. Only tracked files in
+the working tree are searched. Paths that do not match are silently ignored,
+including paths to untracked files.
OPTIONS
@@ -170,6 +172,10 @@ OPTIONS
Signals the end of options; the rest of the parameters
are <path> limiters.
+<path>...::
+ Only search files matching these wildcard patterns; see glob(7) for
+ the format. If not given, all tracked files in the tree are searched.
+
Example
-------
--
1.7.0
next reply other threads:[~2010-02-15 0:33 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-15 0:35 Mark Lodato [this message]
2010-02-15 1:45 ` git-grep ignores untracked files Junio C Hamano
2010-02-16 0:20 ` Mark Lodato
2010-02-16 0:25 ` [PATCHv2] grep documentation: clarify what files match Mark Lodato
2010-02-16 2:03 ` Junio C Hamano
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=1266194137-25653-1-git-send-email-lodatom@gmail.com \
--to=lodatom@gmail.com \
--cc=git@vger.kernel.org \
/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).