From 6ebb6c7631cb0db454ec659eaeca1e680f45051a Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 30 Nov 2021 19:39:18 +0300 Subject: [PATCH] IDEA-283434 git: prefer WSL executable when cloning projects into WSL GitOrigin-RevId: 4cf2e371960c3651f7623e5ce582b32b88cae079 --- plugins/git4idea/src/git4idea/commands/GitImpl.java | 3 ++- .../src/git4idea/config/GitExecutableManager.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/git4idea/src/git4idea/commands/GitImpl.java b/plugins/git4idea/src/git4idea/commands/GitImpl.java index 1127ed4c6cb0..5ba8dc00da20 100644 --- a/plugins/git4idea/src/git4idea/commands/GitImpl.java +++ b/plugins/git4idea/src/git4idea/commands/GitImpl.java @@ -183,7 +183,8 @@ public class GitImpl extends GitImplBase { @NotNull final String clonedDirectoryName, final GitLineHandlerListener @NotNull ... listeners) { return runCommand(() -> { // do not use per-project executable for 'clone' command - GitLineHandler handler = new GitLineHandler(null, parentDirectory, GitCommand.CLONE); + GitExecutable executable = GitExecutableManager.getInstance().getExecutableFor(parentDirectory); + GitLineHandler handler = new GitLineHandler(null, parentDirectory, executable, GitCommand.CLONE, emptyList()); handler.setSilent(false); handler.setStderrSuppressed(false); handler.setUrl(url); diff --git a/plugins/git4idea/src/git4idea/config/GitExecutableManager.java b/plugins/git4idea/src/git4idea/config/GitExecutableManager.java index bd49049f4187..f6c745035397 100644 --- a/plugins/git4idea/src/git4idea/config/GitExecutableManager.java +++ b/plugins/git4idea/src/git4idea/config/GitExecutableManager.java @@ -107,6 +107,16 @@ public class GitExecutableManager { return path; } + @NotNull + public GitExecutable getExecutableFor(@NotNull File gitDirectory) { + String path = GitVcsApplicationSettings.getInstance().getSavedPathToGit(); + if (path == null) { + WSLDistribution wslDistribution = WslPath.getDistributionByWindowsUncPath(gitDirectory.getPath()); + path = myExecutableDetector.detect(wslDistribution); + } + return getExecutable(path); + } + @NotNull public GitExecutable getExecutable(@Nullable Project project) { String path = getPathToGit(project);