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

Re: EasyGit Integration

From
Nicolas Pitre <nico@cam.org>
Date
Jun 10, 2009, 03:27 UTC
Message-ID
<alpine.LFD.2.00.0906092252210.31536@xanadu.home>
In-Reply-To
<7vws7khlvj.fsf@alter.siamese.dyndns.org>
On Tue, 9 Jun 2009, Junio C Hamano wrote:
Show 16 quoted lines
> Some changes in "eg" may port well as a new command to git-core, and some
> change (like this "revert" thing that has different semantics and breaks
> established workflow) will never be in git-core.  People may think that it
> would not cause many problems if we picked only the non-conflicting bits,
> but I actually have some reservations about that.
> 
> It will bloat the total number of subcommands you can give git, with the
> end result being
> 
>  (1) old timers won't use "revert-commit" and "revert-file" at all but use
>      "revert" and "checkout -- path"; while
> 
>  (2) new people will behave the other way; and
> 
>  (3) the documentation will list all of commands from these two disjoint
>     sets under "git".

Nah. This doesn't have to be so extreme. Your example above is relevant, and I agree with you that this is unnecessary bloat.

However there are many other examples, such as "git branch -s" being equivalent to "git checkout -b" which I think are rather nice to have.

The 'git resolved' command for staging resolved conflicts is also nice.
Also does the streamlining of --abort/--continue for a couple commands.

This is why I said that such additions should be proposed piecemeal and judged separately.

Show 7 quoted lines
> When a "eg" minded person teaches git, the students may have to be told to
> ignore "revert" and "checkout -- path", because there are other ways to do
> the same thing in the lingo they are being taught, which is a subset of
> git commands.  The manual pages will be littered with descriptions like
> "this command, when used this way, is synonymous to using that other
> command with this option", leaving the reader wondering why there are so
> many ways to do the same thing.

This is not necessarily a good strategy to always list all equivalences. If someone learns from the git-branch man page that -s also switches to the newly created branch, then that person won't gain anything nor care to know that 'git checkout -b' does the same.

Show 7 quoted lines
> If "eg" (I do not have _anything_ against it; the discussion applies to
> other Porcelains as well) were kept independent _and_ offered complete set
> of features that users need without resorting to git-core, on the other
> hand, the students do not have to know about "revert", and the manuals
> they need to consult will not have to talk about "if you are using
> git-core, this is done differently in this way".  The learning curve will
> get a lot smoother for new people.

On the other hand, having multiple porcelains simply divide the user base which is not always a good thing. Look at what happened to cogito for example: some people were using it, some people didn't and those two groups couldn't help each other efficiently. Yet git used to do things badly that cogito did well, and the other way around too, which gave the impression that each system was suboptimal. When git picked up the good things in cogito and cogito finally died then everybody was focusing on a single command-line-based porcelain for the better health of git which really gained momentum at that point.

In that sense, an alternative (command line) porcelain is effectively a fork. Forks are good for experimental stuff and the like, but eventually it is always best for everyone involved if the better parts of the fork are merged back. Any project with a fork that grew big and didn't merge back made the whole community weaker in the long run.

Show 9 quoted lines
> If new and useful features (e.g. "creating a remote repository over SSH in
> one shot") are supported by another Porcelain (e.g.  "eg") they may be
> worth porting over to git-core, in order to make git-core more usable.
> There is a precedent for that kind of side port (e.g. "filter-branch" that
> came from Cogito).
> 
> But aliases for doing essentially the same thing in slightly different
> syntax?  I'd rather not to see them called "git foo".  In the end, I think
> it will harm the users, both new and old.

Again this should be evaluated on a case by case basis. I think this is clear already that re-targeting commands like revert is _not_ a good idea. But some other examples are not so controversial.

> If you go back to the list archive, you will find me suggesting a new set
> of commands with "gh" prefix, back in 1.3.X days, I think.
> 
> I was not joking.  The reasoning was exactly the same, and it remains so.

And my opinion as explained above is that it is not a good idea. Your suggestion didn't take off for a good reason.

Nicolas
Previous: Jakub NarebskiNext: Junio C Hamano
Message 44 of 49 in “EasyGit Integration”
  1. Scott ChaconJun 9, 2009
  2. Nicolas PitreJun 9, 2009
  3. Avery PennarunJun 9, 2009
  4. Björn SteinbrinkJun 9, 2009
  5. Avery PennarunJun 9, 2009
  6. Björn SteinbrinkJun 10, 2009
  7. Elijah NewrenJun 9, 2009
  8. Miles BaderJun 10, 2009
  9. Björn SteinbrinkJun 9, 2009
  10. Elijah NewrenJun 9, 2009
  11. Björn SteinbrinkJun 9, 2009
  12. Björn SteinbrinkJun 9, 2009
  13. Junio C HamanoJun 9, 2009
  14. Elijah NewrenJun 9, 2009
  15. Elijah NewrenJun 9, 2009
  16. Matthieu MoyJun 10, 2009
  17. Linus TorvaldsJun 9, 2009
  18. Elijah NewrenJun 9, 2009
  19. Linus TorvaldsJun 9, 2009
  20. Mark LodatoJun 10, 2009
  21. Miles BaderJun 10, 2009
  22. Theodore TsoJun 10, 2009
  23. Linus TorvaldsJun 10, 2009
  24. Felipe ContrerasJun 10, 2009
  25. Linus TorvaldsJun 10, 2009
  26. Scott ChaconJun 10, 2009
  27. Jakub NarebskiJun 11, 2009
  28. Felipe ContrerasJun 11, 2009
  29. Jakub NarebskiJun 11, 2009
  30. Felipe ContrerasJun 12, 2009
  31. Jakub NarebskiJun 12, 2009
  32. Felipe ContrerasJun 12, 2009
  33. Jakub NarebskiJun 12, 2009
  34. Felipe ContrerasJun 12, 2009
  35. Björn SteinbrinkJun 13, 2009
  36. Felipe ContrerasJun 11, 2009
  37. Elijah NewrenJun 10, 2009
  38. Matthieu MoyJun 10, 2009
  39. Sam VilainJun 10, 2009
  40. Linus TorvaldsJun 10, 2009
  41. Junio C HamanoJun 10, 2009
  42. Sam VilainJun 10, 2009
  43. Jakub NarebskiJun 10, 2009
  44. Nicolas PitreJun 10, 2009
  45. Junio C HamanoJun 10, 2009
  46. Elijah NewrenJun 10, 2009
  47. Scott ChaconJun 10, 2009
  48. Felipe ContrerasJun 10, 2009
  49. Felipe ContrerasJun 10, 2009

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.