Skip to content

Commit ff6a5d2

Browse files
committed
Address code review comments.
1 parent 8994c09 commit ff6a5d2

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

src/Microsoft.Build.Tasks.Git.UnitTests/GitRepositoryTests.cs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -344,14 +344,26 @@ public void GetSubmoduleHeadCommitSha()
344344
var gitDir = temp.CreateDirectory();
345345
var workingDir = temp.CreateDirectory();
346346

347-
var basicSubmoduleGitDir = temp.CreateDirectory();
347+
var submoduleGitDir = temp.CreateDirectory();
348348

349-
var basicSubmoduleWorkingDir = workingDir.CreateDirectory("sub").CreateDirectory("abc");
350-
basicSubmoduleWorkingDir.CreateFile(".git").WriteAllText("gitdir: " + basicSubmoduleGitDir.Path + "\t \v\f\r\n\n\r");
349+
var submoduleWorkingDir = workingDir.CreateDirectory("sub").CreateDirectory("abc");
350+
submoduleWorkingDir.CreateFile(".git").WriteAllText("gitdir: " + submoduleGitDir.Path + "\t \v\f\r\n\n\r");
351351

352-
var basicSubmoduleRefsHeadsDir = basicSubmoduleGitDir.CreateDirectory("refs").CreateDirectory("heads");
352+
var basicSubmoduleRefsHeadsDir = submoduleGitDir.CreateDirectory("refs").CreateDirectory("heads");
353353
basicSubmoduleRefsHeadsDir.CreateFile("master").WriteAllText("0000000000000000000000000000000000000000");
354-
basicSubmoduleGitDir.CreateFile("HEAD").WriteAllText("ref: refs/heads/master");
354+
submoduleGitDir.CreateFile("HEAD").WriteAllText("ref: refs/heads/master");
355+
356+
var repository = new GitRepository(GitEnvironment.Empty, GitConfig.Empty, gitDir.Path, gitDir.Path, workingDir.Path);
357+
Assert.Equal("0000000000000000000000000000000000000000", repository.ReadSubmoduleHeadCommitSha(submoduleWorkingDir.Path));
358+
}
359+
360+
[Fact]
361+
public void GetOldStyleSubmoduleHeadCommitSha()
362+
{
363+
using var temp = new TempRoot();
364+
365+
var gitDir = temp.CreateDirectory();
366+
var workingDir = temp.CreateDirectory();
355367

356368
// this is a unusual but legal case which can occur with older versions of Git or other tools.
357369
// see https://git-scm.com/docs/gitsubmodules#_forms for more details.
@@ -362,7 +374,6 @@ public void GetSubmoduleHeadCommitSha()
362374
oldStyleSubmoduleGitDir.CreateFile("HEAD").WriteAllText("ref: refs/heads/branch1");
363375

364376
var repository = new GitRepository(GitEnvironment.Empty, GitConfig.Empty, gitDir.Path, gitDir.Path, workingDir.Path);
365-
Assert.Equal("0000000000000000000000000000000000000000", repository.ReadSubmoduleHeadCommitSha(basicSubmoduleWorkingDir.Path));
366377
Assert.Equal("1111111111111111111111111111111111111111", repository.ReadSubmoduleHeadCommitSha(oldStyleSubmoduleWorkingDir.Path));
367378
}
368379
}

src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,14 +215,13 @@ public static GitRepository OpenRepository(GitRepositoryLocation location, GitEn
215215
// See https://git-scm.com/docs/gitsubmodules#_forms for more details.
216216
// Handle this case first since the other case throws.
217217
var dotGitPath = Path.Combine(submoduleWorkingDirectoryFullPath, GitDirName);
218-
if (IsGitDirectory(dotGitPath, out var directSubmoduleGitDirectory))
219-
{
220-
var submoduleGitDirResolver = new GitReferenceResolver(directSubmoduleGitDirectory, directSubmoduleGitDirectory);
221-
return submoduleGitDirResolver.ResolveHeadReference();
222-
}
223218

224-
var gitDirectory = ReadDotGitFile(Path.Combine(submoduleWorkingDirectoryFullPath, GitDirName));
225-
if (!IsGitDirectory(gitDirectory, out var commonDirectory))
219+
var gitDirectory =
220+
Directory.Exists(dotGitPath) ? dotGitPath :
221+
File.Exists(dotGitPath) ? ReadDotGitFile(dotGitPath) :
222+
null;
223+
224+
if (gitDirectory == null || !IsGitDirectory(gitDirectory, out var commonDirectory))
226225
{
227226
return null;
228227
}

0 commit comments

Comments
 (0)