From 04bea33a04dd2de07d9e2e0088b6d0e2205dc60c Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Tue, 23 Sep 2014 17:42:53 +0400 Subject: [PATCH] GitOptionsTopHitProvider: two options added --- .../config/GitOptionsTopHitProvider.java | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/plugins/git4idea/src/git4idea/config/GitOptionsTopHitProvider.java b/plugins/git4idea/src/git4idea/config/GitOptionsTopHitProvider.java index 7eb3199a1eea..a9843c7d6d86 100644 --- a/plugins/git4idea/src/git4idea/config/GitOptionsTopHitProvider.java +++ b/plugins/git4idea/src/git4idea/config/GitOptionsTopHitProvider.java @@ -15,16 +15,19 @@ */ package git4idea.config; +import com.intellij.dvcs.branch.DvcsSyncSettings; import com.intellij.ide.ui.OptionsTopHitProvider; import com.intellij.ide.ui.PublicMethodBasedOptionDescription; import com.intellij.ide.ui.search.BooleanOptionDescription; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.impl.VcsDescriptor; +import git4idea.repo.GitRepositoryManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -43,11 +46,28 @@ public final class GitOptionsTopHitProvider extends OptionsTopHitProvider { if (project != null) { for (VcsDescriptor descriptor : ProjectLevelVcsManager.getInstance(project).getAllVcss()) { if ("Git".equals(descriptor.getDisplayName())) { - return Collections.unmodifiableCollection(Arrays.asList( - option(project, "Git: Commit automatically on cherry-pick", "isAutoCommitOnCherryPick", "setAutoCommitOnCherryPick"), - option(project, "Git: Auto-update if push of the current branch was rejected", "autoUpdateIfPushRejected", "setAutoUpdateIfPushRejected"), - option(project, "Git: Warn if CRLF line separators are about to be committed", "warnAboutCrlf", "setWarnAboutCrlf"), - option(project, "Git: Warn when committing in detached HEAD or during rebase", "warnAboutDetachedHead", "setWarnAboutDetachedHead"))); + final GitVcsSettings settings = GitVcsSettings.getInstance(project); + ArrayList options = new ArrayList(); + options.add(option(project, "Git: Commit automatically on cherry-pick", "isAutoCommitOnCherryPick", "setAutoCommitOnCherryPick")); + options.add(option(project, "Git: Auto-update if push of the current branch was rejected", "autoUpdateIfPushRejected", "setAutoUpdateIfPushRejected")); + GitRepositoryManager manager = ServiceManager.getService(project, GitRepositoryManager.class); + if (manager != null && manager.moreThanOneRoot()) { + options.add(new BooleanOptionDescription("Git: Control repositories synchronously", "vcs.Git") { + @Override + public boolean isOptionEnabled() { + return settings.getSyncSetting() == DvcsSyncSettings.Value.SYNC; + } + + @Override + public void setOptionState(boolean enabled) { + settings.setSyncSetting(enabled ? DvcsSyncSettings.Value.SYNC : DvcsSyncSettings.Value.DONT_SYNC); + } + }); + } + options.add(option(project, "Git: Warn if CRLF line separators are about to be committed", "warnAboutCrlf", "setWarnAboutCrlf")); + options.add(option(project, "Git: Warn when committing in detached HEAD or during rebase", "warnAboutDetachedHead", "setWarnAboutDetachedHead")); + options.add(option(project, "Git: Allow force push", "isForcePushAllowed", "setForcePushAllowed")); + return Collections.unmodifiableCollection(options); } } }