To get a list of tags, you can use Repository#getTags() or ListTagCommand .
Git has annotated and unannotated tags. While tags without authorization indicate a commit on which they were placed, an annotated tag points to a git object that contains - among other metadata, such as a message - a commit identifier.
The training test below illustrates this:
public class TagLearningTest { @Rule public final TemporaryFolder tempFolder = new TemporaryFolder(); private Git git; @Test public void testUnannotatedTag() throws Exception { RevCommit commit = git.commit().setMessage( "Tag Me!" ).call(); Ref tagRef = git.tag().setAnnotated( false ).setName( "Unannotated_Tag" ).call(); assertEquals( commit.getId(), tagRef.getObjectId() ); assertNull( git.getRepository().peel( tagRef ).getPeeledObjectId() ); } @Test public void testAnnotatedTag() throws Exception { RevCommit commit = git.commit().setMessage( "Tag Me!" ).call(); Ref tagRef = git.tag().setAnnotated( true ).setName( "Annotated_Tag" ).call(); assertEquals( commit, git.getRepository().peel( tagRef ).getPeeledObjectId() ); ObjectReader objectReader = git.getRepository().newObjectReader(); ObjectLoader objectLoader = objectReader.open( tagRef.getObjectId() ); RevTag tag = RevTag.parse( objectLoader.getBytes() ); objectReader.release(); assertEquals( commit.getId(), tag.getObject() ); } @Before public void setUp() throws GitAPIException { git = Git.init().setDirectory( tempFolder.getRoot() ).call(); } }
In JGit, the annotated tag is represented by RevTag , which is stored under the identifier that the ref tag points to.
To pass one form to another, you can clear the ref, and then check to see if its getPeeledObjectId() not null.
Ref peeledRef = git.getRepository().peel( tagRef ); boolean annotatedTag = peeledRef.getPeeledObjectId() != null;
The identifier of the cleared object is the one that indicates the commit on which the annotated tag was created.
source share