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)