@@ -757,6 +757,29 @@ public VCSTag createTag(String branchName, String tagName, String tagMessage) th
757757
758758 @ Override
759759 public List <VCSTag > getTags () {
760+ try (IVCSLockedWorkingCopy wc = repo .getVCSLockedWorkingCopy ();
761+ Git git = getLocalGit (wc );
762+ Repository gitRepo = git .getRepository ();
763+ RevWalk rw = new RevWalk (gitRepo )) {
764+ List <Ref > tagRefs = getTagRefs ();
765+ List <VCSTag > res = new ArrayList <>();
766+ RevTag revTag ;
767+ RevCommit revCommit ;
768+ for (Ref ref : tagRefs ) {
769+ revTag = rw .parseTag (ref .getObjectId ());
770+ revCommit = rw .parseCommit (ref .getObjectId ());
771+ VCSCommit relatedCommit = new VCSCommit (revCommit .getName (), revCommit .getFullMessage (), revCommit .getAuthorIdent ().getName ());
772+ VCSTag tag = new VCSTag (revTag .getTagName (), revTag .getFullMessage (), revTag .getTaggerIdent ().getName (), relatedCommit );
773+ res .add (tag );
774+ }
775+ return res ;
776+ } catch (Exception e ) {
777+ throw new RuntimeException (e );
778+ }
779+
780+ }
781+
782+ private List <Ref > getTagRefs () throws Exception {
760783 try (IVCSLockedWorkingCopy wc = repo .getVCSLockedWorkingCopy ();
761784 Git git = getLocalGit (wc );
762785 Repository gitRepo = git .getRepository ();
@@ -776,17 +799,25 @@ public List<VCSTag> getTags() {
776799 .tagList ()
777800 .call ();
778801
802+ return refs ;
803+ }
804+ }
805+
806+ @ Override
807+ public VCSTag getLastTag () {
808+ try (IVCSLockedWorkingCopy wc = repo .getVCSLockedWorkingCopy ();
809+ Git git = getLocalGit (wc );
810+ Repository gitRepo = git .getRepository ();
811+ RevWalk rw = new RevWalk (gitRepo )) {
812+
813+ List <Ref > tagRefs = getTagRefs ();
779814 RevTag revTag ;
780815 RevCommit revCommit ;
781- List <VCSTag > res = new ArrayList <>();
782- for (Ref ref : refs ) {
783- revTag = rw .parseTag (ref .getObjectId ());
784- revCommit = rw .parseCommit (ref .getObjectId ());
785- VCSCommit relatedCommit = new VCSCommit (revCommit .getName (), revCommit .getFullMessage (), revCommit .getAuthorIdent ().getName ());
786- VCSTag tag = new VCSTag (revTag .getTagName (), revTag .getFullMessage (), revTag .getTaggerIdent ().getName (), relatedCommit );
787- res .add (tag );
788- }
789- return res ;
816+ Ref ref = tagRefs .get (0 );
817+ revTag = rw .parseTag (ref .getObjectId ());
818+ revCommit = rw .parseCommit (ref .getObjectId ());
819+ VCSCommit relatedCommit = new VCSCommit (revCommit .getName (), revCommit .getFullMessage (), revCommit .getAuthorIdent ().getName ());
820+ return new VCSTag (revTag .getTagName (), revTag .getFullMessage (), revTag .getTaggerIdent ().getName (), relatedCommit );
790821 } catch (GitAPIException e ) {
791822 throw new EVCSException (e );
792823 } catch (Exception e ) {
0 commit comments