5

タガーと一緒にリポジトリのすべてのタグのリストを取得し、JGitでコミットIDを取得したいと思います。

Git.tagList().call()まず、コマンドを試し、タグを解析しました。

objectIdOfTag = oneResultOfTheTagList.getObjectId(); 
// or should I call getPeeledObjectId() here?

RevWalk walk = new RevWalk(repository);
RevTag tag = walk.parseTag(objectIdOfTag);

これは私のリポジトリでは機能しますが、これが正しい方法かどうかはわかりません。呼び出すのは正しいですかRef.getObjectId()、それとも呼び出す必要がありますRef.getPeeledObjectId()か?(「ピーリングされたObjectId」とは何ですか?)

JGitでタグリストを取得する場合、軽量タグと注釈付きタグに違いはありますか?

4

1 に答える 1

7

getObjectIdここで正しいです。注釈付きタグの場合、タグが最終的に指すコミットのIDではなく、注釈付きタグオブジェクトのIDを取得する必要があります。参考文献のJavadocも参照してください。

タグを解析するには、軽量のケースと注釈付きのケースの両方を処理する必要があります。

RevObject object = walk.parseAny(objectIdOfTag);
if (object instanceof RevTag) {
    // annotated
} else if (object instanceof RevCommit) {
    // lightweight
} else {
    // invalid
}
于 2013-02-18T10:11:04.933 に答える