2011-09-21 12 views

答えて

11

Git object modelは、特定のオブジェクトに関する情報を含むオブジェクトとしてタグを記述する。 (他のものの中で)コミットするので、あなたが望む情報を得ることは、純粋なgitでは不可能です(コミットオブジェクトは、関連するタグに関する情報を持っていません)。これは "後方に"行なわれ、タグオブジェクトをとり、特定のコミットを参照する必要があります。

したがって、特定のコミットに指定されたタグについての情報を取得するには、そのタグを繰り返し(タグ)、適切なものを選択する必要があります。

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()); 
    } 
} 
+1

質問に対する詳しい情報は、JGitメーリングリストの[this thread](http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg01706.html)にあります。 – Sonson123

+0

コミットの代わりにタグを収集してはいけませんか? –

+1

そしてorg.eclipse.jgit.api.Git.tagList()。call()はリストを返します。 –

4

あなたがコミットするために正確に一つのタグがあることがわかっている場合は、JGitのより新しいバージョン(~ November 2013)で、describeを使用することができます。

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

あなたはタグが存在するかどうかを確認するために、結果を解析することができますが、複数のタグがあることができれば、あなたはMarcins溶液で行く必要があります。

関連する問題