@ApiStatus.Internal
  public static UpdateSession performUpdate(Project project,
                                            FilePath[] filePaths,
                                            UpdatedFiles updatedFiles,
                                            ProgressIndicator progressIndicator,
                                            UpdateMethod updateMethod,
                                            Map<GitRepository, GitBranchPair> updateConfig) {
    GitRepositoryManager manager = GitRepositoryManager.getInstance(project);
    Set<GitRepository> repositories = ContainerUtil.map2SetNotNull(asList(filePaths), manager::getRepositoryForFile);

    final GitUpdateProcess gitUpdateProcess =
      new GitUpdateProcess(project, progressIndicator, repositories, updatedFiles, updateConfig, true, true);

    boolean result = gitUpdateProcess.update(updateMethod).isSuccess();

    Map<GitRepository, HashRange> updatedRanges = gitUpdateProcess.getUpdatedRanges();
    GitUpdateInfoAsLog.NotificationData notificationData = updatedRanges != null
                                                           ? new GitUpdateInfoAsLog(project, updatedRanges).calculateDataAndCreateLogTab()
                                                           : null;

    return new GitUpdateSession(project, notificationData, result, gitUpdateProcess.getSkippedRoots());
  }
@ApiStatus.Internal
  public static UpdateSession performUpdate(Project project,
                                            FilePath[] filePaths,
                                            UpdatedFiles updatedFiles,
                                            ProgressIndicator progressIndicator,
                                            UpdateMethod updateMethod,
                                            Map<GitRepository, GitBranchPair> updateConfig)