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

Re: Please default to 'commit -a' when no changes were added

From
MAMatthias Andree <matthias.andree@gmx.de>
Date
Apr 23, 2010, 22:35 UTC
Message-ID
<4BD220BD.8090808@gmx.de>
In-Reply-To
<87aastx6sa.fsf@frosties.localdomain>
Am 23.04.2010 22:17, schrieb Goswin von Brederlow:
Show 43 quoted lines
> Wincent Colaiuta <win@wincent.com> writes:
> 
>> El 23/04/2010, a las 11:03, Goswin von Brederlow escribió:
>>>
>>> You all say the index is such a great thing. So I might use it
>>> eventually. Other people might use it 1 out of 10 times. Yet other
>>> people use it 9 out of 10 times. Can you at least accept that the use of
>>> the index feature is different for each person?
>>>
>>> My suggested change, with the --a-if-empty option, would not impose
>>> anything on existing usage. But it would benefit those that rarely use
>>> an index and would like git to be smart enough to know when to use the
>>> index and when not. Yes, it would mean the use of the index ideology is
>>> not force upon people anymore. But isn't that a good thing? Free
>>> software is about freedom. That should include the freedom not to use
>>> the index method.
>>
>> Not really. Git is free in the sense that: (1) it costs nothing; and (2) you can modify the code to do anything you want.
>>
>> But you've also got to recognize that along with your freedom to make modifications, the maintainers are free to either accept or reject them too. 
>>
>> And in the event that the changes you want aren't accepted, you're free to either fork the tool or pick another one which does conform better to your expectations.
> 
> But you are already rejecting it in the design phase before there even
> is a patch.
> 
>> In the present case experience has shown that the index and the way it can be exploited are an incredibly useful thing. Not only that, it's a differentiating feature of Git and it sets it apart from other SCMs, in a good way. We could mindlessly homogenize to be more like other systems, or less "surprising" for users coming from other systems, but we'd be throwing away something valuable in the process.
> 
> If I would ask to disable the indexing feature then you would have a
> point. But I am not. I'm asking to add something that allows to use git
> in a less "surprising" mode that, with the --a-if-empty option, does not
> alter anything else. Git would still have all its great, big, shiny,
> differentiating features to set it apart from other SCMs without forcing
> them down the users throat.
> 
>> I personally don't see the point in having a bunch of SCMs that are all exactly alike. I _like_ that Git's different, and over the years have become so used to the benefits that working with the index "the Git way" bring, that it's hard to imagine how I ever lived without it.
>>
>> Cheers,
>> Wincent
> 
> I personaly have to work with different SCMs every day and every time I
> have to switch minds to work with each specific one. Making git commit
> work less surprising would be one less thing to keep in mind.

You are trying to make Git more difficult to understand for the user. This is easily perceived as non-determinism.

Before introducing a code branch (à la "if $(git diff-index --quiet HEAD)", think twice. It doubles testing efforts, it makes explanations long-winded. What's so difficult about typing [Arrow-Up] [Space] [-] [a] [Enter] if git commit comes up empty.

With your option, I need to remember that Git is overzealous and will commit the whole index if nothing is staged, possibly git reset HEAD^ and clean up the mess. This is inconsistent and inefficient.

Try git gui or git citool if you can't be bothered to remember how to add changes to your commit. Git isn't alone. Think BitKeeper, DARCS. For other systems, there are extensions to help with committing, and to emulate what DARCS has pioneered, for instance "hg record", an extension for Mercurial.

> You like that Git is different so don't use the --a-if-empty option. You

No. I for one like the ability to stage changes and commit logically cohesive changes without having to save files to temporary files.

> will have lost nothing by allowing that option in. So far I have read
> arguments from people saying they don't want to USE the option. But no
> arguments why there could not be such an option. And I'm not the only
> one that would welcome such an option. Is there no room for a compromise?

"Bloat". If I were the maintainer, I'd point you to aliases. If Git itself can't do it, tossing a dozen shell lines into git's libexec would do the job. git diff-index --quiet is your friend.

Previous: Jonathan NiederNext: Junio C Hamano
Message 20 of 76 in “Re: Please default to 'commit -a' when no changes were added”
  1. Jonathan NiederApr 22, 2010
  2. Goswin von BrederlowApr 22, 2010
  3. Nicolas PitreApr 22, 2010
  4. Sverre RabbelierApr 22, 2010
  5. Goswin von BrederlowApr 22, 2010
  6. Nicolas PitreApr 22, 2010
  7. Goswin von BrederlowApr 23, 2010
  8. Miles BaderApr 23, 2010
  9. Wincent ColaiutaApr 23, 2010
  10. Goswin von BrederlowApr 23, 2010
  11. Michael WittenApr 23, 2010
  12. Daniel GraceApr 23, 2010
  13. Nicolas PitreApr 23, 2010
  14. Goswin von BrederlowApr 24, 2010
  15. Jonathan NiederApr 24, 2010
  16. Goswin von BrederlowApr 24, 2010
  17. Jonathan NiederApr 24, 2010
  18. Miles BaderApr 25, 2010
  19. Jonathan NiederApr 25, 2010
  20. Matthias AndreeApr 23, 2010
  21. Junio C HamanoApr 24, 2010
  22. Junio C HamanoApr 22, 2010
  23. Matthieu MoyApr 22, 2010
  24. Michael WittenApr 22, 2010
  25. Goswin von BrederlowApr 23, 2010
  26. Tomas CarneckyApr 23, 2010
  27. Michael WittenApr 23, 2010
  28. Matthieu MoyApr 23, 2010
  29. Tor ArntsenApr 23, 2010
  30. Adam BrewsterApr 22, 2010
  31. Jonathan NiederApr 22, 2010
  32. Goswin von BrederlowApr 23, 2010
  33. The index (Re: Please default to 'commit -a' when no changes were added)Jonathan Nieder, Apr 23, 2010
  34. Jon SeymourApr 22, 2010
  35. Adam BrewsterApr 23, 2010
  36. Goswin von BrederlowApr 23, 2010
  37. Goswin von BrederlowApr 23, 2010
  38. Björn SteinbrinkApr 23, 2010
  39. Sergei OrganovApr 23, 2010
  40. Sverre RabbelierApr 23, 2010
  41. Sergei OrganovApr 23, 2010
  42. Goswin von BrederlowApr 23, 2010
  43. Matthias AndreeApr 23, 2010
  44. Michael WittenApr 23, 2010
  45. Matthias AndreeApr 23, 2010
  46. Eric RaymondApr 23, 2010
  47. Michael WittenApr 23, 2010
  48. Eric RaymondApr 24, 2010
  49. Michael WittenApr 24, 2010
  50. Eric RaymondApr 24, 2010
  51. Michael WittenApr 23, 2010
  52. Tor ArntsenApr 24, 2010
  53. 'commit -a' safety (was: Re: Please default to 'commit -a' when no changes were added)Jakub Narebski, Apr 24, 2010
  54. Miles BaderApr 24, 2010
  55. Andreas SchwabApr 24, 2010
  56. Jakub NarebskiApr 24, 2010
  57. Miles BaderApr 24, 2010
  58. Nicolas PitreApr 24, 2010
  59. Jakub NarebskiApr 25, 2010
  60. Miles BaderApr 25, 2010
  61. Wincent ColaiutaApr 24, 2010
  62. Jakub NarebskiApr 24, 2010
  63. Joey HessApr 24, 2010
  64. Mike HommeyApr 24, 2010
  65. Petr BaudisApr 24, 2010
  66. Bug#578764: 'commit -a' safety (was: Re: Please default to 'commit -a' when no changes were added)Wincent Colaiuta, Apr 24, 2010
  67. Petr BaudisApr 24, 2010
  68. Nicolas PitreApr 24, 2010
  69. Petr BaudisApr 24, 2010
  70. Nicolas PitreApr 24, 2010
  71. Jacob HelwigApr 24, 2010
  72. Nicolas PitreApr 24, 2010
  73. Jacob HelwigApr 24, 2010
  74. Jakub NarebskiApr 24, 2010
  75. Junio C HamanoApr 25, 2010
  76. Jakub NarebskiApr 25, 2010

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.