10

JGit API を使用して、特定のコミット ハッシュ (存在する場合) に関連付けられたタグを取得したいですか?

同じコードスニペットを提供してください。

4

2 に答える 2

12

Gitオブジェクトモデルは、タグを特定のオブジェクトに関する情報を含むオブジェクトとして記述します。commit (とりわけ)したがって、純粋な git で必要な情報を取得することは不可能です(commit オブジェクトには関連するタグに関する情報がありません)。これは「逆方向」に実行し、タグ オブジェクトを取得してから、特定のコミットを参照する必要があります。

したがって、特定のコミットに指定されたタグに関する情報を取得したい場合は、それら (タグ) を反復処理して適切なものを選択する必要があります。

List<RevTag> list = git.tagList().call();
ObjectId commitId = ObjectId.fromString("hash");
Collection<ObjectId> commits = new LinkedList<ObjectId>();
for (RevTag tag : list) {
    RevObject object = tag.getObject();
    if (object.getId().equals(commitId)) {;
        commits.add(object.getId());
    }
}
于 2011-09-21T16:37:06.867 に答える
6

コミットにタグが 1 つだけあることがわかっている場合は、JGit の最新バージョン ( ~ November 2013 ) でdescribeを使用できます。

Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()

タグが存在するかどうかを確認するために結果を解析できますが、複数のタグが存在する可能性がある場合は、Marcins ソリューションを使用する必要があります。

于 2014-06-18T14:08:32.287 に答える