Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mercurial v Git v Subversion

I need to choose a VCS to embed within a Java application I'm developing. The Java application will interact with the VCS via an API, but the user will also interact with it directly via an Eclipse plugin.

3 candidate VCS have been identified: Mercurial, Git and Subversion. I need to choose one based on the following criteria (in no particular order):

  • Java API. This is not 100% necessary, because the application could issue VCS commands via the command-line if no Java API is available. However, an API would obviously be preferable
  • Eclipse plugin
  • Simplicity. The people using the VCS (indirectly via the application or directly via Eclipse), will be software developers, but probably not the most sophisticated of the species.
  • Licensing. The license must permit to use of the VCS (in the manner described above) in a commercial application

There may be other considerations I've overlooked, I'll update the question if any more spring to mind.

Thanks!

like image 371
Dónal Avatar asked Jun 16 '26 10:06

Dónal


1 Answers

  • Java API: Subversion has bindings for Java, and there is some kind of reimplementation of Mercurial in Java going on (see the dev mailing list).
  • Eclipse Plugin: There are plugins that support all three for Eclipse.
  • Simplicity: Subversion arguably has a simpler model being centralised. Mercurial tends to be simpler than Git to learn and use, while otherwise being quite close in features.
  • Licensing: Git and Mercurial are GPLed, but you can invoke them via the command line with no licensing implications. Subversion uses the Apache license, which is not copyleft.

Now - why not write an interface that abstracts the differences so you can support all three? Mercurial and Git are very similar, so it should be relatively straightforward to at least support these two.

like image 159
gavinb Avatar answered Jun 19 '26 00:06

gavinb



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!