When initiating an Open Source project like openHAB, one of the many questions you have to answer before you start is: What VCS should I use?
In the beginning I did not really realize that this is an important question. Being a professional Java developer building commercial products with Eclipse, the use of Subversion with Subversive as an IDE integration just seemed natural to me and not worth any further considerations.
It was more by chance that I noticed questions about using git on other OS projects that were using SVN as well as the activities in the Eclipse community around (E)git. When Ekkehard Gentz started a blog series about DVCS and Eclipse, I eventually decided that I needed to have a closer look.
After having grasped the great advantages of a DVCS, especially for Open Source projects, I then had to decide for one - to keep things simply, I only looked at the most popular ones, Git and Mercurial.
As I am using OSGi and Eclipse, there were quite some strong arguments for Git:
In the beginning I did not really realize that this is an important question. Being a professional Java developer building commercial products with Eclipse, the use of Subversion with Subversive as an IDE integration just seemed natural to me and not worth any further considerations.
It was more by chance that I noticed questions about using git on other OS projects that were using SVN as well as the activities in the Eclipse community around (E)git. When Ekkehard Gentz started a blog series about DVCS and Eclipse, I eventually decided that I needed to have a closer look.
After having grasped the great advantages of a DVCS, especially for Open Source projects, I then had to decide for one - to keep things simply, I only looked at the most popular ones, Git and Mercurial.
As I am using OSGi and Eclipse, there were quite some strong arguments for Git:
- With JGit there is a pure Java implementation available
- EGit is now under the Eclipse umbrella and actively developed by many gifted Eclipse committers.
- It seems that Git is more hyped than Mercurial (at least that's my personal impression).
- Git seems to be more powerful and flexible
Hence I installed Git and EGit and gave it a try. After working with it a bit, I noticed that I didn't really feel comfortable with it. It is difficult to say why, but I made out the following reasons:
- I am a Mac and Windows user and Git somehow made me feel that its home is Linux. Although there is now a Windows version with msysgit, cygwin used to be the official way of using Git on Windows.
- Coming from SVN, the Git vocabulary can be confusing - e.g. something like a svn revert is not done with git-revert, but with git-reset. Together with the abundance of commands and functionality of Git, this can easily make people feel lost if it's their first time with a distributed VCS.
- The standard way for pushing and polling with Git is ssh - but this makes things much more difficult to use, if you are behind a firewall.
- EGit is still an incubation project and there's still some way to go until it reaches a level like Subversive: There is no support for the "Team Synchronization" view, which I use a lot. It also had some trouble with deletion and renaming of files. Last but not least - it is lacking icons on the context menus. Ha, I know, this is only cosmetics and should not be relevant at all; but still it leaves the impression of being a version to early to be used.
Almost all of the above items felt better on Mercurial (and HgEclipse), so I finally decided to go for it. I guess on the long run, I might reconsider this, once EGit has matured, but for the time being I am happy with this situation. And it is very reassuring that there are plenty of tools around to convert a Mercurial repo into a Git repo and vice versa - so no decision needs to be taken for eternity!
Now I am only waiting for Ekke to finish his series to eventually see to what conclusion he came and which DVCS is the one of his choice :-)