Mercurial v Git v Subversion - PullRequest
       21

Mercurial v Git v Subversion

3 голосов
/ 30 ноября 2010

Мне нужно выбрать VCS для встраивания в разрабатываемое Java-приложение.Приложение Java будет взаимодействовать с VCS через API, но пользователь также будет взаимодействовать с ним напрямую через плагин Eclipse.

3 идентифицированных VCS-кандидата: Mercurial, Git и Subversion.Мне нужно выбрать один на основе следующих критериев (в произвольном порядке):

  • Java API .В этом нет необходимости на 100%, поскольку приложение может выдавать команды VCS через командную строку, если Java API недоступен.Тем не менее, API, очевидно, предпочтительнее
  • Плагин Eclipse
  • Простота .Люди, использующие VCS (косвенно через приложение или напрямую через Eclipse), будут разработчиками программного обеспечения, но, вероятно, не самыми изощренными из этого вида.
  • Лицензирование .Лицензия должна разрешать использование VCS (в порядке, описанном выше) в коммерческом приложении

Могут быть и другие соображения, которые я пропустил, я обновлю вопрос, если что-нибудь еще появитсяум.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 30 ноября 2010
  • Java API : в Subversion есть привязки для Java, и происходит какое-то новое воплощение Mercurial в Java (см. Список рассылки dev).
  • Eclipse Plugin : Существуют плагины, которые поддерживают все три для Eclipse.
  • Простота : Subversion, возможно, имеет централизованную простую модель. Mercurial, как правило, проще, чем Git, изучать и использовать, хотя в остальном он довольно близок по функциям.
  • Лицензирование : Git и Mercurial имеют лицензии GPL, но вы можете вызывать их через командную строку без каких-либо последствий для лицензирования. Subversion использует лицензию Apache, которая не имеет авторского права.

Теперь - почему бы не написать интерфейс, который абстрагирует различия, чтобы вы могли поддерживать все три? Mercurial и Git очень похожи, поэтому должно быть относительно просто поддерживать этих двоих.

0 голосов
/ 30 ноября 2010

Прежде всего, я бы вычеркнул Subversion, если у вашего приложения нет рабочего процесса, который особенно хорошо работает с централизованным VCS.И даже тогда я бы попытался использовать Mercurial или git, так как svn очень медленный.

Что касается Mercurial (hg) против Git, я лично выбрал бы git.С одной стороны, hg является более простым и интуитивно понятным, но git работает на намного быстрее и имеет гораздо больший запас ума, чем hg.

Хотя скриптируемость может быть проблемой.Git действительно создан для написания сценариев из оболочки Unix (хотя он будет работать в Windows с установленным программным обеспечением GNU).У Hg есть интерфейс Python, но, если я правильно помню, есть некоторые расширения C, которые, вероятно, сделают невозможным использование с Jython.Тем не менее, похоже, что является сторонней библиотекой git для Java: http://eclipse.org/jgit/

Что касается лицензирования, то hg и git оба под лицензией GPL, но если вы раскроете имне должно быть проблемой.SVN использует лицензию Apache, поэтому она может выиграть на этом фронте (в основном вы можете делать с ней все, что захотите).

...