From e37c8502a939919ecfa95bb34a3cc77a6ab2b49c Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 10 Jun 2024 21:02:37 +0200 Subject: [PATCH] IJPL-82026 git: fix 'git submodule update' being called multiple times for recursively included submodules GitOrigin-RevId: 0c55e917f01fddf1db4b48634abec536027b9b39 --- .../git4idea/src/git4idea/update/GitUpdateProcess.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java b/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java index 19d6cd96d4d8..86c068785803 100644 --- a/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java +++ b/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java @@ -311,10 +311,14 @@ public final class GitUpdateProcess { } } - for (GitRepository repository : mySubmodulesInDetachedHead.keySet()) { - GitUpdater updater = new GitSubmoduleUpdater(myProject, myGit, mySubmodulesInDetachedHead.get(repository).getParent(), repository, + for (GitSubmodule submodule : mySubmodulesInDetachedHead.values()) { + GitRepository submoduleRepository = submodule.getRepository(); + GitRepository parentRepository = submodule.getParent(); + if (mySubmodulesInDetachedHead.containsKey(parentRepository)) continue; // updated recursively + + GitUpdater updater = new GitSubmoduleUpdater(myProject, myGit, parentRepository, submoduleRepository, myProgressIndicator, myUpdatedFiles); - updaters.put(repository, updater); + updaters.put(submoduleRepository, updater); } LOG.info("Updaters: " + updaters);