Gerrit is wrong. Gerrit is evil. Gerrit is the beginning of all hell! If you're considering using it as version control system, you're most likely out of your mind! And you're asking yourself for a big troubles. If you're forced to use it (like I was), then believe me... your worst nightmares are ahead of you. Nothing, you seen in code review or version control systems up until now, hasn't prepared you for the pain you're about to suffer...
Gerrit is hard. If you found Git (behind Gerrit) hard to understand and operate, then don't worry -- the real hell is still before you. And one of the biggest Gerrit newbies' nightmares is situation, when Gerrit is unable to auto-merge particular change, showing "Change could not be merged because of a missing dependency" message. This mostly happens, when you abadon another change, on which current change depends.
Digital Oceans has officially opened new AMS2 datacenter in Amsterdam. This event forced me to do some small tests on quality of services, from my own (Poland's perspective) point of view.
I'm not talking about Quality of Service, because this is beyond any discussion. With standard (simple to answer) tickets being answered with 3-5 minutes (!!!) and with more complex cases solved with 3-5 hours, Digital Ocean's set itself a new world-standard. I have never found or met support of this scale.
So, if we're not talking about QoS, lets talk about performance.
Since both me and my boss / admin are kind of newbies to Git and since our both vision on how application structure should look is a way different, we quickly did a quite pretty mess in our main repository and got lost a little bit! :] After some short talk, we agreed on one thing (at least). We need to make a new, clean Git repository and push everything from my local repository to it.
This brought us to a question, how to do this? After a short googling, I found these Stack Overflow questions:
- Cannot push into git repository,
- Push local Git repo to new remote including all branches and tags
- Git push error '[remote rejected] master -> master (branch is currently checked out)',
but none of them gave me a quick-and-dirty answer (or: checklist) on how to do this, without too much read.
So, I decided to write my own. Once again, Git turned out to be much better and much easier than SVN.
I must admit that there were times, when I loved SVN an thought about Git as useless, hard-to-use, piece of crap. Now, I can't imagine my life without it.
When starting a new job, I found a person with similar thought as my past ones. And I decided to write this simple introduction to try to talk that person into changing his mind.