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

Re: What's in git.git (stable)

From
APAndy Parkins <andyparkins@gmail.com>
Date
Dec 13, 2006, 22:37 UTC
Message-ID
<200612132237.10051.andyparkins@gmail.com>
In-Reply-To
<7v4przfpir.fsf@assigned-by-dhcp.cox.net>
On Wednesday 2006, December 13 21:35, Junio C Hamano wrote:
> I am hoping that we can start a stabilization cycle for v1.5.0
> based on what we have in 'master'.  The theme is "usability and
> teachability".

This is what I have in my "niggles" list. These are surface level things that I think are easy to fix. A large part of the scariness is (I think) git's unfriendly output. Too many messages require understanding of git internals.

The major barrier to implementing these sorts of changes is, I think, worries about users of the output of these commands in scripts. I say: screw them, porcelain is there for the breaking :-)

 * git-fetch has to be in working root.  If I can do git-push from anywhere in 
   my tree, why can't I do git-fetch?
 * git-reset has to be in working root.  If you typically sit in, say "src/", 
   it's annoying to have to change directory to do a reset.
 * git-commit doesn't (generally) have output - after a commit, it's difficult
   to know if anything happened.  Get users used to the idea of hashes to 
   identify commits by telling them which one they just made.  Tell them if 
   they made a branch as well, which branch they are now on.
 * git-init-db says "defaulting to local storage area", as if that is
   meant to be a helpful message
 * git-revert should be called git-invert.  It doesn't remove a change
   from history, it simply applies another commit that does the
   opposite of whatever commit you are "revert"ing.  That's an inversion.
 * git-merge output is horrible - this affects git-pull, git-rebase,
   and git-cherry-pick.  Issuing "fatal" errors and then carrying on is very
   confusing.  Errors in merges appear multiple times.  The files upon which
   which there is a conflict are spread throughout the output.  Most of the
   output is not relevant to an average user.
 * git-apply output is horrible.  It says a few things about whitespace on 
   stdin then just finishes.  When it succeeds.   When it fails, it just says
   failed, it doesn't say why a particular hunk failed.
 * git-branch is not verbose enough when creating a new branch, for a new user
   a little reassurance that what they meant to happen has happened would be 
   nice.
 * git-commit without "-a" and without an "update-index" says "nothing
   to commit", which isn't an adequate message to help a user who hasn't
   realised they need to update the index
 * git-rebase --skip requires that the offending file be clean with
     git-checkout HEAD file
   before the skip will work.  Why?  The fact of the skip is enough
   knowledge for rebase to know that I don't care if the merge is lost
 * git-rebase/git-cherry-pick/git-reset/etc should all tell the user that they 
   need to run git-prune to tidy up after themselves.
 * git-add has no output, whether it works or not
 * git-cat-file is badly named.  git-cat-object would be slightly
   better.
 * git-fetch output is confusing:
    remote: Generating pack...
    remote: Done counting 189146 objects.
    remote: Result has 186566 objects.
    remote: Deltifying 186566 objects.
    remote:  100% (186566/186566) done
    Unpacking 186566 objects
    24% (44792/186566) done
   Some questions from the point of view of a newbie: what is a pack?  what is 
   an object? Why is the remote counting them?  Which remote am I reading 
   from?  What am I fetching?  What is "Deltifying"?  How much data do I have 
   to download (number of objects doesn't tell me).  How long has this taken?  
   How long is left to go?
 * Similar things can be said about git-clone
 * Similar things can be said about git-push
 * git-show-branch output is cryptic.
 * In general the principle for messages should be the same as for 
   presentations:
    - say what you're going to do
    - do it
    - say what you did
   So for example, "git-branch newbranch existingbranch" would say
    Branching at "existingbranch", hash XXXXXXXXXXXXXXXXXX
     - created branch "newbranch"
     - your working branch is "existingbranch"
   Rather than the nothing that it currently outputs.
 * It would be really nice to be able to do an arbitrary checkout, rather than
   having to make a branch for it.  Then I could do
    git-checkout remotes/origin/master && make
   (obviously committing with a non-branch HEAD would be prevented)
 * git-verify-tag would be nicer as a switch to git-tag
Andy
-- 
Dr Andrew Parkins, M Eng (Hons), AMIEE
Previous: Junio C HamanoNext: Jakub Narebski
Message 2 of 102 in “What's in git.git (stable)”
  1. Junio C HamanoDec 13, 2006
  2. Andy ParkinsDec 13, 2006
  3. Jakub NarebskiDec 13, 2006
  4. Andy ParkinsDec 14, 2006
  5. Shawn PearceDec 14, 2006
  6. Andy ParkinsDec 14, 2006
  7. Nicolas PitreDec 14, 2006
  8. Jakub NarebskiDec 15, 2006
  9. Junio C HamanoDec 13, 2006
  10. Peter BaumannDec 13, 2006
  11. Johannes SchindelinDec 14, 2006
  12. Nicolas PitreDec 14, 2006
  13. Junio C HamanoDec 14, 2006
  14. git-show, was Re: What's in git.git (stable)Johannes Schindelin, Dec 14, 2006
  15. Junio C HamanoDec 14, 2006
  16. Johannes SchindelinDec 14, 2006
  17. Andreas EricssonDec 14, 2006
  18. Jakub NarebskiDec 15, 2006
  19. Andy ParkinsDec 14, 2006
  20. Junio C HamanoDec 14, 2006
  21. Andy ParkinsDec 14, 2006
  22. Shawn PearceDec 14, 2006
  23. Carl WorthDec 14, 2006
  24. Shawn PearceDec 14, 2006
  25. reflog by default?, was Re: What's in git.git (stable)Johannes Schindelin, Dec 14, 2006
  26. Nicolas PitreDec 14, 2006
  27. Junio C HamanoDec 14, 2006
  28. Shawn PearceDec 14, 2006
  29. Nicolas PitreDec 14, 2006
  30. Andreas EricssonDec 14, 2006
  31. Junio C HamanoDec 15, 2006
  32. Shawn PearceDec 16, 2006
  33. Nicolas PitreDec 14, 2006
  34. Junio C HamanoDec 14, 2006
  35. Enable reflogs by default in all repositories.Shawn O. Pearce, Dec 14, 2006
  36. Nicolas PitreDec 14, 2006
  37. Junio C HamanoDec 14, 2006
  38. Andy ParkinsDec 14, 2006
  39. Jakub NarebskiDec 15, 2006
  40. Jakub NarebskiDec 15, 2006
  41. Nicolas PitreDec 15, 2006
  42. Andreas EricssonDec 15, 2006
  43. Nicolas PitreDec 15, 2006
  44. Shawn PearceDec 15, 2006
  45. Andreas EricssonDec 15, 2006
  46. Johannes SchindelinDec 15, 2006
  47. Nicolas PitreDec 15, 2006
  48. make commit message a little more consistent and confortingNicolas Pitre, Dec 15, 2006
  49. Shawn PearceDec 15, 2006
  50. Andreas EricssonDec 15, 2006
  51. Shawn PearceDec 15, 2006
  52. Andreas EricssonDec 15, 2006
  53. Shawn PearceDec 15, 2006
  54. Andreas EricssonDec 15, 2006
  55. Nicolas PitreDec 15, 2006
  56. Junio C HamanoDec 15, 2006
  57. Nicolas PitreDec 15, 2006
  58. Shawn PearceDec 15, 2006
  59. Junio C HamanoDec 15, 2006
  60. Nicolas PitreDec 15, 2006
  61. Junio C HamanoDec 16, 2006
  62. Junio C HamanoDec 14, 2006
  63. Andy ParkinsDec 14, 2006
  64. Junio C HamanoDec 14, 2006
  65. Andy ParkinsDec 15, 2006
  66. Raimund BauerDec 15, 2006
  67. Junio C HamanoDec 15, 2006
  68. Carl WorthDec 15, 2006
  69. Johannes SchindelinDec 14, 2006
  70. Johannes SchindelinDec 14, 2006
  71. Andy ParkinsDec 14, 2006
  72. Johannes SchindelinDec 14, 2006
  73. Andy ParkinsDec 14, 2006
  74. Johannes SchindelinDec 14, 2006
  75. Andy ParkinsDec 14, 2006
  76. Shawn PearceDec 14, 2006
  77. Andy ParkinsDec 14, 2006
  78. Nicolas PitreDec 14, 2006
  79. Andy ParkinsDec 14, 2006
  80. Shawn PearceDec 14, 2006
  81. Jakub NarebskiDec 15, 2006
  82. Junio C HamanoDec 15, 2006
  83. Jakub NarebskiDec 15, 2006
  84. Johannes SchindelinDec 15, 2006
  85. Junio C HamanoDec 15, 2006
  86. Johannes SchindelinDec 16, 2006
  87. Junio C HamanoDec 16, 2006
  88. Steven GrimmDec 16, 2006
  89. Junio C HamanoDec 16, 2006
  90. Junio C HamanoDec 15, 2006
  91. git-clone: use wildcard specification for tracking branchesJunio C Hamano, Dec 16, 2006
  92. git-pull: refuse default merge without branch.*.mergeJunio C Hamano, Dec 16, 2006
  93. git-clone: lose the artificial "first" fetch refspecJunio C Hamano, Dec 16, 2006
  94. git-clone: lose the traditional 'no-separate-remote' layoutJunio C Hamano, Dec 16, 2006
  95. Linus TorvaldsDec 16, 2006
  96. Johannes SchindelinDec 16, 2006
  97. Linus TorvaldsDec 16, 2006
  98. Jakub NarebskiDec 16, 2006
  99. Junio C HamanoDec 16, 2006
  100. Document git-merge-fileJohannes Schindelin, Dec 16, 2006
  101. Jakub NarebskiDec 16, 2006
  102. Junio C HamanoDec 16, 2006

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.