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

Commit c5e39b1

Browse files
committed
Explicitely set git/lfs installation paths in the environment
1 parent 8b8cc35 commit c5e39b1

File tree

8 files changed

+35
-49
lines changed

8 files changed

+35
-49
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ public void SetupGit(GitInstaller.GitInstallationState state)
137137
if (!(state.GitIsValid && state.GitLfsIsValid))
138138
return;
139139

140+
Environment.GitInstallPath = state.GitInstallationPath;
140141
Environment.GitExecutablePath = state.GitExecutablePath;
142+
Environment.GitLfsInstallPath = state.GitLfsInstallationPath;
141143
Environment.GitLfsExecutablePath = state.GitLfsExecutablePath;
142144
Environment.IsCustomGitExecutable = state.IsCustomGitPath;
143145
Environment.User.Initialize(GitClient);

src/GitHub.Api/Platform/DefaultEnvironment.cs

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ public class DefaultEnvironment : IEnvironment
1212
private static bool? onLinux;
1313
private static bool? onMac;
1414

15-
private NPath gitExecutablePath;
16-
private NPath gitLfsExecutablePath;
1715
private NPath nodeJsExecutablePath;
1816
private NPath octorunScriptPath;
1917

@@ -154,28 +152,11 @@ public NPath OctorunScriptPath
154152

155153
public bool IsCustomGitExecutable { get; set; }
156154

157-
public NPath GitExecutablePath
158-
{
159-
get { return gitExecutablePath; }
160-
set
161-
{
162-
gitExecutablePath = value;
163-
if (!gitExecutablePath.IsInitialized)
164-
GitInstallPath = NPath.Default;
165-
else
166-
GitInstallPath = GitExecutablePath.Resolve().Parent.Parent;
167-
}
168-
}
155+
public NPath GitInstallPath { get; set; }
156+
public NPath GitExecutablePath { get; set; }
169157

170-
public NPath GitLfsExecutablePath
171-
{
172-
get { return gitLfsExecutablePath; }
173-
set
174-
{
175-
gitLfsExecutablePath = value;
176-
GitLfsInstallPath = gitLfsExecutablePath.IsInitialized ? gitLfsExecutablePath.Parent : NPath.Default;
177-
}
178-
}
158+
public NPath GitLfsInstallPath { get; set; }
159+
public NPath GitLfsExecutablePath { get; set; }
179160

180161
public NPath NodeJsExecutablePath
181162
{
@@ -190,8 +171,6 @@ public NPath NodeJsExecutablePath
190171
return nodeJsExecutablePath;
191172
}
192173
}
193-
public NPath GitInstallPath { get; private set; }
194-
public NPath GitLfsInstallPath { get; private set; }
195174
public NPath RepositoryPath { get; private set; }
196175
public ICacheContainer CacheContainer { get; private set; }
197176
public IRepository Repository { get; set; }

src/GitHub.Api/Platform/IEnvironment.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ public interface IEnvironment
2626
NPath UnityProjectPath { get; }
2727
NPath ExtensionInstallPath { get; }
2828
NPath RepositoryPath { get; }
29-
NPath GitInstallPath { get; }
29+
NPath GitInstallPath { get; set; }
30+
NPath GitLfsInstallPath { get; set; }
31+
NPath GitLfsExecutablePath { get; set; }
3032
NPath UserCachePath { get; set; }
3133
NPath SystemCachePath { get; set; }
3234
NPath LogPath { get; }
@@ -35,8 +37,6 @@ public interface IEnvironment
3537
IRepository Repository { get; set; }
3638
string ExecutableExtension { get; }
3739
ICacheContainer CacheContainer { get; }
38-
NPath GitLfsInstallPath { get; }
39-
NPath GitLfsExecutablePath { get; set; }
4040
ISettings LocalSettings { get; }
4141
ISettings SystemSettings { get; }
4242
ISettings UserSettings { get; }

src/GitHub.Api/Platform/ProcessEnvironment.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void Configure(ProcessStartInfo psi, NPath workingDirectory, bool dontSet
3939

4040
if (Environment.GitInstallPath.IsInitialized)
4141
{
42-
var gitPathRoot = Environment.GitInstallPath;
42+
var gitPathRoot = Environment.GitExecutablePath.Resolve().Parent.Parent;
4343
var gitExecutableDir = Environment.GitExecutablePath.Parent; // original path to git (might be different from install path if it's a symlink)
4444

4545
var baseExecPath = gitPathRoot;

src/tests/IntegrationTests/BaseIntegrationTest.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ protected IEnvironment InitializePlatformAndEnvironment(NPath repoPath,
125125
protected void SetupGit(NPath pathToSetupGitInto, string testName)
126126
{
127127
var installDetails = new GitInstaller.GitInstallDetails(pathToSetupGitInto, Environment.IsWindows);
128+
Environment.GitInstallPath = installDetails.GitInstallationPath;
128129
Environment.GitExecutablePath = installDetails.GitExecutablePath;
130+
Environment.GitLfsInstallPath = installDetails.GitInstallationPath;
131+
Environment.GitLfsExecutablePath = installDetails.GitLfsExecutablePath;
129132
GitClient = new GitClient(Environment, ProcessManager, TaskManager.Token);
130133

131134
if (installDetails.GitExecutablePath.FileExists() && installDetails.GitLfsExecutablePath.FileExists())

src/tests/IntegrationTests/Installer/GitInstallerTests.cs

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,18 @@ public void GitInstallWindows()
6464
ZipHelper.Instance = zipHelper;
6565
var gitInstaller = new GitInstaller(Environment, ProcessManager, TaskManager.Token, null, installDetails: installDetails);
6666

67-
var result = gitInstaller.SetupGitIfNeeded();
68-
result.Should().NotBeNull();
69-
70-
Assert.AreEqual(gitInstallationPath.Combine(installDetails.PackageNameWithVersion), result.GitInstallationPath);
71-
result.GitExecutablePath.Should().Be(gitInstallationPath.Combine(installDetails.PackageNameWithVersion, "cmd", "git" + Environment.ExecutableExtension));
72-
result.GitLfsExecutablePath.Should().Be(gitInstallationPath.Combine(installDetails.PackageNameWithVersion, "mingw32", "libexec", "git-core", "git-lfs" + Environment.ExecutableExtension));
73-
74-
var isCustomGitExec = result.GitExecutablePath != result.GitExecutablePath;
67+
var state = gitInstaller.SetupGitIfNeeded();
68+
state.Should().NotBeNull();
7569

76-
Environment.GitExecutablePath = result.GitExecutablePath;
77-
Environment.GitLfsExecutablePath = result.GitLfsExecutablePath;
70+
Assert.AreEqual(gitInstallationPath.Combine(installDetails.PackageNameWithVersion), state.GitInstallationPath);
71+
state.GitExecutablePath.Should().Be(gitInstallationPath.Combine(installDetails.PackageNameWithVersion, "cmd", "git" + Environment.ExecutableExtension));
72+
state.GitLfsExecutablePath.Should().Be(gitInstallationPath.Combine(installDetails.PackageNameWithVersion, "mingw32", "libexec", "git-core", "git-lfs" + Environment.ExecutableExtension));
7873

79-
Environment.IsCustomGitExecutable = isCustomGitExec;
74+
Environment.GitInstallPath = state.GitInstallationPath;
75+
Environment.GitExecutablePath = state.GitExecutablePath;
76+
Environment.GitLfsInstallPath = state.GitLfsInstallationPath;
77+
Environment.GitLfsExecutablePath = state.GitLfsExecutablePath;
78+
Environment.IsCustomGitExecutable = state.IsCustomGitPath;
8079

8180
var procTask = new SimpleProcessTask(TaskManager.Token, "something")
8281
.Configure(ProcessManager);
@@ -251,11 +250,11 @@ public void GitLfsIsInstalledIfMissingWithCustomGitPath()
251250
state.GitLfsExecutablePath.Should().Be(gitLfsExec);
252251
gitLfsExec.FileExists().Should().BeTrue();
253252

254-
var isCustomGitExec = state.GitExecutablePath != installDetails.GitExecutablePath;
255-
253+
Environment.GitInstallPath = state.GitInstallationPath;
256254
Environment.GitExecutablePath = state.GitExecutablePath;
255+
Environment.GitLfsInstallPath = state.GitLfsInstallationPath;
257256
Environment.GitLfsExecutablePath = state.GitLfsExecutablePath;
258-
Environment.IsCustomGitExecutable = isCustomGitExec;
257+
Environment.IsCustomGitExecutable = state.IsCustomGitPath;
259258

260259
var procTask = new SimpleProcessTask(TaskManager.Token, "something")
261260
.Configure(ProcessManager);

src/tests/IntegrationTests/IntegrationTestEnvironment.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ public NPath GitExecutablePath
108108
}
109109
}
110110

111+
112+
public NPath GitInstallPath { get { return defaultEnvironment.GitInstallPath; } set { defaultEnvironment.GitInstallPath = value; } }
113+
public NPath GitLfsInstallPath { get { return defaultEnvironment.GitLfsInstallPath; } set { defaultEnvironment.GitLfsInstallPath = value; } }
114+
public NPath GitLfsExecutablePath { get { return defaultEnvironment.GitLfsExecutablePath; } set { defaultEnvironment.GitLfsExecutablePath = value; } }
115+
111116
public NPath NodeJsExecutablePath => defaultEnvironment.NodeJsExecutablePath;
112117

113118
public NPath OctorunScriptPath { get; set; }
@@ -132,10 +137,6 @@ public NPath GitExecutablePath
132137

133138
public NPath RepositoryPath => defaultEnvironment.RepositoryPath;
134139

135-
public NPath GitInstallPath => defaultEnvironment.GitInstallPath;
136-
public NPath GitLfsInstallPath => defaultEnvironment.GitLfsInstallPath;
137-
public NPath GitLfsExecutablePath { get { return defaultEnvironment.GitLfsExecutablePath; } set { defaultEnvironment.GitLfsExecutablePath = value; } }
138-
139140
public IRepository Repository { get { return defaultEnvironment.Repository; } set { defaultEnvironment.Repository = value; } }
140141
public IUser User { get { return defaultEnvironment.User; } set { defaultEnvironment.User = value; } }
141142
public IFileSystem FileSystem { get { return defaultEnvironment.FileSystem; } set { defaultEnvironment.FileSystem = value; } }

src/tests/TaskSystemIntegrationTests/Tests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ public void OneTimeSetup()
5555
var processEnv = platform.GitEnvironment;
5656
var path = new ProcessTask<NPath>(TaskManager.Token, new FirstLineIsPathOutputProcessor())
5757
.Configure(ProcessManager, env.IsWindows ? "where" : "which", "git")
58-
.Start().Result;
59-
env.GitExecutablePath = path.IsInitialized ? path : "git".ToNPath();
58+
.RunWithReturn(true);
59+
60+
env.GitInstallPath = path.Parent.Parent;
61+
env.GitExecutablePath = path;
6062
}
6163

6264
[TestFixtureTearDown]

0 commit comments

Comments
 (0)