git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 1/2] diff: enable and test the sparse index

From
Lessley Dennington <lessleydennington@gmail.com>
Date
Nov 4, 2021, 23:55 UTC
Message-ID
<1a269d05-49f6-6c49-860a-044070f14ffc@gmail.com>
In-Reply-To
<xmqqcznh8913.fsf@gitster.g>
On 11/3/21 10:05 AM, Junio C Hamano wrote:
Show 12 quoted lines
> "Lessley Dennington via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
> 
>> 2000.34: git diff --staged (full-v3)      0.08    0.08 +0.0%
>> 2000.35: git diff --staged (full-v4)      0.08    0.08 +0.0%
>> 2000.36: git diff --staged (sparse-v3)    0.17    0.04 -76.5%
>> 2000.37: git diff --staged (sparse-v4)    0.16    0.04 -75.0%
> 
> Please do not add more use of the synonym to the test suite, other
> than the one that makes sure the synonym works the same way as the
> real option, which is "--cached".
>
Thank you, changed for v4.
Show 42 quoted lines
>> diff --git a/builtin/diff.c b/builtin/diff.c
>> index dd8ce688ba7..cbf7b51c7c0 100644
>> --- a/builtin/diff.c
>> +++ b/builtin/diff.c
>> @@ -437,6 +437,9 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
>>   
>>   	prefix = setup_git_directory_gently(&nongit);
>>   
>> +	prepare_repo_settings(the_repository);
>> +	the_repository->settings.command_requires_full_index = 0;
>> +
> 
> Doesn't the code need to be protected with
> 
> 	if (!nongit) {
> 		prepare_repo_settings(the_repository);
> 		the_repository->settings.command_requires_full_index = 0;
> 	}
> 
> at the very least?  It may be that the code is getting lucky because
> the_repository may be initialized with a random value (after all,
> when we are not in a repository, there is nowhere to read the
> on-disk settings from) and we may even be able to set a bit in the
> settings structure without crashing, but conceptually, doing the
> above when we _know_ we are not in any repository is simply wrong.
> 
> I wonder if prepare_repo_settings() needs be more strict.  For
> example, shouldn't it check if we have a repository to begin with
> and BUG() if it was called when there is not a repository?  After
> all, it tries to read from the repository configuration file, so any
> necessary set-up to discover where the gitdir is must have been done
> already before it can be called.
> 
> With such a safety feature to catch a programmer errors, perhaps the
> above could have been caught before the patch hit the list.
> 
> Thoughts?  Am I missing some chicken-and-egg situation where
> prepare_repo_settings() must be callable before we know where the
> repository is, or something, which justifies why the function is so
> loose in its sanity checks in the current form?
> 
> 

This seems like a good idea. I've added both the nongit check and the prepare_repo_settings() updates you've suggested for v4, pending review by my team.

Best, Lessley

Previous: Junio C HamanoNext: Lessley Dennington via GitGitGadget
Message 19 of 66 in “Sparse Index: diff and blame builtins”
  1. 0/2 Sparse Index: diff and blame builtinsLessley Dennington via GitGitGadget, Oct 14, 2021
  2. 1/2 diff: enable and test the sparse indexLessley Dennington via GitGitGadget, Oct 14, 2021
  3. Derrick StoleeOct 15, 2021
  4. 2/2 blame: enable and test the sparse indexLessley Dennington via GitGitGadget, Oct 14, 2021
  5. Elijah NewrenNov 23, 2021
  6. Lessley DenningtonNov 23, 2021
  7. 0/2 Sparse Index: diff and blame builtinsLessley Dennington via GitGitGadget, Oct 15, 2021
  8. 1/2 diff: enable and test the sparse indexLessley Dennington via GitGitGadget, Oct 15, 2021
  9. Taylor BlauOct 25, 2021
  10. Lessley DenningtonOct 26, 2021
  11. Taylor BlauOct 26, 2021
  12. 2/2 blame: enable and test the sparse indexLessley Dennington via GitGitGadget, Oct 15, 2021
  13. Taylor BlauOct 25, 2021
  14. Lessley DenningtonOct 26, 2021
  15. Elijah NewrenNov 21, 2021
  16. 0/2 Sparse Index: diff and blame builtinsLessley Dennington via GitGitGadget, Nov 1, 2021
  17. 1/2 diff: enable and test the sparse indexLessley Dennington via GitGitGadget, Nov 1, 2021
  18. Junio C HamanoNov 3, 2021
  19. Lessley DenningtonNov 4, 2021
  20. 2/2 blame: enable and test the sparse indexLessley Dennington via GitGitGadget, Nov 1, 2021
  21. Junio C HamanoNov 3, 2021
  22. Lessley DenningtonNov 5, 2021
  23. Elijah NewrenNov 21, 2021
  24. 0/4 Sparse Index: diff and blame builtinsLessley Dennington via GitGitGadget, Nov 22, 2021
  25. 1/4 sparse index: enable only for git reposLessley Dennington via GitGitGadget, Nov 22, 2021
  26. Elijah NewrenNov 23, 2021
  27. Lessley DenningtonNov 23, 2021
  28. Junio C HamanoNov 23, 2021
  29. Lessley DenningtonNov 24, 2021
  30. Junio C HamanoNov 24, 2021
  31. Lessley DenningtonNov 29, 2021
  32. Junio C HamanoNov 30, 2021
  33. Lessley DenningtonNov 30, 2021
  34. 2/4 test-read-cache: set up repo after git directoryLessley Dennington via GitGitGadget, Nov 22, 2021
  35. Junio C HamanoNov 23, 2021
  36. Lessley DenningtonNov 24, 2021
  37. Junio C HamanoNov 24, 2021
  38. Lessley DenningtonNov 29, 2021
  39. 3/4 diff: enable and test the sparse indexLessley Dennington via GitGitGadget, Nov 22, 2021
  40. Elijah NewrenNov 23, 2021
  41. Lessley DenningtonNov 23, 2021
  42. Junio C HamanoNov 23, 2021
  43. 4/4 blame: enable and test the sparse indexLessley Dennington via GitGitGadget, Nov 22, 2021
  44. Junio C HamanoNov 23, 2021
  45. Lessley DenningtonNov 24, 2021
  46. 0/7 Sparse Index: diff and blame builtinsLessley Dennington via GitGitGadget, Dec 3, 2021
  47. 1/7 git: esnure correct git directory setup with -hLessley Dennington via GitGitGadget, Dec 3, 2021
  48. Elijah NewrenDec 4, 2021
  49. Junio C HamanoDec 4, 2021
  50. 2/7 commit-graph: return if there is no git directoryLessley Dennington via GitGitGadget, Dec 3, 2021
  51. 4/7 repo-settings: prepare_repo_settings only in git reposLessley Dennington via GitGitGadget, Dec 3, 2021
  52. Ævar Arnfjörð BjarmasonDec 7, 2021
  53. Lessley DenningtonDec 8, 2021
  54. 3/7 test-read-cache: set up repo after git directoryLessley Dennington via GitGitGadget, Dec 3, 2021
  55. 5/7 diff: replace --staged with --cached in t1092 testsLessley Dennington via GitGitGadget, Dec 3, 2021
  56. 6/7 diff: enable and test the sparse indexLessley Dennington via GitGitGadget, Dec 3, 2021
  57. 7/7 blame: enable and test the sparse indexLessley Dennington via GitGitGadget, Dec 3, 2021
  58. Elijah NewrenDec 4, 2021
  59. 0/7 Sparse Index: diff and blame builtinsLessley Dennington via GitGitGadget, Dec 6, 2021
  60. 1/7 git: ensure correct git directory setup with -hLessley Dennington via GitGitGadget, Dec 6, 2021
  61. 2/7 commit-graph: return if there is no git directoryLessley Dennington via GitGitGadget, Dec 6, 2021
  62. 3/7 test-read-cache: set up repo after git directoryLessley Dennington via GitGitGadget, Dec 6, 2021
  63. 4/7 repo-settings: prepare_repo_settings only in git reposLessley Dennington via GitGitGadget, Dec 6, 2021
  64. 5/7 diff: replace --staged with --cached in t1092 testsLessley Dennington via GitGitGadget, Dec 6, 2021
  65. 6/7 diff: enable and test the sparse indexLessley Dennington via GitGitGadget, Dec 6, 2021
  66. 7/7 blame: enable and test the sparse indexLessley Dennington via GitGitGadget, Dec 6, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.