Skip to content

Commit

Permalink
Address code review comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
crummel committed Aug 5, 2021
1 parent 8994c09 commit 88e7e5e
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
25 changes: 18 additions & 7 deletions src/Microsoft.Build.Tasks.Git.UnitTests/GitRepositoryTests.cs
Expand Up @@ -344,14 +344,26 @@ public void GetSubmoduleHeadCommitSha()
var gitDir = temp.CreateDirectory();
var workingDir = temp.CreateDirectory();

var basicSubmoduleGitDir = temp.CreateDirectory();
var submoduleGitDir = temp.CreateDirectory();

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

var basicSubmoduleRefsHeadsDir = basicSubmoduleGitDir.CreateDirectory("refs").CreateDirectory("heads");
basicSubmoduleRefsHeadsDir.CreateFile("master").WriteAllText("0000000000000000000000000000000000000000");
basicSubmoduleGitDir.CreateFile("HEAD").WriteAllText("ref: refs/heads/master");
var submoduleRefsHeadsDir = submoduleGitDir.CreateDirectory("refs").CreateDirectory("heads");
submoduleRefsHeadsDir.CreateFile("master").WriteAllText("0000000000000000000000000000000000000000");
submoduleGitDir.CreateFile("HEAD").WriteAllText("ref: refs/heads/master");

var repository = new GitRepository(GitEnvironment.Empty, GitConfig.Empty, gitDir.Path, gitDir.Path, workingDir.Path);
Assert.Equal("0000000000000000000000000000000000000000", repository.ReadSubmoduleHeadCommitSha(submoduleWorkingDir.Path));
}

[Fact]
public void GetOldStyleSubmoduleHeadCommitSha()
{
using var temp = new TempRoot();

var gitDir = temp.CreateDirectory();
var workingDir = temp.CreateDirectory();

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

var repository = new GitRepository(GitEnvironment.Empty, GitConfig.Empty, gitDir.Path, gitDir.Path, workingDir.Path);
Assert.Equal("0000000000000000000000000000000000000000", repository.ReadSubmoduleHeadCommitSha(basicSubmoduleWorkingDir.Path));
Assert.Equal("1111111111111111111111111111111111111111", repository.ReadSubmoduleHeadCommitSha(oldStyleSubmoduleWorkingDir.Path));
}
}
Expand Down
13 changes: 6 additions & 7 deletions src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs
Expand Up @@ -215,14 +215,13 @@ public static GitRepository OpenRepository(GitRepositoryLocation location, GitEn
// See https://git-scm.com/docs/gitsubmodules#_forms for more details.
// Handle this case first since the other case throws.
var dotGitPath = Path.Combine(submoduleWorkingDirectoryFullPath, GitDirName);
if (IsGitDirectory(dotGitPath, out var directSubmoduleGitDirectory))
{
var submoduleGitDirResolver = new GitReferenceResolver(directSubmoduleGitDirectory, directSubmoduleGitDirectory);
return submoduleGitDirResolver.ResolveHeadReference();
}

var gitDirectory = ReadDotGitFile(Path.Combine(submoduleWorkingDirectoryFullPath, GitDirName));
if (!IsGitDirectory(gitDirectory, out var commonDirectory))
var gitDirectory =
Directory.Exists(dotGitPath) ? dotGitPath :
File.Exists(dotGitPath) ? ReadDotGitFile(dotGitPath) :
null;

if (gitDirectory == null || !IsGitDirectory(gitDirectory, out var commonDirectory))
{
return null;
}
Expand Down

0 comments on commit 88e7e5e

Please sign in to comment.