@@ -43,10 +43,10 @@ public GitInstallationState SetupGitIfNeeded(GitInstallationState state = null)
43
43
{
44
44
if ( environment . IsMac )
45
45
state = FindGit ( state ) ;
46
- state = SetDefaultPaths ( state ) ;
47
46
}
48
47
49
- state = CheckForUpdates ( state ) ;
48
+ state = SetDefaultPaths ( state ) ;
49
+ state = CheckForGitUpdates ( state ) ;
50
50
51
51
if ( state . GitIsValid && state . GitLfsIsValid )
52
52
{
@@ -99,34 +99,34 @@ public GitInstallationState FindSystemGit(GitInstallationState state)
99
99
return state ;
100
100
}
101
101
102
- private GitInstallationState FindGitLfs ( GitInstallationState state )
102
+ private GitInstallationState FindGit ( GitInstallationState state )
103
103
{
104
- if ( ! state . GitLfsIsValid )
104
+ if ( ! state . GitIsValid )
105
105
{
106
- var gitLfsPath = new FindExecTask ( "git-lfs " , cancellationToken )
106
+ var gitPath = new FindExecTask ( "git" , cancellationToken )
107
107
. Configure ( processManager , dontSetupGit : true )
108
108
. Catch ( e => true )
109
109
. RunWithReturn ( true ) ;
110
- state . GitLfsExecutablePath = gitLfsPath ;
111
- state = ValidateGitLfsVersion ( state ) ;
112
- if ( state . GitLfsIsValid )
113
- state . GitLfsInstallationPath = state . GitLfsExecutablePath . Parent ;
110
+ state . GitExecutablePath = gitPath ;
111
+ state = ValidateGitVersion ( state ) ;
112
+ if ( state . GitIsValid )
113
+ state . GitInstallationPath = gitPath . Parent . Parent ;
114
114
}
115
115
return state ;
116
116
}
117
117
118
- private GitInstallationState FindGit ( GitInstallationState state )
118
+ private GitInstallationState FindGitLfs ( GitInstallationState state )
119
119
{
120
- if ( ! state . GitIsValid )
120
+ if ( ! state . GitLfsIsValid )
121
121
{
122
- var gitPath = new FindExecTask ( "git" , cancellationToken )
122
+ var gitLfsPath = new FindExecTask ( "git-lfs " , cancellationToken )
123
123
. Configure ( processManager , dontSetupGit : true )
124
124
. Catch ( e => true )
125
125
. RunWithReturn ( true ) ;
126
- state . GitExecutablePath = gitPath ;
127
- state = ValidateGitVersion ( state ) ;
128
- if ( state . GitIsValid )
129
- state . GitInstallationPath = gitPath . Parent . Parent ;
126
+ state . GitLfsExecutablePath = gitLfsPath ;
127
+ state = ValidateGitLfsVersion ( state ) ;
128
+ if ( state . GitLfsIsValid )
129
+ state . GitLfsInstallationPath = state . GitLfsExecutablePath . Parent ;
130
130
}
131
131
return state ;
132
132
}
@@ -181,29 +181,35 @@ public GitInstallationState ValidateGitLfsVersion(GitInstallationState state)
181
181
return state ;
182
182
}
183
183
184
- private GitInstallationState CheckForUpdates ( GitInstallationState state )
184
+ private GitInstallationState CheckForGitUpdates ( GitInstallationState state )
185
185
{
186
- state . GitPackage = Package . Load ( environment , installDetails . GitPackageFeed ) ;
187
- if ( state . GitPackage != null )
186
+ if ( state . GitInstallationPath == installDetails . GitInstallationPath )
188
187
{
189
- state . GitIsValid = state . GitVersion >= state . GitPackage . Version ;
190
- if ( state . GitIsValid )
188
+ state . GitPackage = Package . Load ( environment , installDetails . GitPackageFeed ) ;
189
+ if ( state . GitPackage != null )
191
190
{
192
- state . IsCustomGitPath = state . GitExecutablePath != installDetails . GitExecutablePath ;
193
- }
194
- else
195
- {
196
- Logger . Trace ( $ "{ installDetails . GitExecutablePath } is out of date") ;
191
+ state . GitIsValid = state . GitVersion >= state . GitPackage . Version ;
192
+ if ( state . GitIsValid )
193
+ {
194
+ state . IsCustomGitPath = state . GitExecutablePath != installDetails . GitExecutablePath ;
195
+ }
196
+ else
197
+ {
198
+ Logger . Trace ( $ "{ installDetails . GitExecutablePath } is out of date") ;
199
+ }
197
200
}
198
201
}
199
202
200
- state . GitLfsPackage = Package . Load ( environment , installDetails . GitLfsPackageFeed ) ;
201
- if ( state . GitLfsPackage != null )
203
+ if ( state . GitLfsInstallationPath == installDetails . GitLfsInstallationPath )
202
204
{
203
- state . GitLfsIsValid = state . GitLfsVersion >= state . GitLfsPackage . Version ;
204
- if ( ! state . GitLfsIsValid )
205
+ state . GitLfsPackage = Package . Load ( environment , installDetails . GitLfsPackageFeed ) ;
206
+ if ( state . GitLfsPackage != null )
205
207
{
206
- Logger . Trace ( $ "{ installDetails . GitLfsExecutablePath } is out of date") ;
208
+ state . GitLfsIsValid = state . GitLfsVersion >= state . GitLfsPackage . Version ;
209
+ if ( ! state . GitLfsIsValid )
210
+ {
211
+ Logger . Trace ( $ "{ installDetails . GitLfsExecutablePath } is out of date") ;
212
+ }
207
213
}
208
214
}
209
215
return state ;
@@ -239,8 +245,7 @@ private GitInstallationState GetZipsIfNeeded(GitInstallationState state)
239
245
return state ;
240
246
241
247
var downloader = new Downloader ( ) ;
242
- downloader
243
- . Catch ( e =>
248
+ downloader . Catch ( e =>
244
249
{
245
250
LogHelper . Trace ( e , "Failed to download" ) ;
246
251
return true ;
@@ -261,11 +266,14 @@ private GitInstallationState GetZipsIfNeeded(GitInstallationState state)
261
266
262
267
private GitInstallationState GrabZipFromResourcesIfNeeded ( GitInstallationState state )
263
268
{
264
- if ( ! state . GitZipExists && ! state . GitIsValid )
269
+ if ( ! state . GitZipExists && ! state . GitIsValid && state . GitInstallationPath == installDetails . GitInstallationPath )
265
270
AssemblyResources . ToFile ( ResourceType . Platform , "git.zip" , installDetails . ZipPath , environment ) ;
266
271
state . GitZipExists = installDetails . GitZipPath . FileExists ( ) ;
267
272
268
- if ( ! state . GitLfsZipExists && ! state . GitLfsIsValid )
273
+ if ( state . GitLfsInstallationPath != installDetails . GitLfsInstallationPath )
274
+ return state ;
275
+
276
+ if ( ! state . GitLfsZipExists && ! state . GitLfsIsValid && state . GitLfsInstallationPath == installDetails . GitLfsInstallationPath )
269
277
AssemblyResources . ToFile ( ResourceType . Platform , "git-lfs.zip" , installDetails . ZipPath , environment ) ;
270
278
state . GitLfsZipExists = installDetails . GitLfsZipPath . FileExists ( ) ;
271
279
return state ;
0 commit comments