Skip to content

Add configuration parameter to format CommitDate #1305 #1306

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
commit-message-incrementing: Enabled
commit-date-format: 'yyyy-MM-dd'
ignore:
sha: []
commits-before: yyyy-MM-ddTHH:mm:ss
Expand Down Expand Up @@ -136,6 +137,9 @@ Sets whether it should be possible to increment the version with special syntax
in the commit message. See the `*-version-bump-message` options above for
details on the syntax. Default set to `Enabled`; set to `Disabled` to disable.

### commit-date-format
Sets the format which will be used to format the `CommitDate` output variable.

### ignore
The header for ignore configuration.

Expand Down
37 changes: 37 additions & 0 deletions src/GitVersionCore.Tests/CommitDateTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using GitVersion;
using GitVersion.VersionFilters;
using NUnit.Framework;

namespace GitVersionCore.Tests
{
[TestFixture]
public class CommitDateTests
{
[Test]
[TestCase("yyyy-MM-dd", "2017-10-06")]
[TestCase("dd.MM.yyyy", "06.10.2017")]
[TestCase("yyyyMMdd", "20171006")]
[TestCase("yyyy-MM", "2017-10")]
public void CommitDateFormatTest(string format, string expectedOutcome)
{
var date = new DateTime(2017, 10, 6);

var formatValues = new SemanticVersionFormatValues(
new SemanticVersion
{
BuildMetaData = new SemanticVersionBuildMetaData(0, "master", "3139d4eeb044f46057693473eacc2655b3b27e7d", new DateTimeOffset(date, TimeSpan.Zero)), // assume time zone is UTC

},
new EffectiveConfiguration(
AssemblyVersioningScheme.MajorMinorPatch, AssemblyFileVersioningScheme.MajorMinorPatch, "", VersioningMode.ContinuousDelivery, "", "", "", IncrementStrategy.Inherit,
"", true, "", "", false, "", "", "", "", CommitMessageIncrementMode.Enabled, 4, 4, 4, Enumerable.Empty<IVersionFilter>(), false, true, format)
);

Assert.That(formatValues.CommitDate, Is.EqualTo(expectedOutcome));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,4 @@ branches:
is-mainline: true
ignore:
sha: []
commit-date-format: yyyy-MM-dd
1 change: 1 addition & 0 deletions src/GitVersionCore.Tests/GitVersionCore.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
<Compile Include="BuildServers\VsoAgentBuildNumberTests.cs" />
<Compile Include="BuildServers\VsoAgentTests.cs" />
<Compile Include="BuildServers\TeamCityTests.cs" />
<Compile Include="CommitDateTests.cs" />
<Compile Include="Configuration\IgnoreConfigTests.cs" />
<Compile Include="DynamicRepositoryTests.cs" />
<Compile Include="GitRepoMetadataProviderTests.cs" />
Expand Down
5 changes: 3 additions & 2 deletions src/GitVersionCore.Tests/TestEffectiveConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ public TestEffectiveConfiguration(
int commitsSinceVersionSourcePadding = 4,
IEnumerable<IVersionFilter> versionFilters = null,
bool tracksReleaseBranches = false,
bool isRelease = false) :
bool isRelease = false,
string commitDateFormat = "yyyy-MM-dd") :
base(assemblyVersioningScheme, assemblyFileVersioningScheme, assemblyInformationalFormat, versioningMode, gitTagPrefix, tag, nextVersion, IncrementStrategy.Patch,
branchPrefixToTrim, preventIncrementForMergedBranchVersion, tagNumberPattern, continuousDeploymentFallbackTag,
trackMergeTarget,
majorMessage, minorMessage, patchMessage, noBumpMessage,
commitMessageMode, legacySemVerPadding, buildMetaDataPadding, commitsSinceVersionSourcePadding,
versionFilters ?? Enumerable.Empty<IVersionFilter>(),
tracksReleaseBranches, isRelease)
tracksReleaseBranches, isRelease, commitDateFormat)
{
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/GitVersionCore/Configuration/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,5 +134,8 @@ T MergeObjects<T>(T target, T source)

[YamlMember(Alias = "increment")]
public IncrementStrategy? Increment { get; set; }

[YamlMember(Alias = "commit-date-format")]
public string CommitDateFormat { get; set; }
}
}
3 changes: 2 additions & 1 deletion src/GitVersionCore/Configuration/ConfigurationProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public static void ApplyDefaultsTo(Config config)
config.LegacySemVerPadding = config.LegacySemVerPadding ?? 4;
config.BuildMetaDataPadding = config.BuildMetaDataPadding ?? 4;
config.CommitsSinceVersionSourcePadding = config.CommitsSinceVersionSourcePadding ?? 4;
config.CommitDateFormat = config.CommitDateFormat ?? "yyyy-MM-dd";

var configBranches = config.Branches.ToList();

Expand Down Expand Up @@ -260,7 +261,7 @@ public static void Verify(GitPreparer gitPreparer, IFileSystem fileSystem)
{
if (!string.IsNullOrWhiteSpace(gitPreparer.TargetUrl))
{
// Assuming this is a dynamic repository. At this stage it's unsure whether we have
// Assuming this is a dynamic repository. At this stage it's unsure whether we have
// any .git info so we need to skip verification
return;
}
Expand Down
6 changes: 5 additions & 1 deletion src/GitVersionCore/EffectiveConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public EffectiveConfiguration(
int commitsSinceVersionSourcePadding,
IEnumerable<IVersionFilter> versionFilters,
bool tracksReleaseBranches,
bool isCurrentBranchRelease)
bool isCurrentBranchRelease,
string commitDateFormat)
{
AssemblyVersioningScheme = assemblyVersioningScheme;
AssemblyFileVersioningScheme = assemblyFileVersioningScheme;
Expand All @@ -55,6 +56,7 @@ public EffectiveConfiguration(
VersionFilters = versionFilters;
TracksReleaseBranches = tracksReleaseBranches;
IsCurrentBranchRelease = isCurrentBranchRelease;
CommitDateFormat = commitDateFormat;
}

public bool TracksReleaseBranches { get; private set; }
Expand Down Expand Up @@ -105,5 +107,7 @@ public EffectiveConfiguration(
public CommitMessageIncrementMode CommitMessageIncrementing { get; private set; }

public IEnumerable<IVersionFilter> VersionFilters { get; private set; }

public string CommitDateFormat { get; private set; }
}
}
4 changes: 3 additions & 1 deletion src/GitVersionCore/GitVersionContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ void CalculateEffectiveConfiguration()
var minorMessage = FullConfiguration.MinorVersionBumpMessage;
var patchMessage = FullConfiguration.PatchVersionBumpMessage;
var noBumpMessage = FullConfiguration.NoBumpMessage;
var commitDateFormat = FullConfiguration.CommitDateFormat;

var commitMessageVersionBump = currentBranchConfig.CommitMessageIncrementing ?? FullConfiguration.CommitMessageIncrementing.Value;

Expand All @@ -144,7 +145,8 @@ void CalculateEffectiveConfiguration()
FullConfiguration.CommitsSinceVersionSourcePadding.Value,
FullConfiguration.Ignore.ToFilters(),
currentBranchConfig.TracksReleaseBranches.Value,
currentBranchConfig.IsReleaseBranch.Value);
currentBranchConfig.IsReleaseBranch.Value,
commitDateFormat);
}

private static Branch GetTargetBranch(IRepository repository, string targetBranch)
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersionCore/SemanticVersionFormatValues.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public string Sha

public string CommitDate
{
get { return _semver.BuildMetaData.CommitDate.UtcDateTime.ToString("yyyy-MM-dd"); }
get { return _semver.BuildMetaData.CommitDate.UtcDateTime.ToString(_config.CommitDateFormat, CultureInfo.InvariantCulture); }
}

// TODO When NuGet 3 is released: public string NuGetVersionV3 { get { return ??; } }
Expand Down