diff --git a/plugins/git4idea/shared/api-dump.txt b/plugins/git4idea/shared/api-dump.txt index b581115e49f4..e2961362ff3a 100644 --- a/plugins/git4idea/shared/api-dump.txt +++ b/plugins/git4idea/shared/api-dump.txt @@ -132,9 +132,7 @@ e:git4idea.config.GitIncomingRemoteCheckStrategy - sf:FETCH:git4idea.config.GitIncomingRemoteCheckStrategy - sf:LS_REMOTE:git4idea.config.GitIncomingRemoteCheckStrategy - sf:NONE:git4idea.config.GitIncomingRemoteCheckStrategy -- f:getDescription():java.lang.String - s:getEntries():kotlin.enums.EnumEntries -- f:getText():java.lang.String - s:valueOf(java.lang.String):git4idea.config.GitIncomingRemoteCheckStrategy - s:values():git4idea.config.GitIncomingRemoteCheckStrategy[] e:git4idea.config.GitSaveChangesPolicy @@ -245,8 +243,10 @@ f:git4idea.config.GitVcsSettings - noStateLoaded():V - saveCommitAuthor(java.lang.String):V - setAddSuffixToCherryPicks(Z):V +- setAutoFetch(Z):V - setAutoUpdateIfPushRejected(Z):V - setBranchGroupingSettings(com.intellij.dvcs.branch.GroupingKey,Z):V +- setCheckRemote(Z):V - setCommitRenamesSeparately(Z):V - setFetchTagsMode(git4idea.fetch.GitFetchTagsMode):V - setFilterByActionInPopup(Z):V diff --git a/plugins/git4idea/shared/resources/messages/GitBundle.properties b/plugins/git4idea/shared/resources/messages/GitBundle.properties index 982ec8a8051a..80ffd1676442 100644 --- a/plugins/git4idea/shared/resources/messages/GitBundle.properties +++ b/plugins/git4idea/shared/resources/messages/GitBundle.properties @@ -797,12 +797,8 @@ settings.synchronize.branch.protection.rules.description=GitHub rules are added settings.credential.helper=Use credential helper settings.filter.update.info=Filter "Update Project" information by paths: settings.clean.working.tree=Clean working tree using: -settings.git.incoming.change.strategy.text=Check for incoming changes using: -settings.git.incoming.change.strategy.text.fetch=fetch -settings.git.incoming.change.strategy.description.fetch=Fetching all remotes -settings.git.incoming.change.strategy.text.lsremote=ls-remote -settings.git.incoming.change.strategy.description.lsremote=Do not fetch remotes -settings.git.incoming.change.strategy.text.none=Do not check +settings.git.auto.fetch.text=Fetch remote changes automatically +settings.git.check.remote.text=Check remote for incoming changes settings.git.incoming.change.strategy.condition.comment=Requires ''{0}'' option to be enabled in Advanced Settings settings.git.update.method.rebase.description=&Rebase the current branch on top of incoming changes settings.git.update.method.rebase=Rebase diff --git a/plugins/git4idea/shared/src/git4idea/config/GitIncomingRemoteCheckStrategy.kt b/plugins/git4idea/shared/src/git4idea/config/GitIncomingRemoteCheckStrategy.kt index e3cadff87506..7a1cc144176b 100644 --- a/plugins/git4idea/shared/src/git4idea/config/GitIncomingRemoteCheckStrategy.kt +++ b/plugins/git4idea/shared/src/git4idea/config/GitIncomingRemoteCheckStrategy.kt @@ -1,23 +1,11 @@ // Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package git4idea.config -import git4idea.i18n.GitBundle -import org.jetbrains.annotations.Nls -import org.jetbrains.annotations.PropertyKey - /** * Defines operation to be used to check incoming commits on remote. */ -enum class GitIncomingRemoteCheckStrategy( - textKey: @Nls @PropertyKey(resourceBundle = GitBundle.BUNDLE) String, - descriptionKey: @Nls @PropertyKey(resourceBundle = GitBundle.BUNDLE) String? = null, -) { - FETCH("settings.git.incoming.change.strategy.text.fetch", - "settings.git.incoming.change.strategy.description.fetch"), - LS_REMOTE("settings.git.incoming.change.strategy.text.lsremote", - "settings.git.incoming.change.strategy.description.lsremote"), - NONE("settings.git.incoming.change.strategy.text.none"); - - val text: @Nls String = GitBundle.message(textKey) - val description: @Nls String? = descriptionKey?.let(GitBundle::message) +enum class GitIncomingRemoteCheckStrategy { + FETCH, + LS_REMOTE, + NONE; } diff --git a/plugins/git4idea/shared/src/git4idea/config/GitVcsSettings.java b/plugins/git4idea/shared/src/git4idea/config/GitVcsSettings.java index 45466103e99a..6bade96e17e3 100644 --- a/plugins/git4idea/shared/src/git4idea/config/GitVcsSettings.java +++ b/plugins/git4idea/shared/src/git4idea/config/GitVcsSettings.java @@ -267,6 +267,14 @@ public final class GitVcsSettings extends SimplePersistentStateComponent { val list = mutableListOf( cdAutoUpdateOnPush(project), @@ -110,6 +125,7 @@ internal fun gitOptionDescriptors(project: Project): List { cdWarnAboutBadFileNames(project), cdEnableStagingArea, cdExcludeIgnored(project), + cdAutoFetch(project), ) val manager = GitRepositoryManager.getInstance(project) if (manager.moreThanOneRoot()) { @@ -134,22 +150,15 @@ internal class GitVcsPanel(private val project: Project) : private val projectSettings get() = GitVcsSettings.getInstance(project) private fun Panel.checkIncomingChangesRows() { - val predicate = AdvancedSettingsPredicate("git.update.incoming.outgoing.info", disposable!!) - row(message("settings.git.incoming.change.strategy.text")) { - comboBox(EnumComboBoxModel(GitIncomingRemoteCheckStrategy::class.java), listCellRenderer("") { - text(value.text) - value.description?.let { description -> - text(description) { - foreground = greyForeground - } - } - }).bindItem(projectSettings::getIncomingCommitsCheckStrategy, projectSettings::setIncomingCommitsCheckStrategy) - }.enabledIf(predicate) + val advancedSettingsPredicate = AdvancedSettingsPredicate("git.update.incoming.outgoing.info", disposable!!) + lateinit var autoFetchCheckBox: Cell + row { autoFetchCheckBox = checkBox(cdAutoFetch(project)) }.enabledIf(advancedSettingsPredicate) + row { checkBox(cdCheckRemoteForIncoming(project)) }.enabledIf(autoFetchCheckBox.selected.not().and(advancedSettingsPredicate)) indent { row { comment( message("settings.git.incoming.change.strategy.condition.comment", message("advanced.setting.git.update.incoming.outgoing.info"))) - .visibleIf(predicate.not()) + .visibleIf(advancedSettingsPredicate.not()) .applyToComponent { putClientProperty(DslComponentProperty.VERTICAL_COMPONENT_GAP, VerticalComponentGap(top = false)) }