Fetch git commit using LibGit2Sharp that ships with VS2015 when possible

* Thanks to https://stackoverflow.com/a/43815817/4070143
This commit is contained in:
baldurk
2017-11-24 17:51:12 +00:00
parent 0b8a5008ba
commit b492840349
15 changed files with 79 additions and 0 deletions
+1
View File
@@ -1713,4 +1713,5 @@ IF %ERRORLEVEL% NEQ 0 (echo ====================================================
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -159,4 +159,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -146,4 +146,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -125,4 +125,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -121,4 +121,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -121,4 +121,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
+1
View File
@@ -196,4 +196,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
+1
View File
@@ -132,4 +132,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -120,4 +120,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -222,4 +222,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
@@ -206,4 +206,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
+65
View File
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Thanks to https://stackoverflow.com/a/43815817/4070143 -->
<!-- fetch the path of the assembly, and unescape it so MSBuild doesn't choke on brackets in "Program Files (x86)" -->
<PropertyGroup>
<LibGit2SharpPath>$([MSBuild]::Unescape("$(DevEnvDir)\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\LibGit2Sharp.dll"))</LibGit2SharpPath>
</PropertyGroup>
<!-- Declare the task with some inline code -->
<UsingTask TaskName="GetGitCommit" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
<ParameterGroup>
<Sha1 ParameterType="System.String" Required="False" Output="True" />
<Repository ParameterType="System.String" Required="True" Output="False" />
<LibGit2SharpAssemblyPath ParameterType="System.String" Required="True" Output="False" />
</ParameterGroup>
<Task>
<Reference Include="$(LibGit2SharpPath)" />
<Code Type="Class" Language="cs">
using System;
using System.Linq;
using System.Runtime.CompilerServices;
namespace GitIntrospection {
public class GetGitCommit : Microsoft.Build.Utilities.Task {
public override bool Execute() {
System.AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
if (args.Name.Contains("LibGit2Sharp")) {
return System.Reflection.Assembly.LoadFrom(LibGit2SharpAssemblyPath);
}
return null;
};
GetCommit();
return !Log.HasLoggedErrors;
}
private void GetCommit() {
try {
Sha1 = (new LibGit2Sharp.Repository(Repository)).Commits.First().Id.Sha;
} catch(LibGit2Sharp.RepositoryNotFoundException) {
}
}
[Microsoft.Build.Framework.Required] public string Repository { get; set; }
[Microsoft.Build.Framework.Required] public string LibGit2SharpAssemblyPath { get; set; }
[Microsoft.Build.Framework.Output] public string Sha1 { get; set; }
}
}
</Code>
</Task>
</UsingTask>
<!-- Only actually run the task if we located the assembly for LibGit2Sharp. Otherwise silently skip this step. -->
<Target Name="RunTask" BeforeTargets="PrepareForBuild" Condition="exists('$(LibGit2SharpPath)')">
<GetGitCommit Repository="$(SolutionDir)" LibGit2SharpAssemblyPath="$(LibGit2SharpPath)" ContinueOnError="WarnAndContinue">
<Output TaskParameter="Sha1" PropertyName="CommitId" />
</GetGitCommit>
<Message Text="Building from Git commit $(CommitId)" />
<ItemGroup Condition="$(CommitId.Length) > 0">
<ClCompile>
<PreprocessorDefinitions>GIT_COMMIT_HASH="$(CommitId)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
</Target>
</Project>
+1
View File
@@ -488,4 +488,5 @@
<Copy SourceFiles="$(ProjectDir)3rdparty\dbghelp\$(Platform)\dbghelp.dll" DestinationFolder="$(OutDir)">
</Copy>
</Target>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
+1
View File
@@ -222,4 +222,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>
+1
View File
@@ -200,4 +200,5 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Import Project="$(SolutionDir)\renderdoc\renderdoc.props" />
</Project>