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

Commit 240dc81

Browse files
Attempting to not change the PATH variable when validating git
1 parent 0237ef2 commit 240dc81

File tree

5 files changed

+18
-13
lines changed

5 files changed

+18
-13
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using System;
2-
using System.Linq;
32
using System.Threading;
43
using System.Threading.Tasks;
54
using System.Collections.Generic;
6-
using System.Diagnostics.Eventing.Reader;
75
using GitHub.Logging;
86

97
namespace GitHub.Unity
@@ -55,8 +53,8 @@ public void Run(bool firstRun)
5553
{
5654
Logger.Trace("Run - CurrentDirectory {0}", NPath.CurrentDirectory);
5755

58-
var initEnvironmentTask = new ActionTask<object[]>(CancellationToken,
59-
(_, values) => InitializeEnvironment((NPath)values[0], (bool)values[1]))
56+
var initEnvironmentTask = new ActionTask<NPath>(CancellationToken,
57+
(_, path) => InitializeEnvironment(path))
6058
{ Affinity = TaskAffinity.UI };
6159

6260
isBusy = true;
@@ -89,7 +87,6 @@ public void Run(bool firstRun)
8987
if (path.IsInitialized)
9088
{
9189
t.GetEndOfChain()
92-
.Then(b => new object[] {path, true})
9390
.Then(initEnvironmentTask, taskIsTopOfChain: true);
9491
return;
9592
}
@@ -102,7 +99,6 @@ public void Run(bool firstRun)
10299
task.OnEnd += (thisTask, result, success, exception) =>
103100
{
104101
thisTask.GetEndOfChain()
105-
.Then(b => new object[] { result, false })
106102
.Then(initEnvironmentTask, taskIsTopOfChain: true);
107103
};
108104

@@ -209,9 +205,8 @@ protected void SetupMetrics(string unityVersion, bool firstRun)
209205
/// Initialize environment after finding where git is. This needs to run on the main thread
210206
/// </summary>
211207
/// <param name="gitExecutablePath"></param>
212-
/// <param name="isCustomGitExec"></param>
213208
/// <param name="octorunScriptPath"></param>
214-
private void InitializeEnvironment(NPath gitExecutablePath, bool isCustomGitExec)
209+
private void InitializeEnvironment(NPath gitExecutablePath)
215210
{
216211
isBusy = false;
217212
SetupMetrics();
@@ -220,6 +215,9 @@ private void InitializeEnvironment(NPath gitExecutablePath, bool isCustomGitExec
220215
{
221216
return;
222217
}
218+
219+
var gitInstallDetails = new GitInstaller.GitInstallDetails(Environment.UserCachePath, Environment.IsWindows);
220+
var isCustomGitExec = gitExecutablePath != gitInstallDetails.GitExecutablePath;
223221

224222
Environment.GitExecutablePath = gitExecutablePath;
225223
Environment.IsCustomGitExecutable = isCustomGitExec;

src/GitHub.Api/Git/GitClient.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace GitHub.Unity
99
{
1010
public interface IGitClient
1111
{
12-
ITask<ValidateGitInstallResult> ValidateGitInstall(NPath path);
12+
ITask<ValidateGitInstallResult> ValidateGitInstall(NPath path, bool isCustomGit);
1313

1414
ITask Init(IOutputProcessor<string> processor = null);
1515

@@ -110,7 +110,7 @@ public GitClient(IEnvironment environment, IProcessManager processManager, Cance
110110
this.cancellationToken = cancellationToken;
111111
}
112112

113-
public ITask<ValidateGitInstallResult> ValidateGitInstall(NPath path)
113+
public ITask<ValidateGitInstallResult> ValidateGitInstall(NPath path, bool isCustomGit)
114114
{
115115
if (!path.FileExists())
116116
{
@@ -126,15 +126,17 @@ public ITask<ValidateGitInstallResult> ValidateGitInstall(NPath path)
126126
gitLfsVersion?.CompareTo(Constants.MinimumGitLfsVersion) >= 0,
127127
gitVersion, gitLfsVersion));
128128

129-
var gitLfsVersionTask = new GitLfsVersionTask(cancellationToken).Configure(processManager, path);
129+
var gitLfsVersionTask = new GitLfsVersionTask(cancellationToken)
130+
.Configure(processManager, path, dontSetupGit: isCustomGit);
130131

131132
gitLfsVersionTask
132133
.Then((result, version) => {return gitLfsVersion = version;})
133134
.Then(endTask, taskIsTopOfChain: true);
134135

135136
gitLfsVersionTask.Then(endTask, TaskRunOptions.OnFailure, taskIsTopOfChain:true);
136137

137-
var gitVersionTask = new GitVersionTask(cancellationToken).Configure(processManager, path);
138+
var gitVersionTask = new GitVersionTask(cancellationToken)
139+
.Configure(processManager, path, dontSetupGit: isCustomGit);
138140

139141
gitVersionTask
140142
.Then((result, version) => { return gitVersion = version; })

src/GitHub.Api/OutputProcessors/ProcessManager.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public T Configure<T>(T processTask, NPath? executable = null, string arguments
3030
bool dontSetupGit = false)
3131
where T : IProcess
3232
{
33+
logger.Trace("Configure executable:{0}", executable);
34+
3335
if (executable == null)
3436
{
3537
if (processTask.ProcessName?.ToNPath() != null)
@@ -57,6 +59,7 @@ public T Configure<T>(T processTask, NPath? executable = null, string arguments
5759
StandardErrorEncoding = Encoding.UTF8
5860
};
5961

62+
logger.Trace("gitEnvironment.Configure dontSetupGit:{0}", dontSetupGit);
6063
gitEnvironment.Configure(startInfo, workingDirectory ?? environment.RepositoryPath, dontSetupGit);
6164

6265
if (executable.Value.IsRelative)

src/GitHub.Api/Platform/ProcessEnvironment.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public void Configure(ProcessStartInfo psi, NPath workingDirectory, bool dontSet
2121
psi.EnvironmentVariables["HOME"] = NPath.HomeDirectory;
2222
psi.EnvironmentVariables["TMP"] = psi.EnvironmentVariables["TEMP"] = NPath.SystemTemp;
2323
psi.EnvironmentVariables["GHU_WORKINGDIR"] = workingDirectory;
24+
25+
Logger.Trace("Configure DontSetupGit:{0}", dontSetupGit);
2426

2527
// if we don't know where git is, then there's nothing else to configure
2628
if (!Environment.GitInstallPath.IsInitialized || dontSetupGit)

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/GitPathView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ private void ValidateAndSetGitInstallPath(string value)
269269

270270
gitVersionErrorMessage = null;
271271

272-
GitClient.ValidateGitInstall(value.ToNPath())
272+
GitClient.ValidateGitInstall(value.ToNPath(), true)
273273
.FinallyInUI((success, exception, result) =>
274274
{
275275
if (!success)

0 commit comments

Comments
 (0)