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

Re: git versus CVS (versus bk)

From
Linus Torvalds <torvalds@osdl.org>
Date
Oct 31, 2005, 16:18 UTC
Message-ID
<Pine.LNX.4.64.0510310804400.27915@g5.osdl.org>
In-Reply-To
<Pine.LNX.4.63.0510311111340.2916@wbgn013.biozentrum.uni-wuerzburg.de>
On Mon, 31 Oct 2005, Johannes Schindelin wrote:
Show 6 quoted lines
> 
> How about adding the whole explanation as
> 
> 	git/Documentation/howto/tell-why-cvs-sucks.txt
> 
> (maybe with some more polite name)?
Hey, if somebody else does it, that's fine.

I'm personally _so_ biased against CVS that I'm not neutral. I really hate the thing. I'd much rather use tar-balls and patches than CVS: I think "quilt" ends up being much nicer in many ways than CVS can be.

So feel free to take my explanations and write something up. I just don't want to do it, because I fear I might be unfair to CVS (well.. I'm personally 120% convinced I'm not, but still, there's a lot of people who actually _use_ it, so..).

Show 11 quoted lines
> Also, I´d like to add that CVS branching/merging is no good:
> 
> <tryingtoputonalbertsshoes>
> 
> Sometimes a developer gets an idea, or the need, to implement a certain 
> feature to a piece of free software. Now, this idea might seem good, but 
> it might take a while to
> 
> 	- implement it,
> 	- flesh the bugs out, and
> 	- maybe realize the idea was not all that good.
[ details deleted ]

Yes. I consider this to be part of the centralized/distributed issue, but it's worth talking about. A distributed system automatically implies that you can have "throw-away branches" for testing, and you can combine two or more of these test-branches without ever disturbing (or even _notifying_) the "real development" branch.

In a centralized system, any branches will always be in that central repository, so you can't do throw-away stuff without affecting everybody else. Maybe the actual _code_ won't be in the "real development" branch, but you're writing and affecting the same repository where the development happens.

Again, you could replicate the whole repo, and do things there, but then you can't ever merge again, which in effect makes the small branch a big fork. So in that sense the CVS/SVN mentality basically encourages forking and discourages working together. This is more of the same thing that I alluded to when saying that CVS inevitably leads to "politics" - having a central place means that you have people who fight for control over it, even when they'd otherwise _want_ to cooperate.

With git (or with BK, or any truly decentralized model), you just make your own repo, do your development there, and you never need to ask for permissions from the central repo people. If the development works out, you just ask people to merge back. And if it doesn't, you don't even have to tell people what a total failure you were.

So with the distributed model, you don't have to publicly humiliate yourself when you do something stupid. Similarly, you don't have to publicly prove that you're "good enough" before you can play in the sandbox. In other words, there's no need for politics and egos.

(Now, obviously, when you've actually done the work, if people recognize that you're a mental giant, they'll be more likely to merge with you, and you'll generally have an easier time. So I'm not saying that a distributed model takes away the need for showing how good you are, but it doesn't make that a central pre-conception).

			Linus
Previous: Johannes SchindelinNext: wa1ter@myrealbox.com
Message 6 of 61 in “git versus CVS (versus bk)”
  1. waltOct 31, 2005
  2. Martin LanghoffOct 31, 2005
  3. H. Peter AnvinOct 31, 2005
  4. Linus TorvaldsOct 31, 2005
  5. Johannes SchindelinOct 31, 2005
  6. Linus TorvaldsOct 31, 2005
  7. wa1ter@myrealbox.comOct 31, 2005
  8. Randal L. SchwartzOct 31, 2005
  9. waltOct 31, 2005
  10. Daniel BarkalowNov 1, 2005
  11. Linus TorvaldsNov 1, 2005
  12. Joel BeckerOct 31, 2005
  13. Martin LanghoffOct 31, 2005
  14. Joel BeckerOct 31, 2005
  15. Petr BaudisNov 1, 2005
  16. Joel BeckerNov 1, 2005
  17. Petr BaudisNov 1, 2005
  18. Petr BaudisNov 7, 2005
  19. Josef WeidendorferNov 8, 2005
  20. Petr BaudisNov 8, 2005
  21. Randal L. SchwartzNov 1, 2005
  22. Linus TorvaldsNov 1, 2005
  23. Randal L. SchwartzNov 1, 2005
  24. Linus TorvaldsNov 1, 2005
  25. Junio C HamanoNov 1, 2005
  26. Junio C HamanoOct 31, 2005
  27. Joel BeckerOct 31, 2005
  28. Linus TorvaldsOct 31, 2005
  29. Junio C HamanoOct 31, 2005
  30. Joel BeckerOct 31, 2005
  31. Junio C HamanoNov 1, 2005
  32. Joel BeckerNov 1, 2005
  33. Martin LanghoffNov 1, 2005
  34. Joel BeckerNov 1, 2005
  35. Linus TorvaldsNov 1, 2005
  36. Petr BaudisNov 1, 2005
  37. Catalin MarinasNov 1, 2005
  38. Theodore Ts'oNov 1, 2005
  39. hgmq vs. StGITPetr Baudis, Nov 1, 2005
  40. Catalin MarinasNov 1, 2005
  41. Petr BaudisNov 1, 2005
  42. Catalin MarinasNov 1, 2005
  43. Chuck LeverNov 1, 2005
  44. Chris MasonNov 1, 2005
  45. Catalin MarinasNov 1, 2005
  46. Chris MasonNov 1, 2005
  47. Catalin MarinasNov 1, 2005
  48. Chris MasonNov 2, 2005
  49. Catalin MarinasNov 5, 2005
  50. Petr BaudisNov 9, 2005
  51. Pavel MachekNov 10, 2005
  52. Catalin MarinasNov 10, 2005
  53. Chris MasonNov 1, 2005
  54. Linus TorvaldsNov 1, 2005
  55. Catalin MarinasNov 1, 2005
  56. Catalin MarinasNov 1, 2005
  57. Chris MasonNov 1, 2005
  58. Catalin MarinasNov 1, 2005
  59. Daniel BarkalowNov 1, 2005
  60. Linus TorvaldsOct 31, 2005
  61. wa1ter@myrealbox.comOct 31, 2005

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.