GitFetchResult (@NotNull GitRepository repository, @NotNull GitRemote remote, @Nullable String branch) { Git git = Git.getInstance(); String[] additionalParams = branch != null ? new String[]{getFetchSpecForBranch(branch, remote.getName())} : ArrayUtilRt.EMPTY_STRING_ARRAY; GitFetchPruneDetector pruneDetector = new GitFetchPruneDetector(); GitCommandResult result = git.fetch(repository, remote, Collections.singletonList(pruneDetector), additionalParams); GitFetchResult fetchResult; if (result.success()) { BackgroundTaskUtil.syncPublisher(repository.getProject(), GIT_AUTHENTICATION_SUCCESS).authenticationSucceeded(repository, remote); fetchResult = GitFetchResult.success(); } else { fetchResult = GitFetchResult.error(result.getErrorOutputAsJoinedString()); } fetchResult.addPruneInfo(pruneDetector.getPrunedRefs()); return fetchResult; }