Mercurial API для Java? - PullRequest
       15

Mercurial API для Java?

28 голосов
/ 19 декабря 2008

Существует ли простой API для доступа к репозиториям Mercurial из Java?

Существуют плагины для Netbeans и Eclipse, но, в отличие от своих коллег из Subversion, они не используют общую библиотеку более низкого уровня, но имеют свои собственные оболочки для вызова двоичного файла Mercurial. Вызов двоичного кода был бы нормальным (на данный момент), но, кажется, очень трудно использовать эти плагины в автономных приложениях (вне среды IDE, для которой они были созданы).

Существует также HgKit, но это очень пре-альфа.

Ответы [ 5 ]

18 голосов
/ 02 ноября 2011

Новая опция JavaHg , которая предоставляет высокоуровневый Java API. модульные тесты дают хороший пример того, как с ним программировать (начиная с JavaHg 0.1):

public void commitTest() throws IOException {
    Repository repo = getTestRepository();
    writeFile("x", "abc");

    CommitCommand commit = CommitCommand.on(repo);
    StatusCommand status = StatusCommand.on(repo);

    List<StatusLine> statusLines = status.lines();
    Assert.assertEquals(1, statusLines.size());
    Assert.assertEquals(StatusLine.Type.UNKNOWN, statusLines.get(0).getType());

    AddCommand.on(repo).execute();
    statusLines = status.lines();
    Assert.assertEquals(1, statusLines.size());
    Assert.assertEquals(StatusLine.Type.ADDED, statusLines.get(0).getType());

    commit.message("Add a file").user("Martin Geisler");
    Changeset cset = commit.execute();
    Assert.assertEquals("Martin Geisler", cset.getUser());
    statusLines = status.lines();
    Assert.assertEquals(0, statusLines.size());
}

Он взаимодействует с Сервером команд Mercurial , присутствующим в версии 1.9 и более поздних. Это означает, что будет существовать постоянный процесс Mercurial, который принимает несколько команд, и поэтому вы избегаете издержек запуска , обычно связанных с запуском Mercurial. Мы ожидаем, что он будет использоваться в следующей версии MercurialEclipse. (Я один из авторов JavaHg.)

8 голосов
/ 01 ноября 2011

hg4j имеет больше функциональных возможностей (например, клон) и, похоже, находится в процессе разработки

4 голосов
/ 19 декабря 2008

Вы смотрели на Jython? Насколько я могу видеть здесь , это должно помочь в использовании ртутных модулей python из среды Java, как JRuby для Ruby.

3 голосов
/ 07 августа 2011

Существует также hg4j , но пока он позволяет только читать хранилище.

3 голосов
/ 11 мая 2009

В плагине Maven SCM , по-видимому, имеется Mercurial, доступный . Однако я не знаю, насколько применим этот провайдер в вашем случае (т. Е. Насколько он тесно связан с архитектурой Maven и / или как он взаимодействует с hg).

...