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

Re: GIT vs Other: Need argument

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Apr 18, 2007, 16:07 UTC
Message-ID
<alpine.LFD.0.98.0704180851060.2828@woody.linux-foundation.org>
In-Reply-To
<Pine.LNX.4.64.0704181130150.12094@racer.site>
On Wed, 18 Apr 2007, Johannes Schindelin wrote:
Show 6 quoted lines
> 
> On Tue, 17 Apr 2007, Marcin Kasperski wrote:
> > 
> > a) Windows are unsupported
> 
> Wrong.

It's a bit more work to set up though, and it has a lot less mindshare, and testing, obviously.

So yes, windows is a step-child. I'd love for it to not be one, and we'll get there, but it's clearly not as supported as the unix side. We still use a fair number of shell scripts (which in turn use unix commands and pipelines).

We'll get away from it. I think GSoC will help here.
Show 6 quoted lines
> > b) Learning curve is too steep. Unclear relationship git-vs-cogito makes it
> > even worse.
> 
> Not so wrong. But then, it is clear that git is git is git. If you find it 
> too complicated, soon enough somebody says "use cogito instead" and you'll 
> find out about that.

Actually, at this stage, I really think cogito just *complicates* git usage. It hasn't been well-supported lately, and asking for help with cogito means that a lot of people can't help you. And you still end up using git commands for anything fancier.

So I don't think it's even true that new people should be pointed at cg any more.

What _is_ true is that git is simply different from CVS. I don't think it's necessarily harder to understand or use (in fact, I would argue that git is a lot _easier_ to understand), but it is *different*, and it has a ton more capabilities.

But compare setting up a git repository with setting up a CVS repository. With git, it's literally "git init", and you're done. No need to worry about CVSROOT issues etc. Everything is self-contained. CVS is *hard* to get into, by comparison.

But being different means that *if* you already know CVS, you actually have a lot of unlearning of idiotic and bad habits, _and_ you need to learn that things that were so hard and scary under CVS that you either never learnt them, or quickly learnt to avoid ("branches" and "merging") are just so _easy_ under git, that they are discussed in the very first chapters of "getting started".

I can pretty much guarantee that 95% of all CVS users have never done a branch or a merge, even if they have used it for *years*. And yet, in git, we kind of take both of those for granted, and make them visible pretty much from day one.

Git is just *easier*. But it is also different, and people are used to things being so hard that you'd never use them.

In a CVS world, you never even *need* to learn about branches and merging, because no normal user is ever actually expected to use either. In contrast, in the git world, pretty much every project uses multiple branches, and you are introduced to them at a minimum as the "origin" branches even for projects that just have one. So you're getting all these concepts that were so hard in CVS that you never ever even learnt to do them!

So people coming from CVS/SVN have a double shock: they are supposed to learn things that they "know" are hard (because CVS/SVN made them so damn hard - don't tell me that SVN branching is easy, because it is *not* easy. It may be cheaper to create a branch, but it has _all_ the same idiocies that CVS has once it's created). And on top of that, they have to re-learn something new.

So I really don't think cogito is the answer any more. The answer simply is: you have to learn that branches are *simple*. That's a big hurdle for some people. It's not the learning part that is hard, it's the *unlearning*. CVS/SVN has taught people that some things are complicated, and git uses those "complicated" things every day.

People who come from a CVS background would be *shocked* to learn that I do multiple merges a day. In fact, in the two years we've used git, we've had 3300 merges - and that's just counting the *nontrivial* ones that didn't just fast-forward. That's roughly an *average* of 4.5 merges a day. EVERY DAY. For two years.

In the CVS/SVN kind of mindset, a merge is something you do once a month, and you gird your loins for it. And it's usually just an expert, and only used for complex projects. A normal user would _never_ do a merge!

			Linus
Previous: Johannes SchindelinNext: Nicolas Pitre
Message 18 of 120 in “GIT vs Other: Need argument”
  1. Pietro MascagniApr 17, 2007
  2. Matthieu MoyApr 17, 2007
  3. Andy ParkinsApr 17, 2007
  4. Alex RiesenApr 17, 2007
  5. Martin LanghoffApr 17, 2007
  6. Linus TorvaldsApr 17, 2007
  7. Matthieu MoyApr 17, 2007
  8. Martin LanghoffApr 17, 2007
  9. Alex RiesenApr 17, 2007
  10. Dana HowApr 25, 2007
  11. Alex RiesenApr 25, 2007
  12. Tomash BrechkoApr 17, 2007
  13. Guilhem BonnefilleApr 17, 2007
  14. Andy ParkinsApr 17, 2007
  15. Shawn O. PearceApr 17, 2007
  16. Marcin KasperskiApr 17, 2007
  17. Johannes SchindelinApr 18, 2007
  18. Linus TorvaldsApr 18, 2007
  19. Nicolas PitreApr 18, 2007
  20. Bill LearApr 18, 2007
  21. Matthieu MoyApr 18, 2007
  22. Nicolas PitreApr 18, 2007
  23. Matthieu MoyApr 19, 2007
  24. Petr BaudisApr 19, 2007
  25. Matthieu MoyApr 20, 2007
  26. Theodore TsoApr 18, 2007
  27. Guilhem BonnefilleApr 18, 2007
  28. Linus TorvaldsApr 18, 2007
  29. Daniel BarkalowApr 18, 2007
  30. Michael K. EdwardsApr 18, 2007
  31. Johannes SchindelinApr 19, 2007
  32. Matthieu MoyApr 19, 2007
  33. Johannes SchindelinApr 19, 2007
  34. Alex RiesenApr 19, 2007
  35. Christian MICHONApr 19, 2007
  36. Johannes SchindelinApr 19, 2007
  37. Christian MICHONApr 19, 2007
  38. Linus TorvaldsApr 19, 2007
  39. Marcin KasperskiApr 19, 2007
  40. Linus TorvaldsApr 19, 2007
  41. Carl WorthApr 23, 2007
  42. Josef WeidendorferApr 23, 2007
  43. Carl WorthApr 23, 2007
  44. Junio C HamanoApr 23, 2007
  45. Carl WorthApr 23, 2007
  46. Linus TorvaldsApr 23, 2007
  47. Brian GernhardtApr 23, 2007
  48. Daniel BarkalowApr 24, 2007
  49. Junio C HamanoApr 24, 2007
  50. J. Bruce FieldsApr 24, 2007
  51. Linus TorvaldsApr 24, 2007
  52. J. Bruce FieldsApr 30, 2007
  53. Making git disappear when talking about my code (was: Re: GIT vs Other: Need argument)Carl Worth, Apr 25, 2007
  54. Carl WorthApr 25, 2007
  55. Linus TorvaldsApr 25, 2007
  56. Carl WorthApr 25, 2007
  57. Nicolas PitreApr 25, 2007
  58. Carl WorthApr 25, 2007
  59. Junio C HamanoApr 25, 2007
  60. Nicolas PitreApr 25, 2007
  61. Carl WorthApr 25, 2007
  62. Nicolas PitreApr 25, 2007
  63. Linus TorvaldsApr 25, 2007
  64. Daniel BarkalowApr 25, 2007
  65. Junio C HamanoApr 25, 2007
  66. Linus TorvaldsApr 25, 2007
  67. Nicolas PitreApr 25, 2007
  68. Daniel BarkalowApr 25, 2007
  69. Carl WorthApr 25, 2007
  70. Daniel BarkalowApr 25, 2007
  71. Nicolas PitreApr 25, 2007
  72. Junio C HamanoApr 23, 2007
  73. Johannes SchindelinApr 19, 2007
  74. History cleanup/rewriting script for gitJan Harkes, Apr 20, 2007
  75. Johannes SchindelinApr 20, 2007
  76. Petr BaudisApr 20, 2007
  77. Jan HarkesApr 20, 2007
  78. Marcin KasperskiApr 19, 2007
  79. Johannes SchindelinApr 19, 2007
  80. Marcin KasperskiApr 19, 2007
  81. Johannes SchindelinApr 19, 2007
  82. J. Bruce FieldsApr 19, 2007
  83. Theodore TsoApr 19, 2007
  84. [ANNOUNCE] Cogito is for salePetr Baudis, Apr 19, 2007
  85. Matthieu MoyApr 19, 2007
  86. Junio C HamanoApr 19, 2007
  87. Johannes SchindelinApr 19, 2007
  88. Guilhem BonnefilleApr 18, 2007
  89. Andy ParkinsApr 18, 2007
  90. Steven GrimmApr 18, 2007
  91. Jakub NarebskiApr 19, 2007
  92. Steven GrimmApr 19, 2007
  93. Jakub NarebskiApr 19, 2007
  94. Johannes SchindelinApr 19, 2007
  95. Julian PhillipsApr 19, 2007
  96. Steven GrimmApr 19, 2007
  97. Johannes SchindelinApr 19, 2007
  98. Junio C HamanoApr 19, 2007
  99. Junio C HamanoApr 19, 2007
  100. Steven GrimmApr 19, 2007
  101. Junio C HamanoApr 19, 2007
  102. Shawn O. PearceApr 20, 2007
  103. Jakub NarebskiApr 20, 2007
  104. Karl HasselströmApr 20, 2007
  105. Junio C HamanoApr 20, 2007
  106. Petr BaudisApr 20, 2007
  107. Junio C HamanoApr 20, 2007
  108. Steven GrimmApr 20, 2007
  109. Yann DirsonApr 18, 2007
  110. Sam VilainApr 18, 2007
  111. Yann DirsonApr 18, 2007
  112. Dana HowApr 25, 2007
  113. Marcin KasperskiApr 19, 2007
  114. Alex RiesenApr 19, 2007
  115. Andy ParkinsApr 19, 2007
  116. Shawn O. PearceApr 20, 2007
  117. Eric BlakeApr 20, 2007
  118. Johannes SchindelinApr 19, 2007
  119. Marcin KasperskiApr 19, 2007
  120. Johannes SchindelinApr 19, 2007

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.