2 ms·
> 1) Cheap branches. Subversion has cheap branches. I think what people might mean by cheap branches is that git does cheap local branches. You can work in you
by rlpb 16y ago
> 1) Cheap branches. Subversion has cheap branches.
I think what people might mean by cheap branches is that git does cheap local branches. You can work in your own private space and only when you are ready commit the whole thing (reworked if necessary) to a central repository or otherwise publish it. The outcome is that commits are seen by the outside world (whether centralised or decentralised) as a set of complete logical steps to get from A to B. The history ends up showing the evolution of a program getting better. If in future a regression is discovered, it is easier to find and fix by using the history to find the logical step with an error and fixing just that.
With svn you have to create a branch on the central repository which will remain in history forever more. Whether or not this is a good or bad thing, the outcome is that fewer people do this way. Of course it happens for major features, and for private branches. However for private branches it happens less. Some try and do everything in one big commit instead of using individual logical steps. More people make mistakes and then have to commit corrections later. The outcome is that commits are seen by the outside world as a bunch of random not-necessary-logical steps and corrections as the programmer worked out how to solve the problem. This puts more errors and inconsistencies into the history, making it less useful.
> 2) Fork and hack without all that overhead of connecting with the community.
This is where git shines. The community often won't accept a patch first time. They'll discuss it and ask for modifications and improvements. git integrates with this really well, since you can rebase in your private branch often and submit new revisions of a particular patch, and this is all integrated into the revision control system. svn simply has nothing that can compare.
> 3) No central repository.
No requirement for a central repository. As you point out, git can be arranged in a way that uses one.
The difference between git and svn is that svn is just a means of maintaining a central repository. git is a tool that can do this but also helps you work on your own code in an integrated manner before you publish it.