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

Commit b6f5c0e

Browse files
committed
Fix detecting and using system git on the mac
1 parent 41af211 commit b6f5c0e

File tree

4 files changed

+33
-18
lines changed

4 files changed

+33
-18
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public void Run(bool firstRun)
8686

8787
Logger.Trace("No git path found in settings");
8888

89-
var gitInstaller = new GitInstaller(Environment, CancellationToken);
89+
var gitInstaller = new GitInstaller(Environment, ProcessManager, TaskManager);
9090

9191
// if successful, continue with environment initialization, otherwise try to find an existing git installation
9292
var task = gitInstaller.SetupGitIfNeeded();

src/GitHub.Api/Installer/GitInstaller.cs

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,47 +10,62 @@ class GitInstaller
1010
private readonly CancellationToken cancellationToken;
1111

1212
private readonly IEnvironment environment;
13+
private readonly IProcessManager processManager;
1314
private readonly GitInstallDetails installDetails;
1415
private readonly IZipHelper sharpZipLibHelper;
1516

1617
GitInstallationState installationState;
1718
ITask<NPath> installationTask;
1819

19-
public GitInstaller(IEnvironment environment, CancellationToken cancellationToken,
20+
public GitInstaller(IEnvironment environment, IProcessManager processManager,
21+
ITaskManager taskManager,
2022
GitInstallDetails installDetails = null)
2123
{
2224
this.environment = environment;
25+
this.processManager = processManager;
2326
this.sharpZipLibHelper = ZipHelper.Instance;
24-
this.cancellationToken = cancellationToken;
27+
this.cancellationToken = taskManager.Token;
2528
this.installDetails = installDetails ?? new GitInstallDetails(environment.UserCachePath, environment.IsWindows);
2629
}
2730

2831
public ITask<NPath> SetupGitIfNeeded()
2932
{
3033
//Logger.Trace("SetupGitIfNeeded");
3134

32-
installationTask = new FuncTask<NPath>(cancellationToken, (_) => installDetails.GitExecutablePath)
35+
installationTask = new FuncTask<NPath, NPath>(cancellationToken, (success, path) =>
36+
{
37+
return path;
38+
})
3339
{ Name = "Git Installation - Complete" };
3440
installationTask.OnStart += thisTask => thisTask.UpdateProgress(0, 100);
3541
installationTask.OnEnd += (thisTask, result, success, exception) => thisTask.UpdateProgress(100, 100);
3642

43+
ITask<NPath> startTask = null;
3744
if (!environment.IsWindows)
3845
{
39-
return new FindExecTask("git", cancellationToken)
40-
.Then(installationTask, taskIsTopOfChain: true);
41-
}
42-
43-
var startTask = new FuncTask<NPath>(cancellationToken, () =>
46+
startTask = new FindExecTask("git", cancellationToken)
47+
.Configure(processManager);
48+
// we should doublecheck that system git is usable here
49+
installationState = new GitInstallationState
4450
{
45-
installationState = VerifyGitInstallation();
46-
if (!installationState.GitIsValid && !installationState.GitLfsIsValid)
47-
installationState = GrabZipFromResources(installationState);
48-
else
49-
Logger.Trace("SetupGitIfNeeded: Skipped");
50-
return installDetails.GitExecutablePath;
51-
})
51+
GitIsValid = true,
52+
GitLfsIsValid = true
53+
};
54+
}
55+
else
56+
{
57+
startTask = new FuncTask<NPath>(cancellationToken, () =>
58+
{
59+
installationState = VerifyGitInstallation();
60+
if (!installationState.GitIsValid && !installationState.GitLfsIsValid)
61+
installationState = GrabZipFromResources(installationState);
62+
else
63+
Logger.Trace("SetupGitIfNeeded: Skipped");
64+
return installDetails.GitExecutablePath;
65+
})
5266
{ Name = "Git Installation - Extract" };
5367

68+
}
5469

5570
startTask.OnEnd += (thisTask, path, success, exception) =>
5671
{

src/tests/IntegrationTests/BaseIntegrationTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ protected void SetupGit(NPath pathToSetupGitInto, string testName)
152152
AssemblyResources.ToFile(ResourceType.Platform, "git-lfs.zip", zipArchivesPath, Environment);
153153
AssemblyResources.ToFile(ResourceType.Platform, "git-lfs.zip.md5", zipArchivesPath, Environment);
154154

155-
var gitInstaller = new GitInstaller(Environment, TaskManager.Token, installDetails);
155+
var gitInstaller = new GitInstaller(Environment, ProcessManager, TaskManager, installDetails);
156156

157157
NPath? result = null;
158158
Exception ex = null;

src/tests/IntegrationTests/Installer/GitInstallerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void GitInstallTest()
4949

5050
TestBasePath.Combine("git").CreateDirectory();
5151

52-
var gitInstaller = new GitInstaller(Environment, CancellationToken.None, installDetails);
52+
var gitInstaller = new GitInstaller(Environment, ProcessManager, TaskManager, installDetails);
5353
var startTask = gitInstaller.SetupGitIfNeeded();
5454
var endTask = new FuncTask<NPath, NPath>(CancellationToken.None, (s, path) => path);
5555
startTask.OnEnd += (thisTask, path, success, exception) => thisTask.GetEndOfChain().Then(endTask);

0 commit comments

Comments
 (0)