From: Junio C Hamano <gitster@pobox.com> To: Elijah Newren <newren@gmail.com> Cc: "Matheus Tavares Bernardino" <matheus.bernardino@usp.br>, "Git Mailing List" <git@vger.kernel.org>, "Derrick Stolee" <dstolee@microsoft.com>, "Nguyễn Thái Ngọc" <pclouds@gmail.com> Subject: Re: [RFC PATCH 3/3] grep: add option to ignore sparsity patterns Date: Fri, 27 Mar 2020 08:51:19 -0700 Message-ID: <xmqq369tiyo8.fsf@gitster.c.googlers.com> (raw) In-Reply-To: <CABPp-BGVO3QdbfE84uF_3QDF0-y2iHHh6G5FAFzNRfeRitkuHw@mail.gmail.com> (Elijah Newren's message of "Wed, 25 Mar 2020 23:02:20 -0700") Elijah Newren <newren@gmail.com> writes: > Sometimes, code that wasn't meant to be used together accidentally is > used together or the docs suggest they can be used together. ... > ... but that's the > type of accident that is easy to have in the implementation or docs > because it doesn't even occur to people who understand the design and > the data structures why anyone would attempt that. The above is not limited to "git grep", but you said so clearly what I have felt, without being able to express myself in a satisfactory manner, for the last 10 years. > ... (Side note: I think this kind of > issues occurs fairly frequently, so I'm unlikely to assume options > were meant to be supported together based solely on a lack of logic > that would throw an error when both are specified. Amen to that. By the way, and I am so sorry to making the main issue of the discussion into a mere "by the way" point, but if I understand your message correctly, the primary conclusion in there is that a file that is not in the working tree, if the sparsity pattern tells us that it should not be checked out to the working tree, should not be sought in the index instead. I think I agree with that conclusion. I however have some disagreement on a minor point, though. "git grep -e '<pattern>' master" looks for the pattern in the commit at the tip of the master branch. "git grep -e '<pattern>' master pu" does so in these two commits. I do not think it is conceptually wrong to allow "git grep -e '<pattern>' --cached master pu" to look for three "commits", i.e. those two commits that already exist, plus the one you would be creating if you were to "git commit" right now. Similarly, I do not see a reason why we should forbid looking for the same pattern in the tracked files in the working tree at the same time we check tree object(s) and/or the index. At least in principle. There are two practical issues that makes these combinations problematic, but I do not think they are insurmountable. - Once you give an object on the command line, there is no syntax to let you say "oh, by the way, I want the working tree as well". If you are looking in the index, the working tree, and optionally in some objects, "--index" instead of "--cached" would be the standard way to tell the command "I want to affect both the index and the working tree", but there is no way to say "I want only tracked files in the working tree and these objects searched". We'd need a new syntax to express it if we wanted to allow the combination. - The lines found in the working tree and in the index are prefixed by the filename, while they are prefixed by the tree's name and a colon. When output for the working tree and the index are combined, we cannot tell where each hit came from. We need to change the output to allow us to tell them apart, by e.g. prefixing "<worktree>:" and "<index>:" in a way similar to we use "<revision>:". Thanks.
next prev parent reply other threads:[~2020-03-27 15:51 UTC|newest] Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-24 6:04 [RFC PATCH 0/3] grep: honor sparse checkout and add option to ignore it Matheus Tavares 2020-03-24 6:11 ` [RFC PATCH 1/3] doc: grep: unify info on configuration variables Matheus Tavares 2020-03-24 7:57 ` Elijah Newren 2020-03-24 21:26 ` Junio C Hamano 2020-03-24 23:38 ` Matheus Tavares 2020-03-24 6:12 ` [RFC PATCH 2/3] grep: honor sparse checkout patterns Matheus Tavares 2020-03-24 7:15 ` Elijah Newren 2020-03-24 15:12 ` Derrick Stolee 2020-03-24 16:16 ` Elijah Newren 2020-03-24 17:02 ` Derrick Stolee 2020-03-24 23:01 ` Matheus Tavares Bernardino 2020-03-24 22:55 ` Matheus Tavares Bernardino 2020-04-21 2:10 ` Matheus Tavares Bernardino 2020-04-21 3:08 ` Elijah Newren 2020-04-22 12:08 ` Derrick Stolee 2020-04-23 6:09 ` Matheus Tavares Bernardino 2020-03-24 6:13 ` [RFC PATCH 3/3] grep: add option to ignore sparsity patterns Matheus Tavares 2020-03-24 7:54 ` Elijah Newren 2020-03-24 18:30 ` Junio C Hamano 2020-03-24 19:07 ` Elijah Newren 2020-03-25 20:18 ` Junio C Hamano 2020-03-30 3:23 ` Matheus Tavares Bernardino 2020-03-31 19:12 ` Elijah Newren 2020-03-31 20:02 ` Derrick Stolee 2020-04-27 17:15 ` Matheus Tavares Bernardino 2020-04-29 16:46 ` Elijah Newren 2020-04-29 17:21 ` Elijah Newren 2020-03-25 23:15 ` Matheus Tavares Bernardino 2020-03-26 6:02 ` Elijah Newren 2020-03-27 15:51 ` Junio C Hamano [this message] 2020-03-27 19:01 ` Elijah Newren 2020-03-30 1:12 ` Matheus Tavares Bernardino 2020-03-31 16:48 ` Elijah Newren 2020-05-10 0:41 ` [RFC PATCH v2 0/4] grep: honor sparse checkout and add option to ignore it Matheus Tavares 2020-05-10 0:41 ` [RFC PATCH v2 1/4] doc: grep: unify info on configuration variables Matheus Tavares 2020-05-10 0:41 ` [RFC PATCH v2 2/4] config: load the correct config.worktree file Matheus Tavares 2020-05-11 19:10 ` Junio C Hamano 2020-05-12 22:55 ` Matheus Tavares Bernardino 2020-05-12 23:22 ` Junio C Hamano 2020-05-10 0:41 ` [RFC PATCH v2 3/4] grep: honor sparse checkout patterns Matheus Tavares 2020-05-11 19:35 ` Junio C Hamano 2020-05-13 0:05 ` Matheus Tavares Bernardino 2020-05-13 0:17 ` Junio C Hamano 2020-05-21 7:26 ` Elijah Newren 2020-05-21 17:35 ` Matheus Tavares Bernardino 2020-05-21 17:52 ` Elijah Newren 2020-05-22 5:49 ` Matheus Tavares Bernardino 2020-05-22 14:26 ` Elijah Newren 2020-05-22 15:36 ` Elijah Newren 2020-05-22 20:54 ` Matheus Tavares Bernardino 2020-05-22 21:06 ` Elijah Newren 2020-06-10 11:40 ` Derrick Stolee 2020-06-10 16:22 ` Matheus Tavares Bernardino 2020-06-10 17:42 ` Derrick Stolee 2020-06-10 18:14 ` Matheus Tavares Bernardino 2020-06-10 20:12 ` Elijah Newren 2020-06-10 19:58 ` Elijah Newren 2020-05-21 7:36 ` Elijah Newren 2020-05-10 0:41 ` [RFC PATCH v2 4/4] config: add setting to ignore sparsity patterns in some cmds Matheus Tavares 2020-05-10 4:23 ` Matheus Tavares Bernardino 2020-05-21 17:18 ` Elijah Newren 2020-05-21 7:09 ` Elijah Newren 2020-05-28 1:12 ` [PATCH v3 0/5] grep: honor sparse checkout and add option to ignore it Matheus Tavares 2020-05-28 1:12 ` [PATCH v3 1/5] doc: grep: unify info on configuration variables Matheus Tavares 2020-05-28 1:13 ` [PATCH v3 2/5] t/helper/test-config: return exit codes consistently Matheus Tavares 2020-05-30 14:29 ` Elijah Newren 2020-06-01 4:36 ` Matheus Tavares Bernardino 2020-05-28 1:13 ` [PATCH v3 3/5] config: correctly read worktree configs in submodules Matheus Tavares 2020-05-30 14:49 ` Elijah Newren 2020-06-01 4:38 ` Matheus Tavares Bernardino 2020-05-28 1:13 ` [PATCH v3 4/5] grep: honor sparse checkout patterns Matheus Tavares 2020-05-30 15:48 ` Elijah Newren 2020-06-01 4:44 ` Matheus Tavares Bernardino 2020-06-03 2:38 ` Elijah Newren 2020-06-10 17:08 ` Matheus Tavares Bernardino 2020-05-28 1:13 ` [PATCH v3 5/5] config: add setting to ignore sparsity patterns in some cmds Matheus Tavares 2020-05-30 16:18 ` Elijah Newren 2020-06-01 4:45 ` Matheus Tavares Bernardino 2020-06-03 2:39 ` Elijah Newren 2020-06-10 21:15 ` Matheus Tavares Bernardino 2020-06-11 0:35 ` Elijah Newren 2020-06-12 15:44 ` [PATCH v4 0/6] grep: honor sparse checkout and add option to ignore it Matheus Tavares 2020-06-12 15:44 ` [PATCH v4 1/6] doc: grep: unify info on configuration variables Matheus Tavares 2020-06-12 15:45 ` [PATCH v4 2/6] t/helper/test-config: return exit codes consistently Matheus Tavares 2020-06-12 15:45 ` [PATCH v4 3/6] t/helper/test-config: facilitate addition of new cli options Matheus Tavares 2020-06-12 15:45 ` [PATCH v4 4/6] config: correctly read worktree configs in submodules Matheus Tavares 2020-06-16 19:13 ` Elijah Newren 2020-06-21 16:05 ` Matheus Tavares Bernardino 2020-09-01 2:41 ` Jonathan Nieder 2020-09-01 21:44 ` Matheus Tavares Bernardino 2020-06-12 15:45 ` [PATCH v4 5/6] grep: honor sparse checkout patterns Matheus Tavares 2020-06-12 15:45 ` [PATCH v4 6/6] config: add setting to ignore sparsity patterns in some cmds Matheus Tavares 2020-06-16 22:31 ` [PATCH v4 0/6] grep: honor sparse checkout and add option to ignore it Elijah Newren 2020-09-02 6:17 ` [PATCH v5 0/8] " Matheus Tavares 2020-09-02 6:17 ` [PATCH v5 1/8] doc: grep: unify info on configuration variables Matheus Tavares 2020-09-02 6:17 ` [PATCH v5 2/8] t1308-config-set: avoid false positives when using test-config Matheus Tavares 2020-09-02 6:57 ` Eric Sunshine 2020-09-02 16:16 ` Matheus Tavares Bernardino 2020-09-02 16:38 ` Eric Sunshine 2020-09-02 6:17 ` [PATCH v5 3/8] t/helper/test-config: be consistent with exit codes Matheus Tavares 2020-09-02 6:17 ` [PATCH v5 4/8] t/helper/test-config: check argc before accessing argv Matheus Tavares 2020-09-02 7:18 ` Eric Sunshine 2020-09-02 6:17 ` [PATCH v5 5/8] t/helper/test-config: unify exit labels Matheus Tavares 2020-09-02 7:30 ` Eric Sunshine 2020-09-02 6:17 ` [PATCH v5 6/8] config: correctly read worktree configs in submodules Matheus Tavares 2020-09-02 20:15 ` Jonathan Nieder 2020-09-09 13:04 ` Matheus Tavares Bernardino 2020-09-09 23:32 ` Jonathan Nieder 2020-09-02 6:17 ` [PATCH v5 7/8] grep: honor sparse checkout patterns Matheus Tavares 2020-09-02 6:17 ` [PATCH v5 8/8] config: add setting to ignore sparsity patterns in some cmds Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 0/9] grep: honor sparse checkout and add option to ignore it Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 1/9] doc: grep: unify info on configuration variables Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 2/9] t1308-config-set: avoid false positives when using test-config Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 3/9] t/helper/test-config: be consistent with exit codes Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 4/9] t/helper/test-config: diagnose missing arguments Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 5/9] t/helper/test-config: unify exit labels Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 6/9] config: make do_git_config_sequence receive a 'struct repository' Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 7/9] config: correctly read worktree configs in submodules Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 8/9] grep: honor sparse checkout patterns Matheus Tavares 2020-09-10 17:21 ` [PATCH v6 9/9] config: add setting to ignore sparsity patterns in some cmds Matheus Tavares
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 List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=xmqq369tiyo8.fsf@gitster.c.googlers.com \ --to=gitster@pobox.com \ --cc=dstolee@microsoft.com \ --cc=git@vger.kernel.org \ --cc=matheus.bernardino@usp.br \ --cc=newren@gmail.com \ --cc=pclouds@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
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git