@@ -105,6 +105,7 @@ protected Git getLocalGit(String folder) throws Exception {
105105 .setURI (repo .getRepoUrl ())
106106 .setCredentialsProvider (credentials )
107107 .setNoCheckout (true )
108+ .setCloneAllBranches (true )
108109 //.setBranch(Constants.R_HEADS + Constants.MASTER)
109110 .call ()
110111 .close ();
@@ -853,4 +854,37 @@ public Boolean isRevisionTagged(String revision) {
853854 throw new RuntimeException (e );
854855 }
855856 }
857+
858+ @ Override
859+ public VCSTag getTagByName (String tagName ) {
860+ try (IVCSLockedWorkingCopy wc = repo .getVCSLockedWorkingCopy ();
861+ Git git = getLocalGit (wc );
862+ Repository gitRepo = git .getRepository ();
863+ RevWalk rw = new RevWalk (gitRepo )) {
864+
865+ List <Ref > tagRefs = getTagRefs ();
866+ RevCommit revCommit ;
867+ for (Ref ref : tagRefs ) {
868+ ObjectId relatedCommitObjectId = ref .getPeeledObjectId () == null ? ref .getObjectId () : ref .getPeeledObjectId ();
869+ revCommit = rw .parseCommit (relatedCommitObjectId );
870+ VCSCommit relatedCommit = getVCSCommit (revCommit );
871+ RevObject revObject = rw .parseAny (ref .getObjectId ());
872+ if (revObject instanceof RevTag ) {
873+ RevTag revTag = (RevTag ) revObject ;
874+ if (revTag .getTagName ().equals (tagName )) {
875+ return new VCSTag (revTag .getTagName (), revTag .getFullMessage (), revTag .getTaggerIdent ().getName (), relatedCommit );
876+ }
877+ } else {
878+ if (ref .getName ().equals (tagName )) {
879+ return new VCSTag (ref .getName ().replace ("refs/tags/" , "" ), null , null , relatedCommit );
880+ }
881+ }
882+ }
883+ return null ;
884+ } catch (GitAPIException e ) {
885+ throw new EVCSException (e );
886+ } catch (Exception e ) {
887+ throw new RuntimeException (e );
888+ }
889+ }
856890}
0 commit comments