/** * Returns proper updater based on the update policy (merge or rebase) selected by user or stored * in his .git/config * * @return {@link GitMergeUpdater} or {@link GitRebaseUpdater}. */ @NotNull public static GitUpdater getUpdater( @NotNull Project project, @NotNull Git git, @NotNull Map<VirtualFile, GitBranchPair> trackedBranches, @NotNull VirtualFile root, @NotNull ProgressIndicator progressIndicator, @NotNull UpdatedFiles updatedFiles) { final GitVcsSettings settings = GitVcsSettings.getInstance(project); if (settings == null) { return getDefaultUpdaterForBranch( project, git, root, trackedBranches, progressIndicator, updatedFiles); } switch (settings.getUpdateType()) { case REBASE: return new GitRebaseUpdater( project, git, root, trackedBranches, progressIndicator, updatedFiles); case MERGE: return new GitMergeUpdater( project, git, root, trackedBranches, progressIndicator, updatedFiles); case BRANCH_DEFAULT: // use default for the branch return getDefaultUpdaterForBranch( project, git, root, trackedBranches, progressIndicator, updatedFiles); } return getDefaultUpdaterForBranch( project, git, root, trackedBranches, progressIndicator, updatedFiles); }