mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
git: add handler for successful fetches
GitOrigin-RevId: c4b5a0820aae294a86902e260da1edfd3e2585d0
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d7136f71ee
commit
dba9ce20d6
@@ -548,6 +548,7 @@
|
||||
<extensionPoint interface="git4idea.checkin.GitCheckinExplicitMovementProvider"
|
||||
name="GitCheckinExplicitMovementProvider"
|
||||
dynamic="true"/>
|
||||
<extensionPoint interface="git4idea.fetch.GitFetchHandler" name="gitFetchHandler" dynamic="true"/>
|
||||
</extensionPoints>
|
||||
|
||||
<projectListeners>
|
||||
|
||||
@@ -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<GitFetchHandler> = ExtensionPointName.create("Git4Idea.gitFetchHandler")
|
||||
@JvmStatic
|
||||
fun afterSuccessfulFetch(project: Project, fetches: Map<GitRepository, List<GitRemote>>, indicator: ProgressIndicator) {
|
||||
EP_NAME.extensionList.forEach { handler -> handler.doAfterSuccessfulFetch(project, fetches, indicator) }
|
||||
}
|
||||
}
|
||||
|
||||
fun doAfterSuccessfulFetch(project: Project, fetches: Map<GitRepository, List<GitRemote>>, indicator: ProgressIndicator)
|
||||
}
|
||||
@@ -106,9 +106,15 @@ internal class GitFetchSupportImpl(private val project: Project) : GitFetchSuppo
|
||||
val results = waitForFetchTasks(tasks)
|
||||
|
||||
val mergedResults = mutableMapOf<GitRepository, RepoResult>()
|
||||
val succeedResults = mutableListOf<SingleRemoteResult>()
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user