@@ -729,7 +729,9 @@ public VCSTag createTag(String branchName, String tagName, String tagMessage, St
729
729
Repository gitRepo = git .getRepository ();
730
730
RevWalk rw = new RevWalk (gitRepo )) {
731
731
732
- checkout (git , gitRepo , branchName , null );
732
+ git
733
+ .pull ()
734
+ .call ();
733
735
734
736
RevCommit commitToTag = revisionToTag == null ? null : rw .parseCommit (ObjectId .fromString (revisionToTag ));
735
737
@@ -763,9 +765,7 @@ public List<VCSTag> getTags() {
763
765
Repository gitRepo = git .getRepository ();
764
766
RevWalk rw = new RevWalk (gitRepo )) {
765
767
766
- git .pull ().call ();
767
-
768
- List <Ref > tagRefs = getTagRefs ();
768
+ List <Ref > tagRefs = getTagRefs (git );
769
769
List <VCSTag > res = new ArrayList <>();
770
770
RevCommit revCommit ;
771
771
for (Ref ref : tagRefs ) {
@@ -778,6 +778,7 @@ public List<VCSTag> getTags() {
778
778
RevTag revTag = (RevTag ) revObject ;
779
779
tag = new VCSTag (revTag .getTagName (), revTag .getFullMessage (), revTag .getTaggerIdent ().getName (), relatedCommit );
780
780
} else {
781
+ // tag is unannotated
781
782
tag = new VCSTag (ref .getName ().replace ("refs/tags/" , "" ), null , null , relatedCommit );
782
783
}
783
784
res .add (tag );
@@ -788,19 +789,17 @@ public List<VCSTag> getTags() {
788
789
}
789
790
}
790
791
791
- List <Ref > getTagRefs () throws Exception {
792
- try (IVCSLockedWorkingCopy wc = repo .getVCSLockedWorkingCopy ();
793
- Git git = getLocalGit (wc );
794
- Repository gitRepo = git .getRepository ()) {
795
-
796
- git .pull ().call ();
797
-
798
- List <Ref > refs = git
799
- .tagList ()
800
- .call ();
801
-
802
- return refs ;
803
- }
792
+ private List <Ref > getTagRefs (Git git ) throws Exception {
793
+ // need to remove tags from local repo which are removed in origin
794
+ git
795
+ .fetch ()
796
+ .setRefSpecs (new RefSpec ("+refs/tags/*:refs/tags/*" ))
797
+ .setRemoveDeletedRefs (true )
798
+ .setCredentialsProvider (credentials )
799
+ .call ();
800
+ return git
801
+ .tagList ()
802
+ .call ();
804
803
}
805
804
806
805
@ Override
@@ -810,15 +809,16 @@ public void removeTag(String tagName) {
810
809
Repository gitRepo = git .getRepository ();
811
810
RevWalk rw = new RevWalk (gitRepo )) {
812
811
813
- checkout ( git , gitRepo , MASTER_BRANCH_NAME , null );
814
-
812
+ git . pull (). call ( );
813
+
815
814
git
816
815
.tagDelete ()
817
816
.setTags (tagName )
818
817
.call ();
819
-
818
+
820
819
push (git , new RefSpec (":refs/tags/" + tagName ));
821
820
821
+
822
822
} catch (GitAPIException e ) {
823
823
throw new EVCSException (e );
824
824
} catch (Exception e ) {
@@ -848,10 +848,8 @@ public List<VCSTag> getTagsOnRevision(String revision) {
848
848
RevWalk rw = new RevWalk (gitRepo )) {
849
849
850
850
List <VCSTag > res = new ArrayList <>();
851
-
852
- git .pull ().call ();
853
851
854
- List <Ref > tagRefs = getTagRefs ();
852
+ List <Ref > tagRefs = getTagRefs (git );
855
853
RevCommit revCommit ;
856
854
for (Ref ref : tagRefs ) {
857
855
ObjectId relatedCommitObjectId = ref .getPeeledObjectId () == null ? ref .getObjectId () : ref .getPeeledObjectId ();
0 commit comments