jjshabado,
Yes svn merging does suck. We are in the process of seeing if we can migrate to git and have it do all the things we need it to. It is used on newer programs in the department, so there is hope. I'm not directly involved in the process, but the one thing I heard someone complain about is access control. We have sections of the tree that not everyone can have access to (not even read access). The funny things is that the main reason for considering the change is because there are times were a large number of people are off site with bad connections back to the main server, not because merging is a bitch.
tyler_cracker,
It does sound crazy, and to an extent it is. However, there is are some explanations. The reason for the branch was that we were being stalled by acquiring a license to a library we needed. So I could not check in the code that used the libraries to trunk because without the libraries, the nightly builds would crash. The other thing is that the program I'm writing is a support tool for the main line project. The main line is regularly tested and simulations are run, but the support tools are not. It is also a DARPA project so you have to pitch big to get funding. If the thing you pitch seems like it will be straight forward and guaranteed to work, they are not interested. It is a very different world than a commercial product. Not saying it is perfect, but it is the way it is.
I openly acknowledge that I'm not great at Linux. I'm not really good at computers, I'm just a good programmer. People have said the right way to do it, but it doesn't look like anyone actually explained why the other one doesn't do what you expect it to.
Continues git talk:
With my next personal project, I'm going to use git. Even though it will just be me, I'm still going to try and stick with a branching model like the one jj linked to. It wasn't until I watched
this video and actually saw git in action that the pieces started to piece together and I understood how it can work. Big merges are still going to be hard, but if you focus on branch/small change/merge, you won't have to do lots of big merges.
It seems like a hybrid model would work best. It is still technically distributed, but there is still one server that is treated as the golden repo. The nightly builds and tests work from that to ensure the final quality.