diff --git a/plugins/git4idea/resources/META-INF/plugin.xml b/plugins/git4idea/resources/META-INF/plugin.xml index 310c66f15cdd..e8bb15de4337 100644 --- a/plugins/git4idea/resources/META-INF/plugin.xml +++ b/plugins/git4idea/resources/META-INF/plugin.xml @@ -548,6 +548,7 @@ + diff --git a/plugins/git4idea/src/git4idea/fetch/GitFetchHandler.kt b/plugins/git4idea/src/git4idea/fetch/GitFetchHandler.kt new file mode 100644 index 000000000000..34324caf17c5 --- /dev/null +++ b/plugins/git4idea/src/git4idea/fetch/GitFetchHandler.kt @@ -0,0 +1,21 @@ +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package git4idea.fetch + +import com.intellij.openapi.extensions.ExtensionPointName +import com.intellij.openapi.progress.ProgressIndicator +import com.intellij.openapi.project.Project +import git4idea.repo.GitRemote +import git4idea.repo.GitRepository + +interface GitFetchHandler { + companion object { + @JvmField + val EP_NAME: ExtensionPointName = ExtensionPointName.create("Git4Idea.gitFetchHandler") + @JvmStatic + fun afterSuccessfulFetch(project: Project, fetches: Map>, indicator: ProgressIndicator) { + EP_NAME.extensionList.forEach { handler -> handler.doAfterSuccessfulFetch(project, fetches, indicator) } + } + } + + fun doAfterSuccessfulFetch(project: Project, fetches: Map>, indicator: ProgressIndicator) +} diff --git a/plugins/git4idea/src/git4idea/fetch/GitFetchSupportImpl.kt b/plugins/git4idea/src/git4idea/fetch/GitFetchSupportImpl.kt index 2181f855bfb8..9ae8dcd1a925 100644 --- a/plugins/git4idea/src/git4idea/fetch/GitFetchSupportImpl.kt +++ b/plugins/git4idea/src/git4idea/fetch/GitFetchSupportImpl.kt @@ -106,9 +106,15 @@ internal class GitFetchSupportImpl(private val project: Project) : GitFetchSuppo val results = waitForFetchTasks(tasks) val mergedResults = mutableMapOf() + val succeedResults = mutableListOf() for (result in results) { val res = mergedResults[result.repository] mergedResults[result.repository] = mergeRepoResults(res, result) + if (result.success()) succeedResults.add(result) + } + val successFetchesMap = succeedResults.groupBy({ it.repository }, { it.remote }) + if (successFetchesMap.isNotEmpty()) { + GitFetchHandler.afterSuccessfulFetch(project, successFetchesMap, progressManager.progressIndicator) } activity.finished() FetchResultImpl(project, VcsNotifier.getInstance(project), mergedResults)