From 628d861484f93769f2fd7b691b7cdb58e03e7c6d Mon Sep 17 00:00:00 2001 From: Hugh Gleaves Date: Mon, 16 Jan 2017 10:17:32 -0700 Subject: [PATCH 1/6] Hard code an adjustment to AZ time. --- NetRevisionTool/RevisionFormat.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NetRevisionTool/RevisionFormat.cs b/NetRevisionTool/RevisionFormat.cs index d9fe7ea..e9191d2 100644 --- a/NetRevisionTool/RevisionFormat.cs +++ b/NetRevisionTool/RevisionFormat.cs @@ -167,7 +167,9 @@ private string FormatTimeScheme(Match match) case SchemeType.Readable: if (data.Utc) { - time = time.UtcDateTime; + var zone = TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time"); + time = time.UtcDateTime; + time = TimeZoneInfo.ConvertTimeFromUtc(time.DateTime, zone); } return time.ToString(data.TimeFormat, CultureInfo.InvariantCulture); From 5f12e58cac61e0a39516ffb89d81a2f0a917bf76 Mon Sep 17 00:00:00 2001 From: Hugh Gleaves Date: Tue, 25 Apr 2017 14:36:51 -0700 Subject: [PATCH 2/6] Expose the repo's folder name for Git repos. This is ordinarily the same as the name of the repo in the remote host. --- NetRevisionTool/Program.cs | 2 +- NetRevisionTool/RevisionData.cs | 5 +++++ NetRevisionTool/RevisionFormat.cs | 2 ++ NetRevisionTool/VcsProviders/GitProvider.cs | 18 +++++++++++++----- NetRevisionTool/VcsProviders/IVcsProvider.cs | 2 +- .../VcsProviders/SubversionProvider.cs | 11 ++++++----- 6 files changed, 28 insertions(+), 12 deletions(-) diff --git a/NetRevisionTool/Program.cs b/NetRevisionTool/Program.cs index a090b11..6570a0a 100644 --- a/NetRevisionTool/Program.cs +++ b/NetRevisionTool/Program.cs @@ -407,7 +407,7 @@ private static RevisionData ProcessDirectory(string path, bool scanRoot, string ShowDebugMessage("Root directory will be scanned.", 0); path = rootPath; } - data = provider.ProcessDirectory(path); + data = provider.ProcessDirectory(path, rootPath); break; } } diff --git a/NetRevisionTool/RevisionData.cs b/NetRevisionTool/RevisionData.cs index 2cea16c..228dbf7 100644 --- a/NetRevisionTool/RevisionData.cs +++ b/NetRevisionTool/RevisionData.cs @@ -87,6 +87,11 @@ internal class RevisionData /// public int CommitsAfterTag { get; set; } + /// + /// The name of the parent containing repository folder, this is usually the same as the name of the hosted repo. + /// + public string RepoRootFolder { get; set; } + #endregion Revision data properties #region Operations diff --git a/NetRevisionTool/RevisionFormat.cs b/NetRevisionTool/RevisionFormat.cs index e9191d2..5e043f0 100644 --- a/NetRevisionTool/RevisionFormat.cs +++ b/NetRevisionTool/RevisionFormat.cs @@ -81,6 +81,8 @@ public string Resolve(string format) format = format.Replace("{amail}", RevisionData.AuthorEMail); format = format.Replace("{mname}", Environment.MachineName); + + if (!string.IsNullOrEmpty(RevisionData.Branch)) { format = format.Replace("{branch}", RevisionData.Branch); diff --git a/NetRevisionTool/VcsProviders/GitProvider.cs b/NetRevisionTool/VcsProviders/GitProvider.cs index 3ba34cb..7f10ffd 100644 --- a/NetRevisionTool/VcsProviders/GitProvider.cs +++ b/NetRevisionTool/VcsProviders/GitProvider.cs @@ -69,12 +69,20 @@ public bool CheckDirectory(string path, out string rootPath) return false; } - public RevisionData ProcessDirectory(string path) + public RevisionData ProcessDirectory(string path, string repoRoot) { - // Initialise data - RevisionData data = new RevisionData - { - VcsProvider = this + string repositoryRoot = ""; + + if (String.IsNullOrWhiteSpace(repoRoot) == false) + { + repositoryRoot = Path.GetFileName(repoRoot); + } + + // Initialise data + RevisionData data = new RevisionData + { + VcsProvider = this, + RepoRootFolder = repositoryRoot }; // Queries the commit hash and time from the latest log entry diff --git a/NetRevisionTool/VcsProviders/IVcsProvider.cs b/NetRevisionTool/VcsProviders/IVcsProvider.cs index a18168c..34336a9 100644 --- a/NetRevisionTool/VcsProviders/IVcsProvider.cs +++ b/NetRevisionTool/VcsProviders/IVcsProvider.cs @@ -34,6 +34,6 @@ internal interface IVcsProvider /// /// The directory to process. /// The data about the revision found in the directory. - RevisionData ProcessDirectory(string path); + RevisionData ProcessDirectory(string path, string repoRoot); } } diff --git a/NetRevisionTool/VcsProviders/SubversionProvider.cs b/NetRevisionTool/VcsProviders/SubversionProvider.cs index 4778481..77d9029 100644 --- a/NetRevisionTool/VcsProviders/SubversionProvider.cs +++ b/NetRevisionTool/VcsProviders/SubversionProvider.cs @@ -79,12 +79,13 @@ public bool CheckDirectory(string path, out string rootPath) return false; } - public RevisionData ProcessDirectory(string path) + public RevisionData ProcessDirectory(string path, string repoRoot) { - // Initialise data - RevisionData data = new RevisionData - { - VcsProvider = this + // Initialise data + RevisionData data = new RevisionData + { + VcsProvider = this, + RepoRootFolder = "" // Not yet implemneted as it is in GitProvider. }; // svn assumes case-sensitive path names on Windows, which is... bad. From 0bdd2659f0bc65e004c37d038a7933a0acfdc951 Mon Sep 17 00:00:00 2001 From: Hugh Gleaves Date: Tue, 25 Apr 2017 14:46:34 -0700 Subject: [PATCH 3/6] Replace the new {repodir} directive if the dir is present in the revision data. --- NetRevisionTool/RevisionFormat.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NetRevisionTool/RevisionFormat.cs b/NetRevisionTool/RevisionFormat.cs index 5e043f0..2dfb717 100644 --- a/NetRevisionTool/RevisionFormat.cs +++ b/NetRevisionTool/RevisionFormat.cs @@ -81,7 +81,8 @@ public string Resolve(string format) format = format.Replace("{amail}", RevisionData.AuthorEMail); format = format.Replace("{mname}", Environment.MachineName); - + if (RevisionData.RepoRootFolder != String.Empty) + format = format.Replace("{repodir}", RevisionData.RepoRootFolder); if (!string.IsNullOrEmpty(RevisionData.Branch)) { From c2fef78b9e2b12fe828425429a603fe4ca9f036d Mon Sep 17 00:00:00 2001 From: Hugh Gleaves Date: Wed, 3 May 2017 15:36:44 -0700 Subject: [PATCH 4/6] Suppress the warning about uncommitted changes unless the changed file is not AssemblyInfo.cs, AssemblyInfo.vb or AssemblyInfo.bak --- NetRevisionTool/Program.cs | 3 +++ NetRevisionTool/VcsProviders/GitProvider.cs | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/NetRevisionTool/Program.cs b/NetRevisionTool/Program.cs index 6570a0a..c88fdd8 100644 --- a/NetRevisionTool/Program.cs +++ b/NetRevisionTool/Program.cs @@ -313,6 +313,9 @@ private static void MainWrapper() /// 0 (trace message), 1 (success), 2 (warning), 3 (error), 4 (raw output). public static void ShowDebugMessage(string text, int severity = 0) { + if (text == null) + return; + if (showDebugOutput) { var color = Console.ForegroundColor; diff --git a/NetRevisionTool/VcsProviders/GitProvider.cs b/NetRevisionTool/VcsProviders/GitProvider.cs index 7f10ffd..e48d3d8 100644 --- a/NetRevisionTool/VcsProviders/GitProvider.cs +++ b/NetRevisionTool/VcsProviders/GitProvider.cs @@ -148,13 +148,20 @@ public RevisionData ProcessDirectory(string path, string repoRoot) line = null; while (!p.StandardOutput.EndOfStream) { - line = p.StandardOutput.ReadLine(); + string templine = p.StandardOutput.ReadLine(); + + // Do not consider this line if it contans any of the file names that can, conceivably appear in the status due to the tool itself. + + if (!(templine.Contains("AssemblyInfo.cs") || templine.Contains("AssemblyInfo.vb") || templine.Contains("AssemblyInfo.bak"))) + line = templine; + Program.ShowDebugMessage(line, 4); } if (!p.WaitForExit(1000)) { p.Kill(); } + data.IsModified = !string.IsNullOrEmpty(line); // Query the current branch From f760d7ed9325e46aa5e2bd905dc18d56733e385e Mon Sep 17 00:00:00 2001 From: Hugh Gleaves Date: Wed, 3 May 2017 15:36:44 -0700 Subject: [PATCH 5/6] Suppress the warning about uncommitted changes unless the changed file is not AssemblyInfo.cs, AssemblyInfo.vb or AssemblyInfo.bak --- NetRevisionTool/Program.cs | 3 +++ NetRevisionTool/VcsProviders/GitProvider.cs | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/NetRevisionTool/Program.cs b/NetRevisionTool/Program.cs index a090b11..97b47a3 100644 --- a/NetRevisionTool/Program.cs +++ b/NetRevisionTool/Program.cs @@ -313,6 +313,9 @@ private static void MainWrapper() /// 0 (trace message), 1 (success), 2 (warning), 3 (error), 4 (raw output). public static void ShowDebugMessage(string text, int severity = 0) { + if (text == null) + return; + if (showDebugOutput) { var color = Console.ForegroundColor; diff --git a/NetRevisionTool/VcsProviders/GitProvider.cs b/NetRevisionTool/VcsProviders/GitProvider.cs index 3ba34cb..8643406 100644 --- a/NetRevisionTool/VcsProviders/GitProvider.cs +++ b/NetRevisionTool/VcsProviders/GitProvider.cs @@ -140,13 +140,20 @@ public RevisionData ProcessDirectory(string path) line = null; while (!p.StandardOutput.EndOfStream) { - line = p.StandardOutput.ReadLine(); + string templine = p.StandardOutput.ReadLine(); + + // Do not consider this line if it contans any of the file names that can, conceivably appear in the status due to the tool itself. + + if (!(templine.Contains("AssemblyInfo.cs") || templine.Contains("AssemblyInfo.vb") || templine.Contains("AssemblyInfo.bak"))) + line = templine; + Program.ShowDebugMessage(line, 4); } if (!p.WaitForExit(1000)) { p.Kill(); } + data.IsModified = !string.IsNullOrEmpty(line); // Query the current branch From 328250ded1dbe9ca373ab019d28c690b753e8789 Mon Sep 17 00:00:00 2001 From: Hugh Gleaves Date: Fri, 9 Jun 2017 12:02:26 -0700 Subject: [PATCH 6/6] Correct the way we were doing AZ time. --- NetRevisionTool/Properties/AssemblyInfo.cs | 4 ++-- NetRevisionTool/RevisionFormat.cs | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/NetRevisionTool/Properties/AssemblyInfo.cs b/NetRevisionTool/Properties/AssemblyInfo.cs index 7016827..47fc291 100644 --- a/NetRevisionTool/Properties/AssemblyInfo.cs +++ b/NetRevisionTool/Properties/AssemblyInfo.cs @@ -8,10 +8,10 @@ [assembly: AssemblyCompany("unclassified software development")] // Assembly identity version. Must be a dotted-numeric version. -[assembly: AssemblyVersion("2.6.2")] +[assembly: AssemblyVersion("2.6.3")] // Repeat for Win32 file version resource because the assembly version is expanded to 4 parts. -[assembly: AssemblyFileVersion("2.6.2")] +[assembly: AssemblyFileVersion("2.6.3")] // Indicate the build configuration #if DEBUG diff --git a/NetRevisionTool/RevisionFormat.cs b/NetRevisionTool/RevisionFormat.cs index 2dfb717..aef52e7 100644 --- a/NetRevisionTool/RevisionFormat.cs +++ b/NetRevisionTool/RevisionFormat.cs @@ -170,9 +170,12 @@ private string FormatTimeScheme(Match match) case SchemeType.Readable: if (data.Utc) { + // This code is specific to Arizona - it gets MST then uses that to get MST with daylight saving disabled. + // SEE: https://stackoverflow.com/questions/12266948/remove-dst-from-datetime var zone = TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time"); + var newzone = TimeZoneInfo.CreateCustomTimeZone(zone.Id, zone.BaseUtcOffset, zone.DisplayName, zone.StandardName, "", null, true); time = time.UtcDateTime; - time = TimeZoneInfo.ConvertTimeFromUtc(time.DateTime, zone); + time = TimeZoneInfo.ConvertTimeFromUtc(time.DateTime, newzone); } return time.ToString(data.TimeFormat, CultureInfo.InvariantCulture); @@ -190,16 +193,16 @@ private string FormatTimeScheme(Match match) return scheme; } - #endregion Format resolving + #endregion Format resolving - #region Scheme parsing + #region Scheme parsing - /// - /// Parses a version scheme specification. - /// - /// The version scheme specification to parse. - /// The parsed scheme data. - private static SchemeData ParseScheme(string scheme) + /// + /// Parses a version scheme specification. + /// + /// The version scheme specification to parse. + /// The parsed scheme data. + private static SchemeData ParseScheme(string scheme) { SchemeData data = new SchemeData();