From 1ee6ae4785d73a21970cd42c28bc669107c1ce1a Mon Sep 17 00:00:00 2001
From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch>
Date: Thu, 21 Dec 2017 11:42:06 +0100
Subject: [PATCH] Include commit reference into startup message.

This is done using a git-hook script generating a text file which is
used as a resource by VS. The pre-build script in VS makes sure the file
is actually existing (using a default string) since otherwise the build
would fail.
---
 AutoTx/ATXProject.csproj                |  6 ++++--
 AutoTx/AutoTx.cs                        |  5 ++++-
 AutoTx/Properties/Resources.Designer.cs | 12 +++++++++++-
 AutoTx/Properties/Resources.resx        |  3 +++
 AutoTx/Resources/.gitignore             |  1 +
 Scripts/git-hooks/post-commit           |  6 ++++++
 6 files changed, 29 insertions(+), 4 deletions(-)
 create mode 100644 Scripts/git-hooks/post-commit

diff --git a/AutoTx/ATXProject.csproj b/AutoTx/ATXProject.csproj
index 3e86040..5af4a78 100644
--- a/AutoTx/ATXProject.csproj
+++ b/AutoTx/ATXProject.csproj
@@ -147,10 +147,12 @@
   <ItemGroup>
     <None Include="Resources\BuildDate.txt" />
   </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\BuildCommit.txt" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-    <PreBuildEvent>PowerShell -Command "Get-Date -Format 'yyyy-MM-dd HH:mm:ss' &gt; $(ProjectDir)\Resources\BuildDate.txt ; Get-Content $(ProjectDir)\Resources\BuildDate.txt"
-</PreBuildEvent>
+    <PreBuildEvent>PowerShell -Command "$BCommit = '$(ProjectDir)\Resources\BuildCommit.txt' ; $BDate = '$(ProjectDir)\Resources\BuildDate.txt' ; if (-Not (Test-Path $BCommit)) { Write-Output 'UNKNOWN' &gt; $BCommit } ; Get-Date -Format 'yyyy-MM-dd HH:mm:ss' &gt; $BDate ; Get-Content $BDate"</PreBuildEvent>
   </PropertyGroup>
   <PropertyGroup>
     <PostBuildEvent>PowerShell -Command "Write-Host $(ConfigurationName)" &gt; $(ProjectDir)\Resources\BuildConfiguration.txt
diff --git a/AutoTx/AutoTx.cs b/AutoTx/AutoTx.cs
index 3c33626..bafec3d 100644
--- a/AutoTx/AutoTx.cs
+++ b/AutoTx/AutoTx.cs
@@ -251,8 +251,11 @@ namespace AutoTx
 
             // read the build timestamp from the resources:
             var buildTimestamp = Properties.Resources.BuildDate.Trim();
+            var buildCommitName = Properties.Resources.BuildCommit.Trim();
             writeLog("-----------------------");
-            writeLog(ServiceName + " service started <build " + buildTimestamp + ">");
+            writeLog(ServiceName + " service started.");
+            writeLog("build: [" + buildTimestamp + "]");
+            writeLog("commit: [" + buildCommitName + "]");
             writeLog("-----------------------");
         }
 
diff --git a/AutoTx/Properties/Resources.Designer.cs b/AutoTx/Properties/Resources.Designer.cs
index e18a2f6..adfac63 100644
--- a/AutoTx/Properties/Resources.Designer.cs
+++ b/AutoTx/Properties/Resources.Designer.cs
@@ -61,7 +61,17 @@ namespace AutoTx.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to 2017-08-28 18:49:13
+        ///   Looks up a localized string similar to autotransfer-v1-134-g04a73b1
+        ///.
+        /// </summary>
+        internal static string BuildCommit {
+            get {
+                return ResourceManager.GetString("BuildCommit", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to 2017-12-21 10:42:03
         ///.
         /// </summary>
         internal static string BuildDate {
diff --git a/AutoTx/Properties/Resources.resx b/AutoTx/Properties/Resources.resx
index 32307e8..0cf010f 100644
--- a/AutoTx/Properties/Resources.resx
+++ b/AutoTx/Properties/Resources.resx
@@ -118,6 +118,9 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="BuildCommit" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\BuildCommit.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
   <data name="BuildDate" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\BuildDate.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
diff --git a/AutoTx/Resources/.gitignore b/AutoTx/Resources/.gitignore
index 8b0d5a6..06696d3 100644
--- a/AutoTx/Resources/.gitignore
+++ b/AutoTx/Resources/.gitignore
@@ -1,2 +1,3 @@
 BuildDate.txt
 BuildConfiguration.txt
+BuildCommit.txt
\ No newline at end of file
diff --git a/Scripts/git-hooks/post-commit b/Scripts/git-hooks/post-commit
new file mode 100644
index 0000000..0fb08a9
--- /dev/null
+++ b/Scripts/git-hooks/post-commit
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# A hook script to generate a file containing the output of "git describe" for
+# being used further down the build+packaging pipeline.
+
+git describe --tags > AutoTx/Resources/BuildCommit.txt
\ No newline at end of file
-- 
GitLab