@@ -105,6 +105,7 @@ protected Git getLocalGit(String folder) throws Exception {
105
105
.setURI (repo .getRepoUrl ())
106
106
.setCredentialsProvider (credentials )
107
107
.setNoCheckout (true )
108
+ .setCloneAllBranches (true )
108
109
//.setBranch(Constants.R_HEADS + Constants.MASTER)
109
110
.call ()
110
111
.close ();
@@ -853,4 +854,37 @@ public Boolean isRevisionTagged(String revision) {
853
854
throw new RuntimeException (e );
854
855
}
855
856
}
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
+ }
856
890
}
0 commit comments