Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 7ce90cf

Browse files
Merge branch 'enhancements/async-git-setup' into enhancements/git-setup-download
2 parents 4682d1b + 9a36b39 commit 7ce90cf

File tree

1 file changed

+41
-26
lines changed

1 file changed

+41
-26
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -84,36 +84,51 @@ public void Run(bool firstRun)
8484
}
8585
});
8686

87-
var findExecTask = new FindExecTask("git", CancellationToken)
88-
.Finally((b, ex, path) => {
89-
if (b && path != null)
90-
{
91-
Logger.Trace("FindExecTask Success: {0}", path);
92-
93-
new FuncTask<NPath>(CancellationToken, () => path)
94-
.Then(afterPathDetermined)
95-
.Start();
96-
}
97-
else
98-
{
99-
Logger.Warning("FindExecTask Failure");
100-
Logger.Error("Git not found");
101-
}
102-
});
10387

104-
var applicationDataPath = Environment.GetSpecialFolder(System.Environment.SpecialFolder.LocalApplicationData).ToNPath();
105-
var installDetails = new GitInstallDetails(applicationDataPath, true);
88+
var gitExecutablePath = SystemSettings.Get(Constants.GitInstallPathKey)?.ToNPath();
89+
if (gitExecutablePath != null && gitExecutablePath.FileExists())
90+
{
91+
Logger.Trace("Using git install path from settings: {0}", gitExecutablePath);
10692

107-
var gitInstaller = new GitInstaller(Environment, CancellationToken, installDetails);
108-
gitInstaller.SetupGitIfNeeded(new ActionTask<NPath>(CancellationToken, (b, path) => {
109-
Logger.Trace("GitInstaller Success: {0}", path);
110-
new FuncTask<NPath>(CancellationToken, () => path)
93+
new FuncTask<NPath>(CancellationToken, () => gitExecutablePath)
11194
.Then(afterPathDetermined)
11295
.Start();
113-
}), new ActionTask(CancellationToken, () => {
114-
Logger.Warning("GitInstaller Failure");
115-
findExecTask.Start();
116-
}) );
96+
}
97+
else
98+
{
99+
Logger.Trace("No git path found in settings");
100+
101+
var findExecTask = new FindExecTask("git", CancellationToken)
102+
.Finally((b, ex, path) => {
103+
if (b && path != null)
104+
{
105+
Logger.Trace("FindExecTask Success: {0}", path);
106+
107+
new FuncTask<NPath>(CancellationToken, () => path)
108+
.Then(afterPathDetermined)
109+
.Start();
110+
}
111+
else
112+
{
113+
Logger.Warning("FindExecTask Failure");
114+
Logger.Error("Git not found");
115+
}
116+
});
117+
118+
var applicationDataPath = Environment.GetSpecialFolder(System.Environment.SpecialFolder.LocalApplicationData).ToNPath();
119+
var installDetails = new GitInstallDetails(applicationDataPath, true);
120+
var gitInstaller = new GitInstaller(Environment, CancellationToken, installDetails);
121+
122+
gitInstaller.SetupGitIfNeeded(new ActionTask<NPath>(CancellationToken, (b, path) => {
123+
Logger.Trace("GitInstaller Success: {0}", path);
124+
new FuncTask<NPath>(CancellationToken, () => path)
125+
.Then(afterPathDetermined)
126+
.Start();
127+
}), new ActionTask(CancellationToken, () => {
128+
Logger.Warning("GitInstaller Failure");
129+
findExecTask.Start();
130+
}));
131+
}
117132
}
118133

119134
public ITask InitializeRepository()

0 commit comments

Comments
 (0)