@Override
  protected void execute() {
    String tagFullName = GitTag.REFS_TAGS_PREFIX + myTagName;

    int successRemotes = 0;
    int failureRemotes = 0;

    GitCompoundResult result = new GitCompoundResult(myProject);
    Collection<GitRepository> repositories = getRepositories();
    for (GitRepository repository: repositories) {
      String expectedCommit = myRepositories.get(repository);
      List<ForceWithLease> forceWithLease = expectedCommit != null
                                            ? singletonList(new ForceWithLeaseReference(tagFullName, expectedCommit))
                                            : emptyList();

      for (GitRemote remote: repository.getRemotes()) {
        GitCommandResult lsRemoteResult =
          myGit.lsRemoteRefs(myProject, repository.getRoot(), remote, singletonList(tagFullName), "--tags"); //NON-NLS
        if (!lsRemoteResult.success()) {
          result.append(repository, lsRemoteResult);
          continue;
        }

        if (hasTagOnRemote(tagFullName, lsRemoteResult.getOutput())) {
          GitCommandResult pushResult = myGit.push(repository, new GitPushParamsImpl(remote, ":" + tagFullName,
                                                                                     false, false, false, null, forceWithLease));
          result.append(repository, pushResult);

          if (pushResult.success()) {
            successRemotes++;
          }
          else {
            failureRemotes++;
          }
        }
      }

      repository.update();
    }

    int remotesCount = ContainerUtil.exists(repositories, it -> it.getRemotes().size() > 1) ? 1 : 2;

    if (successRemotes > 0) {
      String message = GitBundle.message("delete.remote.tag.operation.deleted.tag.on.remotes",
                                         remotesCount,
                                         myTagName);
      notifySuccessWithEmptyTitle(message);
    }
    else if (successRemotes == 0 && failureRemotes == 0) {
      String message = GitBundle.message("delete.remote.tag.operation.tag.does.not.exist.on.remotes",
                                         remotesCount,
                                         myTagName);
      notifySuccessWithEmptyTitle(message);
    }

    if (!result.totalSuccess()) {
      String title = GitBundle.message("delete.remote.tag.operation.failed.to.delete.tag.on.remotes",
                                       myTagName,
                                       remotesCount);
      VcsNotifier.getInstance(myProject)
        .notifyError(TAG_REMOTE_DELETION_ERROR, title, result.getErrorOutputWithReposIndication(), true);
    }
  }
@Override
  protected void execute()