Why Subversion is better than Git
databasesandlife.com
databasesandlife.com
Git is better for programmers. The author seems to need something for everyone else moreso. That's fine, but it doesn't make Subversion clearly better than Git.
I do find "You can checkout only a subdirectory" really handy, though.
Edit: This article is fully 3 years old! That colors things a bit, though it doesn't change my opinion.
As a collaborator i think it has failed us. I simply cant convince non-programmers to learn it. People who only occasionally use versioning systems simply do not need as much control. They need a much simplified layer over Git - that prevents them from screwing up . I have tried SmartGit for this - not simple enough, it still exposes the complexity.
Just use git because it's what people use. There is no need to learn 2 things when you can get by with just learning 1 thing. Spend your time on stuff that's important.
The things about git that make me like it better are that the branching and merging are easy and the distributed nature of the system. If your development process doesn't exploit the features of git, then svn would be a reasonable choice.
EDIT: Another key thing I like about git is that repos can be nested. The parent repo simply ignores the child repos. This is something where I get a lot of benefit.
While I recognize it may have its advantages, I dont see them yet (except for being distributed)
Note that I have not used git that much yet, maybe I just need to adapt to it (the documentation does not help much either), but I adapted to subversion a lot faster. Someone mentioned merges I had a few problems with them with subversion, git never did one so I cant tell.
I'm not sure why anyone should think this hard to do. When you do "git status" it even tells you how to do it:
git checkout -- myFile
That will replace any changes to myFile that haven't been checked in yet with the most recent version that was checked in. If you want to go back to an older version, you can do git checkout a2791d14adf3 myFile
where that funky number is any unique prefix of the commit identifier that "git log" shows you.Well, that's if you haven't "staged" your changes. If you've staged the changes, you have to "reset" the staging for the file first. I admit that this staging thing is a bit confusing, so I rarely stage anything. There's no reason that you need ever "stage" anything in Git if you don't want to, so I'm not sure that that bit of extra complexity is worth worrying about.
If you're making heavy use of svn externals then you'll find git submodules pretty horrible. But if your aim is to manage files between multiple users then git's distributed nature may make your life much easier if you give it some more time.
Linus Torvalds on Git: http://www.youtube.com/watch?v=4XpnKHJAok8
There are the bosses who want to do a quick wording change, there are the wording guys, there are the designers changing images, there are the HTML people, there are the operations people, there are the translation people who are entering Arabic or Chinese strings into the translation files.
If they are not able to do these changes directly, they all have to go across a programmer's desk which is a waste of their time. Further, these other employees are not as empowered as they could be, to do changes themselves.
Sending such things to the developer as email attachments, meaning they have no idea which version had been changed, isn't this exactly the problem that version control was designed to solve?