29

Java から Mercurial リポジトリにアクセスするためのプレーンな API はありますか?

Netbeans と Eclipse 用のプラグインがありますが、対応する Subversion とは異なり、共通の低レベル ライブラリを使用せず、独自のラッパーを持って Mercurial バイナリを呼び出します。バイナリを呼び出すことは (今のところ) 問題ありませんが、これらのプラグインをスタンドアロン アプリケーションで使用することは非常に難しいようです (それらが構築された IDE の外部)。

HgKit もありますが、それは非常にプレアルファです。

4

5 に答える 5

18

新しいオプションは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());
}

バージョン 1.9 以降に存在するMercurial コマンド サーバーと対話します。これは、複数のコマンドを受け入れる永続的な Mercurial プロセスが存在することを意味し、Mercurialの起動に通常伴う起動オーバーヘッドを回避します。MercurialEclipse の今後のバージョンで使用される予定です。(私は JavaHg の作成者の 1 人です。)

于 2011-11-02T13:47:03.400 に答える
8

hg4jには現在、より多くの (クローン) 機能があり、実際に開発中であるようです。

于 2011-11-01T14:27:30.010 に答える
5

Jythonを見たことがありますか?ここで見る限り、JRubyがRubyに対して行うのと同じように、Java環境内からPythonMercurialモジュールを使用するのに役立つはずです。

于 2008-12-19T08:49:51.723 に答える
3

hg4jもありますが、今のところ、リポジトリの読み取りのみが許可されています。

于 2011-08-06T22:10:27.577 に答える