From a76271de99e8e35a5d4c27c46d5ea67f1f5e62e4 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Thu, 4 Jul 2024 09:39:16 -0700 Subject: [PATCH 1/6] Add branch name to GitRepository + GitReferenceResolver --- docs/README.md | 5 +++ .../GitRepositoryTests.cs | 32 +++++++++++++++++++ .../GitDataReader/GitReferenceResolver.cs | 26 ++++++++++++--- .../GitDataReader/GitRepository.cs | 8 +++++ .../LocateRepository.cs | 7 ++++ .../build/Microsoft.Build.Tasks.Git.targets | 14 +++++++- 6 files changed, 87 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index 943a53ccd..52449a765 100644 --- a/docs/README.md +++ b/docs/README.md @@ -143,6 +143,11 @@ The default value is `true`. Set to `false` to suppress publishing `SourceRevisi Set by target `InitializeSourceControlInformationFromSourceControlManager` and consumed by NuGet `Pack` target and `GenerateAssemblyInfo` target. May be used by custom targets that need this information. +### SourceBranchName + +Set by target `InitializeSourceControlInformationFromSourceControlManager` and consumed by NuGet `Pack` target. +May be used by custom targets that need this information. + ### EnableSourceLink This property is implicitly set to `true` by a Source Link package. Including a Source Link package thus enables Source Link generation unless explicitly disabled by the project by setting this property to `false`. diff --git a/src/Microsoft.Build.Tasks.Git.UnitTests/GitRepositoryTests.cs b/src/Microsoft.Build.Tasks.Git.UnitTests/GitRepositoryTests.cs index 1f9b3b994..7ba9993d7 100644 --- a/src/Microsoft.Build.Tasks.Git.UnitTests/GitRepositoryTests.cs +++ b/src/Microsoft.Build.Tasks.Git.UnitTests/GitRepositoryTests.cs @@ -539,5 +539,37 @@ public void GetSubmoduleHeadCommitSha_NoGitFile() Assert.Null(GitRepository.GetSubmoduleReferenceResolver(submoduleWorkingDir.Path)?.ResolveHeadReference()); } + + [Fact] + public void GetHeadBranchName() + { + using var temp = new TempRoot(); + + var commonDir = temp.CreateDirectory(); + var refsHeadsDir = commonDir.CreateDirectory("refs").CreateDirectory("heads"); + refsHeadsDir.CreateFile("master").WriteAllText("0000000000000000000000000000000000000000 \t\v\r\n"); + + var gitDir = temp.CreateDirectory(); + gitDir.CreateFile("HEAD").WriteAllText("ref: refs/heads/master \t\v\r\n"); + + var repository = new GitRepository(GitEnvironment.Empty, GitConfig.Empty, gitDir.Path, commonDir.Path, workingDirectory: null); + Assert.Equal("refs/heads/master", repository.GetBranchName()); + } + + [Fact] + public void GetHeadBranchName_DetachedHead() + { + using var temp = new TempRoot(); + + var commonDir = temp.CreateDirectory(); + var refsHeadsDir = commonDir.CreateDirectory("refs").CreateDirectory("heads"); + refsHeadsDir.CreateFile("master").WriteAllText("0000000000000000000000000000000000000000 \t\v\r\n"); + + var gitDir = temp.CreateDirectory(); + gitDir.CreateFile("HEAD").WriteAllText("0000000000000000000000000000000000000000 \t\v\r\n"); + + var repository = new GitRepository(GitEnvironment.Empty, GitConfig.Empty, gitDir.Path, commonDir.Path, workingDirectory: null); + Assert.Null(repository.GetBranchName()); + } } } diff --git a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs index eeb5cbb8b..04d1b0e67 100644 --- a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs +++ b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; @@ -152,23 +153,40 @@ internal static ImmutableDictionary ReadPackedReferences(TextRea public string? ResolveHeadReference() => ResolveReference(ReadReferenceFromFile(Path.Combine(_gitDirectory, GitRepository.GitHeadFileName))); + public string? GetBranchForHead() + { + string reference = ReadReferenceFromFile(Path.Combine(_gitDirectory, GitRepository.GitHeadFileName)); + + return TryGetReferenceName(reference, out string? name) ? name : null; + } + public string? ResolveReference(string reference) { HashSet? lazyVisitedReferences = null; return ResolveReference(reference, ref lazyVisitedReferences); } + private static bool TryGetReferenceName(string reference, [NotNullWhen(true)] out string? name) + { + const string refPrefix = "ref: "; + if (reference.StartsWith(refPrefix + RefsPrefix, StringComparison.Ordinal)) + { + name = reference.Substring(refPrefix.Length); + return true; + } + + name = null; + return false; + } + /// /// private string? ResolveReference(string reference, ref HashSet? lazyVisitedReferences) { // See https://git-scm.com/docs/gitrepository-layout#Documentation/gitrepository-layout.txt-HEAD - const string refPrefix = "ref: "; - if (reference.StartsWith(refPrefix + RefsPrefix, StringComparison.Ordinal)) + if (TryGetReferenceName(reference, out string? symRef)) { - var symRef = reference.Substring(refPrefix.Length); - if (lazyVisitedReferences != null && !lazyVisitedReferences.Add(symRef)) { // infinite recursion diff --git a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs index 9aea9a66d..b9d015709 100644 --- a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs +++ b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs @@ -51,6 +51,7 @@ internal sealed class GitRepository private readonly Lazy<(ImmutableArray Submodules, ImmutableArray Diagnostics)> _lazySubmodules; private readonly Lazy _lazyIgnore; private readonly Lazy _lazyHeadCommitSha; + private readonly Lazy _lazyBranchName; private readonly GitReferenceResolver _referenceResolver; internal GitRepository(GitEnvironment environment, GitConfig config, string gitDirectory, string commonDirectory, string? workingDirectory) @@ -71,6 +72,7 @@ internal GitRepository(GitEnvironment environment, GitConfig config, string gitD _lazySubmodules = new Lazy<(ImmutableArray, ImmutableArray)>(ReadSubmodules); _lazyIgnore = new Lazy(LoadIgnore); _lazyHeadCommitSha = new Lazy(ReadHeadCommitSha); + _lazyBranchName = new Lazy(ReadBranchName); } // test only @@ -181,6 +183,12 @@ public static GitRepository OpenRepository(GitRepositoryLocation location, GitEn private string? ReadHeadCommitSha() => _referenceResolver.ResolveHeadReference(); + public string? GetBranchName() + => _lazyBranchName.Value; + + private string? ReadBranchName() + => _referenceResolver.GetBranchForHead(); + /// /// Creates for a submodule located in the specified . /// diff --git a/src/Microsoft.Build.Tasks.Git/LocateRepository.cs b/src/Microsoft.Build.Tasks.Git/LocateRepository.cs index 20abf7e28..8a4ab4bc1 100644 --- a/src/Microsoft.Build.Tasks.Git/LocateRepository.cs +++ b/src/Microsoft.Build.Tasks.Git/LocateRepository.cs @@ -44,6 +44,12 @@ public sealed class LocateRepository : RepositoryTask [Output] public string? RevisionId { get; private set; } + /// + /// Branch name. + /// + [Output] + public string? BranchName { get; private set; } + protected override string? GetRepositoryId() => null; protected override string GetInitialPath() => Path!; @@ -56,6 +62,7 @@ private protected override void Execute(GitRepository repository) Url = GitOperations.GetRepositoryUrl(repository, RemoteName, warnOnMissingOrUnsupportedRemote: !NoWarnOnMissingInfo, Log.LogWarning); Roots = GitOperations.GetSourceRoots(repository, RemoteName, warnOnMissingCommitOrUnsupportedUri: !NoWarnOnMissingInfo, Log.LogWarning); RevisionId = repository.GetHeadCommitSha(); + BranchName = repository.GetBranchName(); } } } diff --git a/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets b/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets index e07a4d84c..ac7c4c0a2 100644 --- a/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets +++ b/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets @@ -22,7 +22,7 @@ Reports a warning if the given project doesn't belong to a repository under source control, unless the targets were implicily imported from an SDK without a package reference. --> - + + + + $(SourceBranchName) + + git From b023e57e9ab9e055265d0598fe93d9f303881d1d Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Fri, 5 Jul 2024 13:07:46 -0700 Subject: [PATCH 2/6] Add branch to SourceRoot --- docs/README.md | 1 + src/Common/Utilities/Names.cs | 1 + .../GitOperationsTests.cs | 24 +++++++++++++++++-- .../TestUtilities.cs | 4 +++- .../GitDataReader/GitRepository.cs | 4 +++- .../GitOperations.cs | 2 ++ 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index 52449a765..2c6638824 100644 --- a/docs/README.md +++ b/docs/README.md @@ -170,6 +170,7 @@ Additional source-control specific metadata may be defined (depends on the sourc For example, for Git: - _RepositoryUrl_: e.g. `http://github.com/dotnet/corefx` +- _BranchName_: e.g. `refs/heads/main` (may be null if branch is in a detached HEAD state) For TFVC: diff --git a/src/Common/Utilities/Names.cs b/src/Common/Utilities/Names.cs index e0515cb34..71f8c0eab 100644 --- a/src/Common/Utilities/Names.cs +++ b/src/Common/Utilities/Names.cs @@ -18,6 +18,7 @@ internal static class SourceRoot public const string NestedRoot = nameof(NestedRoot); public const string MappedPath = nameof(MappedPath); public const string SourceLinkUrl = nameof(SourceLinkUrl); + public const string BranchName = nameof(BranchName); public const string MappedPathFullName = nameof(SourceRoot) + "." + nameof(MappedPath); public const string SourceLinkUrlFullName = nameof(SourceRoot) + "." + nameof(SourceLinkUrl); diff --git a/src/Microsoft.Build.Tasks.Git.UnitTests/GitOperationsTests.cs b/src/Microsoft.Build.Tasks.Git.UnitTests/GitOperationsTests.cs index c424d9d5e..083229398 100644 --- a/src/Microsoft.Build.Tasks.Git.UnitTests/GitOperationsTests.cs +++ b/src/Microsoft.Build.Tasks.Git.UnitTests/GitOperationsTests.cs @@ -25,6 +25,7 @@ private GitRepository CreateRepository( string? workingDir = null, GitConfig? config = null, string? commitSha = null, + string? branchName = null, ImmutableArray submodules = default, GitIgnore? ignore = null) { @@ -39,7 +40,8 @@ private GitRepository CreateRepository( submodules.IsDefault ? ImmutableArray.Empty : submodules, submoduleDiagnostics: ImmutableArray.Empty, ignore ?? new GitIgnore(root: null, workingDir, ignoreCase: false), - commitSha); + commitSha, + branchName); } private GitSubmodule CreateSubmodule(string name, string relativePath, string url, string? headCommitSha, string? containingRepositoryWorkingDir = null) @@ -316,6 +318,24 @@ public void GetSourceRoots_RepoWithoutCommits(bool warnOnMissingCommit) AssertEx.Equal(warnOnMissingCommit ? new[] { Resources.RepositoryHasNoCommit } : Array.Empty(), warnings.Select(TestUtilities.InspectDiagnostic)); } + [Fact] + public void GetSourceRoots_BranchName() + { + var repo = CreateRepository( + commitSha: "0000000000000000000000000000000000000000", + branchName: "refs/heads/abc"); + + var warnings = new List<(string, object?[])>(); + var items = GitOperations.GetSourceRoots(repo, remoteName: null, warnOnMissingCommitOrUnsupportedUri: false, (message, args) => warnings.Add((message, args))); + + AssertEx.Equal(new[] +{ + $@"'{_workingDir}{s}' SourceControl='git' RevisionId='0000000000000000000000000000000000000000' BranchName='refs/heads/abc'", + }, items.Select(TestUtilities.InspectSourceRoot)); + + AssertEx.Equal(Array.Empty(), warnings.Select(TestUtilities.InspectDiagnostic)); + } + [Fact] public void GetSourceRoots_RepoWithCommits_WithoutUrl() { @@ -468,7 +488,7 @@ public void GetSourceRoots_RelativeSubmodulePath(bool warnOnMissingCommitOrUnsup Assert.Empty(warnings); } } - + private static GitOperations.DirectoryNode CreateNode(string name, string? submoduleWorkingDirectory, List? children = null) => new GitOperations.DirectoryNode(name, children ?? new List()) { diff --git a/src/Microsoft.Build.Tasks.Git.UnitTests/TestUtilities.cs b/src/Microsoft.Build.Tasks.Git.UnitTests/TestUtilities.cs index 9e22db394..abfd07216 100644 --- a/src/Microsoft.Build.Tasks.Git.UnitTests/TestUtilities.cs +++ b/src/Microsoft.Build.Tasks.Git.UnitTests/TestUtilities.cs @@ -17,6 +17,7 @@ public static string InspectSourceRoot(ITaskItem sourceRoot) var containingRoot = sourceRoot.GetMetadata("ContainingRoot"); var scmRepositoryUrl = sourceRoot.GetMetadata("ScmRepositoryUrl"); var sourceLinkUrl = sourceRoot.GetMetadata("SourceLinkUrl"); + var branchName = sourceRoot.GetMetadata("BranchName"); return $"'{sourceRoot.ItemSpec}'" + (string.IsNullOrEmpty(sourceControl) ? "" : $" SourceControl='{sourceControl}'") + @@ -24,7 +25,8 @@ public static string InspectSourceRoot(ITaskItem sourceRoot) (string.IsNullOrEmpty(nestedRoot) ? "" : $" NestedRoot='{nestedRoot}'") + (string.IsNullOrEmpty(containingRoot) ? "" : $" ContainingRoot='{containingRoot}'") + (string.IsNullOrEmpty(scmRepositoryUrl) ? "" : $" ScmRepositoryUrl='{scmRepositoryUrl}'") + - (string.IsNullOrEmpty(sourceLinkUrl) ? "" : $" SourceLinkUrl='{sourceLinkUrl}'"); + (string.IsNullOrEmpty(sourceLinkUrl) ? "" : $" SourceLinkUrl='{sourceLinkUrl}'") + + (string.IsNullOrEmpty(branchName) ? "" : $" BranchName='{branchName}'"); } public static string InspectDiagnostic((string Message, object?[] Args) warning) diff --git a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs index b9d015709..fc7446ea9 100644 --- a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs +++ b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitRepository.cs @@ -85,12 +85,14 @@ internal GitRepository( ImmutableArray submodules, ImmutableArray submoduleDiagnostics, GitIgnore ignore, - string? headCommitSha) + string? headCommitSha, + string? branchName) : this(environment, config, gitDirectory, commonDirectory, workingDirectory) { _lazySubmodules = new Lazy<(ImmutableArray, ImmutableArray)>(() => (submodules, submoduleDiagnostics)); _lazyIgnore = new Lazy(() => ignore); _lazyHeadCommitSha = new Lazy(() => headCommitSha); + _lazyBranchName = new Lazy(() => branchName); } /// diff --git a/src/Microsoft.Build.Tasks.Git/GitOperations.cs b/src/Microsoft.Build.Tasks.Git/GitOperations.cs index 6713d08bc..cc0301ae1 100644 --- a/src/Microsoft.Build.Tasks.Git/GitOperations.cs +++ b/src/Microsoft.Build.Tasks.Git/GitOperations.cs @@ -251,6 +251,7 @@ public static ITaskItem[] GetSourceRoots(GitRepository repository, string? remot { // Don't report a warning since it has already been reported by GetRepositoryUrl task. string? repositoryUrl = GetRepositoryUrl(repository, remoteName, logWarning: null); + string? branchName = repository.GetBranchName(); // Item metadata are stored msbuild-escaped. GetMetadata unescapes, SetMetadata stores the value as specified. // Escape msbuild special characters so that URL escapes in the URL are preserved when the URL is read by GetMetadata. @@ -259,6 +260,7 @@ public static ITaskItem[] GetSourceRoots(GitRepository repository, string? remot item.SetMetadata(Names.SourceRoot.SourceControl, SourceControlName); item.SetMetadata(Names.SourceRoot.ScmRepositoryUrl, Evaluation.ProjectCollection.Escape(repositoryUrl)); item.SetMetadata(Names.SourceRoot.RevisionId, revisionId); + item.SetMetadata(Names.SourceRoot.BranchName, Evaluation.ProjectCollection.Escape(branchName)); result.Add(item); } else if (warnOnMissingCommitOrUnsupportedUri) From 341fa487e4151fbbb05dddc2ccee9daa23d29363 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 10 Jul 2024 15:36:33 -0700 Subject: [PATCH 3/6] Add BranchName to integration tests --- .../AzureDevOpsServerTests.cs | 4 ++++ .../AzureReposTests.cs | 4 ++++ .../BitbucketGitTests.cs | 14 ++++++++++++++ .../CloudHostedProvidersTests.cs | 18 +++++++++++++++++- .../GitHubTests.cs | 10 ++++++++++ .../GitLabTests.cs | 6 ++++++ .../GitWebTests.cs | 2 ++ .../GiteaTests.cs | 6 ++++++ .../GiteeTests.cs | 6 ++++++ .../TargetTests.cs | 6 ++++++ 10 files changed, 75 insertions(+), 1 deletion(-) diff --git a/src/SourceLink.Git.IntegrationTests/AzureDevOpsServerTests.cs b/src/SourceLink.Git.IntegrationTests/AzureDevOpsServerTests.cs index 47b0a375a..b4dd58940 100644 --- a/src/SourceLink.Git.IntegrationTests/AzureDevOpsServerTests.cs +++ b/src/SourceLink.Git.IntegrationTests/AzureDevOpsServerTests.cs @@ -43,6 +43,7 @@ public void FullValidation_Https() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -52,6 +53,7 @@ public void FullValidation_Https() NuGetPackageFolders, ProjectSourceRoot, $"https://tfs.{TestStrings.DomainName}.local:8080/tfs/DefaultCollection/project/_apis/git/repositories/{repoName}/items?api-version=1.0&versionType=commit&version={commitSha}&path=/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://tfs.{TestStrings.DomainName}.local:8080/tfs/DefaultCollection/project/_git/{repoName}", $"https://tfs.{TestStrings.DomainName}.local:8080/tfs/DefaultCollection/project/_git/{repoName}", @@ -101,6 +103,7 @@ public void FullValidation_Ssh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -110,6 +113,7 @@ public void FullValidation_Ssh() NuGetPackageFolders, ProjectSourceRoot, $"https://tfs.{TestStrings.DomainName}.local/tfs/DefaultCollection/project/_apis/git/repositories/{repoName}/items?api-version=1.0&versionType=commit&version={commitSha}&path=/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://tfs.{TestStrings.DomainName}.local/tfs/DefaultCollection/project/_git/{repoName}", $"https://tfs.{TestStrings.DomainName}.local/tfs/DefaultCollection/project/_git/{repoName}", diff --git a/src/SourceLink.Git.IntegrationTests/AzureReposTests.cs b/src/SourceLink.Git.IntegrationTests/AzureReposTests.cs index c43d68fc7..4755f6800 100644 --- a/src/SourceLink.Git.IntegrationTests/AzureReposTests.cs +++ b/src/SourceLink.Git.IntegrationTests/AzureReposTests.cs @@ -43,6 +43,7 @@ public void FullValidation_Https(string host) { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -52,6 +53,7 @@ public void FullValidation_Https(string host) NuGetPackageFolders, ProjectSourceRoot, $"https://test.{host}/test-org/_apis/git/repositories/{repoName}/items?api-version=1.0&versionType=commit&version={commitSha}&path=/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://test.{host}/test-org/_git/{repoName}", $"https://test.{host}/test-org/_git/{repoName}", @@ -100,6 +102,7 @@ public void FullValidation_Ssh(string host) { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -109,6 +112,7 @@ public void FullValidation_Ssh(string host) NuGetPackageFolders, ProjectSourceRoot, $"https://test.{host}/test-org/_apis/git/repositories/{repoName}/items?api-version=1.0&versionType=commit&version={commitSha}&path=/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://test.{host}/test-org/_git/{repoName}", $"https://test.{host}/test-org/_git/{repoName}", diff --git a/src/SourceLink.Git.IntegrationTests/BitbucketGitTests.cs b/src/SourceLink.Git.IntegrationTests/BitbucketGitTests.cs index 30716aa52..8132cb027 100644 --- a/src/SourceLink.Git.IntegrationTests/BitbucketGitTests.cs +++ b/src/SourceLink.Git.IntegrationTests/BitbucketGitTests.cs @@ -39,6 +39,7 @@ public void FullValidation_CloudHttps() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -48,6 +49,7 @@ public void FullValidation_CloudHttps() NuGetPackageFolders, ProjectSourceRoot, $"https://api.bitbucket.org/2.0/repositories/test-org/{repoName}/src/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://bitbucket.org/test-org/{repoName}", $"https://bitbucket.org/test-org/{repoName}" @@ -98,6 +100,7 @@ public void FullValidation_EnterpriseNewHttps() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -107,6 +110,7 @@ public void FullValidation_EnterpriseNewHttps() NuGetPackageFolders, ProjectSourceRoot, $"https://bitbucket.domain.com/projects/test-org/repos/{repoName}/raw/*?at={commitSha}", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://bitbucket.domain.com/scm/test-org/{repoName}", $"https://bitbucket.domain.com/scm/test-org/{repoName}" @@ -155,6 +159,7 @@ public void FullValidation_EnterpriseNewHttps_UrlWithPersonalToken() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -164,6 +169,7 @@ public void FullValidation_EnterpriseNewHttps_UrlWithPersonalToken() NuGetPackageFolders, ProjectSourceRoot, $"https://bitbucket.domain.com/projects/test-org/repos/{repoName}/raw/*?at={commitSha}", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://bitbucket.domain.com/scm/test-org/{repoName}.git", $"https://bitbucket.domain.com/scm/test-org/{repoName}.git" @@ -272,6 +278,7 @@ public void FullValidation_EnterpriseOldHttps() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -281,6 +288,7 @@ public void FullValidation_EnterpriseOldHttps() NuGetPackageFolders, ProjectSourceRoot, $"https://bitbucket.domain.com/projects/test-org/repos/{repoName}/browse/*?at={commitSha}&raw", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://bitbucket.domain.com/scm/test-org/{repoName}", $"https://bitbucket.domain.com/scm/test-org/{repoName}" @@ -330,6 +338,7 @@ public void FullValidation_CloudSsh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -339,6 +348,7 @@ public void FullValidation_CloudSsh() NuGetPackageFolders, ProjectSourceRoot, $"https://api.{TestStrings.DomainName}.com/2.0/repositories/test-org/{repoName}/src/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -388,6 +398,7 @@ public void FullValidation_EnterpriseOldSsh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -397,6 +408,7 @@ public void FullValidation_EnterpriseOldSsh() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/projects/test-org/repos/{repoName}/browse/*?at={commitSha}&raw", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -446,6 +458,7 @@ public void FullValidation_EnterpriseNewSsh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -455,6 +468,7 @@ public void FullValidation_EnterpriseNewSsh() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/projects/test-org/repos/{repoName}/raw/*?at={commitSha}", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" diff --git a/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs b/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs index ec1fedc1d..5d3486aad 100644 --- a/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs +++ b/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs @@ -76,12 +76,14 @@ public void NoRepository_NoWarnings() expressions: new[] { "@(SourceRoot)", + // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git "$(SourceLink)", }, expectedResults: new[] { NuGetPackageFolders, "", + // "refs/heads/main", }); Assert.False(File.Exists(sourceLinkFilePath)); @@ -105,7 +107,7 @@ public void NoCommit_NoRemote_Warnings() }, expectedResults: new[] { - NuGetPackageFolders + NuGetPackageFolders, }, expectedWarnings: new[] { @@ -145,6 +147,7 @@ public void NoCommit_NoRemote_NoWarnings() expressions: new[] { "@(SourceRoot)", + // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git "$(SourceLink)", "@(_SourceLinkFileWrites)", }, @@ -152,6 +155,7 @@ public void NoCommit_NoRemote_NoWarnings() { NuGetPackageFolders, "", + // "refs/heads/main", "", }); } @@ -181,6 +185,7 @@ public void Commit_NoRemote_NoWarnings() expressions: new[] { "@(SourceRoot)", + // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git "$(SourceLink)", "@(_SourceLinkFileWrites)", }, @@ -188,6 +193,7 @@ public void Commit_NoRemote_NoWarnings() { NuGetPackageFolders, ProjectSourceRoot, + // "refs/heads/main", "", "", }); @@ -218,6 +224,7 @@ public void NoCommit_Remote_NoWarnings() expressions: new[] { "@(SourceRoot)", + // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git "$(SourceLink)", "@(_SourceLinkFileWrites)", }, @@ -225,6 +232,7 @@ public void NoCommit_Remote_NoWarnings() { NuGetPackageFolders, "", + // "refs/heads/main", "", }); } @@ -281,6 +289,7 @@ public void CustomTranslation() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)", @@ -291,6 +300,7 @@ public void CustomTranslation() NuGetPackageFolders, ProjectSourceRoot, $"https://raw.githubusercontent.com/test-org/{repoName}/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://github.com/test-org/{repoName}", $"https://github.com/test-org/{repoName}", @@ -340,6 +350,7 @@ public void Host_VisualStudio(string host) { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -349,6 +360,7 @@ public void Host_VisualStudio(string host) NuGetPackageFolders, ProjectSourceRoot, $"https://test.{host}/test-org/_apis/git/repositories/{repoName}/items?api-version=1.0&versionType=commit&version={commitSha}&path=/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://test.{host}/test-org/_git/{repoName}", $"https://test.{host}/test-org/_git/{repoName}", @@ -382,6 +394,7 @@ public void Host_DevAzureCom(string host) { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -391,6 +404,7 @@ public void Host_DevAzureCom(string host) NuGetPackageFolders, ProjectSourceRoot, $"https://{host}/test/test-org/_apis/git/repositories/{repoName}/items?api-version=1.0&versionType=commit&version={commitSha}&path=/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{host}/test/test-org/_git/{repoName}", $"https://{host}/test/test-org/_git/{repoName}", @@ -415,11 +429,13 @@ public void Host_Unknown() expressions: new[] { "@(SourceRoot->'%(Identity):%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", }, expectedResults: new[] { NuGetPackageFolders + ":", EnsureTrailingDirectorySeparator(ProjectDir.Path) + ":", + "refs/heads/main", }, expectedWarnings: new[] { diff --git a/src/SourceLink.Git.IntegrationTests/GitHubTests.cs b/src/SourceLink.Git.IntegrationTests/GitHubTests.cs index c6b45867a..1e6f454cd 100644 --- a/src/SourceLink.Git.IntegrationTests/GitHubTests.cs +++ b/src/SourceLink.Git.IntegrationTests/GitHubTests.cs @@ -57,6 +57,7 @@ public void MutlipleProjects() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", }, @@ -65,6 +66,7 @@ public void MutlipleProjects() NuGetPackageFolders, SourceRoot, $"https://raw.githubusercontent.com/test-org/test-repo2/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"http://github.com/test-org/test-repo2", }, @@ -127,11 +129,13 @@ public void Environment_Enabled() expressions: new[] { "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(PrivateRepositoryUrl)", }, expectedResults: new[] { $"https://raw.githubusercontent.com/test-org/test-repo2/{commitSha}/*", + "refs/heads/main", $"http://github.com/test-org/test-repo2", }); } @@ -159,11 +163,13 @@ public void Environment_Disabled() expressions: new[] { "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(PrivateRepositoryUrl)", }, expectedResults: new[] { $"https://raw.githubusercontent.com/test-org/test-repo1/{commitSha}/*", + "refs/heads/main", $"http://github.com/test-org/test-repo1", }, expectedWarnings: new[] @@ -198,6 +204,7 @@ public void FullValidation_Https() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -207,6 +214,7 @@ public void FullValidation_Https() NuGetPackageFolders, ProjectSourceRoot, $"https://raw.githubusercontent.com/test-org/{repoName}/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"http://github.com/test-org/{repoName}", $"http://github.com/test-org/{repoName}" @@ -254,6 +262,7 @@ public void FullValidation_Ssh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -263,6 +272,7 @@ public void FullValidation_Ssh() NuGetPackageFolders, ProjectSourceRoot, $"https://raw.githubusercontent.com/test-org/{repoName}/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://github.com/test-org/{repoName}", $"https://github.com/test-org/{repoName}" diff --git a/src/SourceLink.Git.IntegrationTests/GitLabTests.cs b/src/SourceLink.Git.IntegrationTests/GitLabTests.cs index cd5e5b6e9..f36e46dea 100644 --- a/src/SourceLink.Git.IntegrationTests/GitLabTests.cs +++ b/src/SourceLink.Git.IntegrationTests/GitLabTests.cs @@ -43,6 +43,7 @@ public void FullValidation_Https() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -52,6 +53,7 @@ public void FullValidation_Https() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/test-org/{repoName}/-/raw/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -101,6 +103,7 @@ public void FullValidation_Ssh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -110,6 +113,7 @@ public void FullValidation_Ssh() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/test-org/{repoName}/-/raw/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -155,12 +159,14 @@ public void ImplicitHost() }, expressions: new[] { + "@(SourceRoot->'%(BranchName)')", "@(SourceRoot->'%(SourceLinkUrl)')", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" }, expectedResults: new[] { + "refs/heads/main", $"http://{TestStrings.DomainName}.com/test-org/{repoName}/-/raw/{commitSha}/*", $"http://{TestStrings.DomainName}.com/test-org/{repoName}", $"http://{TestStrings.DomainName}.com/test-org/{repoName}" diff --git a/src/SourceLink.Git.IntegrationTests/GitWebTests.cs b/src/SourceLink.Git.IntegrationTests/GitWebTests.cs index 8113eb651..2a5a8aa7f 100644 --- a/src/SourceLink.Git.IntegrationTests/GitWebTests.cs +++ b/src/SourceLink.Git.IntegrationTests/GitWebTests.cs @@ -46,6 +46,7 @@ public void FullValidation_Ssh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -55,6 +56,7 @@ public void FullValidation_Ssh() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/gitweb/?p={repoName};a=blob_plain;hb={commitSha};f=*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"ssh://git@{TestStrings.DomainName}.com/{repoNameFullyEscaped}", $"ssh://git@{TestStrings.DomainName}.com/{repoNameFullyEscaped}" diff --git a/src/SourceLink.Git.IntegrationTests/GiteaTests.cs b/src/SourceLink.Git.IntegrationTests/GiteaTests.cs index 6b0846c80..78ddc8fe6 100644 --- a/src/SourceLink.Git.IntegrationTests/GiteaTests.cs +++ b/src/SourceLink.Git.IntegrationTests/GiteaTests.cs @@ -43,6 +43,7 @@ public void FullValidation_Https() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -52,6 +53,7 @@ public void FullValidation_Https() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/test-org/{repoName}/raw/commit/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -101,6 +103,7 @@ public void FullValidation_Ssh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -110,6 +113,7 @@ public void FullValidation_Ssh() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/test-org/{repoName}/raw/commit/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -155,12 +159,14 @@ public void ImplicitHost() }, expressions: new[] { + "@(SourceRoot->'%(BranchName)')", "@(SourceRoot->'%(SourceLinkUrl)')", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" }, expectedResults: new[] { + "refs/heads/main", $"http://{TestStrings.DomainName}.com/test-org/{repoName}/raw/commit/{commitSha}/*", $"http://{TestStrings.DomainName}.com/test-org/{repoName}", $"http://{TestStrings.DomainName}.com/test-org/{repoName}" diff --git a/src/SourceLink.Git.IntegrationTests/GiteeTests.cs b/src/SourceLink.Git.IntegrationTests/GiteeTests.cs index ab45976d4..aa183d79b 100644 --- a/src/SourceLink.Git.IntegrationTests/GiteeTests.cs +++ b/src/SourceLink.Git.IntegrationTests/GiteeTests.cs @@ -43,6 +43,7 @@ public void FullValidation_Https() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -52,6 +53,7 @@ public void FullValidation_Https() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/test-org/{repoName}/raw/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -101,6 +103,7 @@ public void FullValidation_Ssh() { "@(SourceRoot)", "@(SourceRoot->'%(SourceLinkUrl)')", + "@(SourceRoot->'%(BranchName)')", "$(SourceLink)", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" @@ -110,6 +113,7 @@ public void FullValidation_Ssh() NuGetPackageFolders, ProjectSourceRoot, $"https://{TestStrings.DomainName}.com/test-org/{repoName}/raw/{commitSha}/*", + "refs/heads/main", s_relativeSourceLinkJsonPath, $"https://{TestStrings.DomainName}.com/test-org/{repoName}", $"https://{TestStrings.DomainName}.com/test-org/{repoName}" @@ -155,12 +159,14 @@ public void ImplicitHost() }, expressions: new[] { + "@(SourceRoot->'%(BranchName)')", "@(SourceRoot->'%(SourceLinkUrl)')", "$(PrivateRepositoryUrl)", "$(RepositoryUrl)" }, expectedResults: new[] { + "refs/heads/main", $"http://{TestStrings.DomainName}.com/test-org/{repoName}/raw/{commitSha}/*", $"http://{TestStrings.DomainName}.com/test-org/{repoName}", $"http://{TestStrings.DomainName}.com/test-org/{repoName}" diff --git a/src/SourceLink.Git.IntegrationTests/TargetTests.cs b/src/SourceLink.Git.IntegrationTests/TargetTests.cs index 34202ad59..4264ee3b6 100644 --- a/src/SourceLink.Git.IntegrationTests/TargetTests.cs +++ b/src/SourceLink.Git.IntegrationTests/TargetTests.cs @@ -48,6 +48,7 @@ public void GenerateSourceLinkFileTarget_EnableSourceLinkCondition() expressions: new[] { "@(SourceRoot)", + "@(SourceRoot->'%(BranchName)')", "$(Test_DefaultEnableSourceControlManagerQueries)", "$(Test_DefaultEnableSourceLink)", "$(SourceLink)" @@ -56,6 +57,7 @@ public void GenerateSourceLinkFileTarget_EnableSourceLinkCondition() { NuGetPackageFolders, ProjectSourceRoot, + "refs/heads/main", "true", "true", "" @@ -83,6 +85,7 @@ public void DefaultValuesForEnableProperties_DesignTimeBuild() expressions: new[] { "@(SourceRoot)", + "@(SourceRoot->'%(BranchName)')", "$(Test_DefaultEnableSourceControlManagerQueries)", "$(Test_DefaultEnableSourceLink)", "$(SourceLink)" @@ -91,6 +94,7 @@ public void DefaultValuesForEnableProperties_DesignTimeBuild() { NuGetPackageFolders, ProjectSourceRoot, + "refs/heads/main", "true", "", "" @@ -119,6 +123,7 @@ public void DefaultValuesForEnableProperties_BuildingForLiveUnitTesting() expressions: new[] { "@(SourceRoot)", + "@(SourceRoot->'%(BranchName)')", "$(Test_DefaultEnableSourceControlManagerQueries)", "$(Test_DefaultEnableSourceLink)", "$(SourceLink)" @@ -127,6 +132,7 @@ public void DefaultValuesForEnableProperties_BuildingForLiveUnitTesting() { NuGetPackageFolders, ProjectSourceRoot, + "refs/heads/main", "true", "", "" From 5f307613a34240f3c716a6e57413bb60ee53a842 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Thu, 11 Jul 2024 16:26:50 -0700 Subject: [PATCH 4/6] Fix GitUtilities.CreateGitRepository to avoid reliance on git's init.defaultBranch --- src/SourceLink.Git.IntegrationTests/Utilities/GitUtilities.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/SourceLink.Git.IntegrationTests/Utilities/GitUtilities.cs b/src/SourceLink.Git.IntegrationTests/Utilities/GitUtilities.cs index 3bd518f84..3a4a30361 100644 --- a/src/SourceLink.Git.IntegrationTests/Utilities/GitUtilities.cs +++ b/src/SourceLink.Git.IntegrationTests/Utilities/GitUtilities.cs @@ -30,6 +30,9 @@ public static Repository CreateGitRepository(string directory, string[]? commitF repository.Index.Write(); repository.Commit("First commit", s_signature, s_signature); + + // To avoid reliance on init.defaultBranch, rename the current branch to a known name. + repository.Branches.Rename(branch: repository.Head, newName: "main", allowOverwrite: true); } return repository; From ae6c677fac044821be0666d275a9f6d24f632208 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Mon, 15 Jul 2024 10:55:55 -0700 Subject: [PATCH 5/6] Remove RepositoryBranch shim in favor change in NuGet.Client --- .../build/Microsoft.Build.Tasks.Git.targets | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets b/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets index ac7c4c0a2..36fd40489 100644 --- a/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets +++ b/src/Microsoft.Build.Tasks.Git/build/Microsoft.Build.Tasks.Git.targets @@ -35,17 +35,6 @@ - - - $(SourceBranchName) - - git From f1914db948ddd717e8cd6227d08eba71f487d144 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Fri, 26 Jul 2024 13:17:24 -0700 Subject: [PATCH 6/6] Address code review feedback --- .../GitDataReader/GitReferenceResolver.cs | 4 ++-- .../CloudHostedProvidersTests.cs | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs index 04d1b0e67..7d970c094 100644 --- a/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs +++ b/src/Microsoft.Build.Tasks.Git/GitDataReader/GitReferenceResolver.cs @@ -157,7 +157,7 @@ internal static ImmutableDictionary ReadPackedReferences(TextRea { string reference = ReadReferenceFromFile(Path.Combine(_gitDirectory, GitRepository.GitHeadFileName)); - return TryGetReferenceName(reference, out string? name) ? name : null; + return TryGetReferenceName(reference, out var name) ? name : null; } public string? ResolveReference(string reference) @@ -185,7 +185,7 @@ private static bool TryGetReferenceName(string reference, [NotNullWhen(true)] ou { // See https://git-scm.com/docs/gitrepository-layout#Documentation/gitrepository-layout.txt-HEAD - if (TryGetReferenceName(reference, out string? symRef)) + if (TryGetReferenceName(reference, out var symRef)) { if (lazyVisitedReferences != null && !lazyVisitedReferences.Add(symRef)) { diff --git a/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs b/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs index 5d3486aad..c1dc9f0d8 100644 --- a/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs +++ b/src/SourceLink.Git.IntegrationTests/CloudHostedProvidersTests.cs @@ -76,14 +76,14 @@ public void NoRepository_NoWarnings() expressions: new[] { "@(SourceRoot)", - // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git + // "@(SourceRoot->'%(BranchName)')", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 "$(SourceLink)", }, expectedResults: new[] { NuGetPackageFolders, "", - // "refs/heads/main", + // "refs/heads/main", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 }); Assert.False(File.Exists(sourceLinkFilePath)); @@ -147,7 +147,7 @@ public void NoCommit_NoRemote_NoWarnings() expressions: new[] { "@(SourceRoot)", - // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git + // "@(SourceRoot->'%(BranchName)')", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 "$(SourceLink)", "@(_SourceLinkFileWrites)", }, @@ -155,7 +155,7 @@ public void NoCommit_NoRemote_NoWarnings() { NuGetPackageFolders, "", - // "refs/heads/main", + // "refs/heads/main", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 "", }); } @@ -185,7 +185,7 @@ public void Commit_NoRemote_NoWarnings() expressions: new[] { "@(SourceRoot)", - // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git + // "@(SourceRoot->'%(BranchName)')", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 "$(SourceLink)", "@(_SourceLinkFileWrites)", }, @@ -193,7 +193,7 @@ public void Commit_NoRemote_NoWarnings() { NuGetPackageFolders, ProjectSourceRoot, - // "refs/heads/main", + // "refs/heads/main", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 "", "", }); @@ -224,7 +224,7 @@ public void NoCommit_Remote_NoWarnings() expressions: new[] { "@(SourceRoot)", - // "@(SourceRoot->'%(BranchName)')", // TODO: Unclear what to do here since this test explicitly uses the SDK version of Microsoft.Build.Tasks.Git + // "@(SourceRoot->'%(BranchName)')", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 "$(SourceLink)", "@(_SourceLinkFileWrites)", }, @@ -232,7 +232,7 @@ public void NoCommit_Remote_NoWarnings() { NuGetPackageFolders, "", - // "refs/heads/main", + // "refs/heads/main", // TODO: Assert branch name once SDK has new SourceLink version https://github.com/dotnet/sourcelink/issues/1251 "", }); }