Why git is loved and loathed
If you ask people what they use for source control, they will either say, "subversion/sourcesafe/TFS" or, "you need to use git because it's amazing". I have approached git several times now and still find it, for the most part, impenetrable. No doubt, I will open a can of worms with this post but this is my take on git - from the perspective of someone who knows how to write asp.net, php, C, C++ and Java under Windows and Linux.
- I don't dispute that git is powerful and fast, presumably there are no problems with the underlying technology working properly - i.e. it is technically reliable.
- The fact it is a distributed model does take time to get used to but this is not the reason why I and others find it hard to install and use.
- The use of github and gitolite to run repos does not help in understanding the model which is supposed to be distributed but which github etc seem to imply is actually client-server. The use of these tools is not explained well - although I saw one useful comment which said these are primarily to allow more fine-grained security setup.
- The tutorials seem to be mostly theoretical/over-simplified. Every time I've actually tried to use it for a real-life scenario, none of these tutorials work for very long - I get errors and all kinds of confusion.
- Sadly the attitude of lots of git users seems to be very obnoxious and unhelpful. I saw one comment on a blog which said, "we are not going to dumb it down for idiots like you", which is a ridiculous viewpoint since most people are already saying they want to learn it but are struggling. A tool which is elitist is not going to last very long.
- The argument, "X thousand people have accounts so it must be good" is flawed. I bet if you compared this to the number of people using Subversion, TFS, mercurial, even MS Sourcesafe I bet it would be tiny in comparison.
- The command set is disjointed and confusing in my opinion. Again, I have used various other source control systems and although I have not liked all of these, the basic workflow is very easy to understand and use.
- My own opinion is that unless you need to distributed architecture of git, you would be better served using one of the traditional client-server systems. I have reverted to subversion and had it up and running across a dev box, repo server and web server in about an hour. I gave up on Git after the best part of a day.
Sorry git peeps - I'm sure it would only take some command names being changed/aliased and a more helpful introduction to git and people might use it....