Skip to content

Commit a28c18a

Browse files
committed
Fixed #242
1 parent e48ed59 commit a28c18a

22 files changed

+143
-48
lines changed

GitVersionCore.Tests/JsonVersionBuilderTests.Json.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"LegacySemVer":"1.2.3-unstable4",
1212
"LegacySemVerPadded":"1.2.3-unstable0004",
1313
"AssemblySemVer":"1.2.3.0",
14+
"AssemblyFileSemVer":"1.2.3.0",
1415
"FullSemVer":"1.2.3-unstable.4+5",
1516
"InformationalVersion":"1.2.3-unstable.4+5.Branch.feature1.Sha.commitSha",
1617
"ClassicVersion":"1.2.3.5",

GitVersionCore.Tests/JsonVersionBuilderTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using ApprovalTests;
33
using GitVersion;
4+
using GitVersion.Configuration;
45
using NUnit.Framework;
56

67
[TestFixture]
@@ -17,7 +18,7 @@ public void Json()
1718
PreReleaseTag = "unstable4",
1819
BuildMetaData = new SemanticVersionBuildMetaData(5, "feature1", "commitSha",DateTimeOffset.Parse("2014-03-06 23:59:59Z"))
1920
};
20-
var variables = VariableProvider.GetVariablesFor(semanticVersion);
21+
var variables = VariableProvider.GetVariablesFor(semanticVersion, new Config());
2122
var json = JsonOutputFormatter.ToJson(variables);
2223
Approvals.Verify(json);
2324
}

GitVersionCore.Tests/VariableProviderTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using GitVersion;
3+
using GitVersion.Configuration;
34
using NUnit.Framework;
45
using Shouldly;
56

@@ -22,7 +23,7 @@ public void DevelopBranchFormatsSemVerForCiFeed()
2223
semVer.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z");
2324

2425

25-
var vars = VariableProvider.GetVariablesFor(semVer);
26+
var vars = VariableProvider.GetVariablesFor(semVer, new Config());
2627

2728
vars[VariableProvider.SemVer].ShouldBe("1.2.3.5-unstable");
2829
}

GitVersionCore/AssemblyVersioningScheme.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
public enum AssemblyVersioningScheme
44
{
5+
MajorMinorPatchMetadata,
56
MajorMinorPatch,
67
MajorMinor,
78
Major,
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
namespace GitVersion
2+
{
3+
using System;
4+
5+
public static class AssemblyVersionsGenerator
6+
{
7+
public static string GetAssemblyVersion(
8+
this SemanticVersion sv,
9+
AssemblyVersioningScheme scheme)
10+
{
11+
switch (scheme)
12+
{
13+
case AssemblyVersioningScheme.Major:
14+
return string.Format("{0}.0.0.0", sv.Major);
15+
case AssemblyVersioningScheme.MajorMinor:
16+
return string.Format("{0}.{1}.0.0", sv.Major, sv.Minor);
17+
case AssemblyVersioningScheme.MajorMinorPatch:
18+
return string.Format("{0}.{1}.{2}.0", sv.Major, sv.Minor, sv.Patch);
19+
case AssemblyVersioningScheme.MajorMinorPatchMetadata:
20+
return string.Format("{0}.{1}.{2}.{3}", sv.Major, sv.Minor, sv.Patch, sv.BuildMetaData.CommitsSinceTag ?? 0);
21+
default:
22+
throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
23+
}
24+
25+
}
26+
public static string GetAssemblyFileVersion(
27+
this SemanticVersion sv,
28+
AssemblyVersioningScheme scheme)
29+
{
30+
switch (scheme)
31+
{
32+
case AssemblyVersioningScheme.Major:
33+
case AssemblyVersioningScheme.MajorMinor:
34+
case AssemblyVersioningScheme.MajorMinorPatch:
35+
return string.Format("{0}.{1}.{2}.0", sv.Major, sv.Minor, sv.Patch);
36+
case AssemblyVersioningScheme.MajorMinorPatchMetadata:
37+
return string.Format("{0}.{1}.{2}.{3}", sv.Major, sv.Minor, sv.Patch, sv.BuildMetaData.CommitsSinceTag ?? 0);
38+
default:
39+
throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme");
40+
}
41+
42+
}
43+
44+
}
45+
}

GitVersionCore/GitVersionCore.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
</ItemGroup>
6060
<ItemGroup>
6161
<Compile Include="AssemblyVersioningScheme.cs" />
62+
<Compile Include="AssemblyVersionsGenerator.cs" />
6263
<Compile Include="Authentication.cs" />
6364
<Compile Include="BuildServers\AppVeyor.cs" />
6465
<Compile Include="BuildServers\BuildServerBase.cs" />

GitVersionCore/OutputFormatters/BuildOutputFormatter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
namespace GitVersion
22
{
33
using System.Collections.Generic;
4+
using GitVersion.Configuration;
45

56
public static class BuildOutputFormatter
67
{
78
public static IEnumerable<string> GenerateBuildLogOutput(SemanticVersion semanticVersion, IBuildServer buildServer)
89
{
910
var output = new List<string>();
1011

11-
foreach (var variable in VariableProvider.GetVariablesFor(semanticVersion))
12+
foreach (var variable in VariableProvider.GetVariablesFor(semanticVersion, new Config()))
1213
{
1314
output.AddRange(buildServer.GenerateSetParameterMessage(variable.Key, variable.Value));
1415
}

GitVersionCore/OutputVariables/VariableProvider.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
using System;
44
using System.Collections.Generic;
5+
using GitVersion.Configuration;
56

67
public static class VariableProvider
78
{
@@ -18,6 +19,7 @@ public static class VariableProvider
1819
public const string LegacySemVerPadded = "LegacySemVerPadded";
1920
public const string FullSemVer = "FullSemVer";
2021
public const string AssemblySemVer = "AssemblySemVer";
22+
public const string AssemblyFileSemVer = "AssemblyFileSemVer";
2123
public const string ClassicVersion = "ClassicVersion";
2224
public const string ClassicVersionWithTag = "ClassicVersionWithTag";
2325
public const string PreReleaseTag = "PreReleaseTag";
@@ -30,8 +32,7 @@ public static class VariableProvider
3032
public const string NuGetVersionV3 = "NuGetVersionV3";
3133
public const string NuGetVersion = "NuGetVersion";
3234

33-
public static Dictionary<string, string> GetVariablesFor(
34-
SemanticVersion semanticVersion)
35+
public static Dictionary<string, string> GetVariablesFor(SemanticVersion semanticVersion, Config configuration)
3536
{
3637
var bmd = semanticVersion.BuildMetaData;
3738
var formatter = bmd.Branch == "develop" ? new CiFeedFormatter() : null;
@@ -49,7 +50,8 @@ public static Dictionary<string, string> GetVariablesFor(
4950
{SemVer, semanticVersion.ToString(null, formatter)},
5051
{LegacySemVer, semanticVersion.ToString("l", formatter)},
5152
{LegacySemVerPadded, semanticVersion.ToString("lp", formatter)},
52-
{AssemblySemVer, semanticVersion.ToString("j") + ".0"},
53+
{AssemblySemVer, semanticVersion.GetAssemblyVersion(configuration.AssemblyVersioningScheme)},
54+
{AssemblyFileSemVer, semanticVersion.GetAssemblyFileVersion(configuration.AssemblyVersioningScheme)},
5355
{FullSemVer, semanticVersion.ToString("f", formatter)},
5456
{InformationalVersion, semanticVersion.ToString("i", formatter)},
5557
{ClassicVersion, string.Format("{0}.{1}", semanticVersion.ToString("j"), (bmd.CommitsSinceTag ?? 0))},

GitVersionExe/AssemblyInfoFileUpdate.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, Dictionar
3333

3434
var assemblyVersion = string.Format("{0}.{1}.0.0", variables[VariableProvider.Major], variables[VariableProvider.Minor]);
3535
var assemblyInfoVersion = variables[VariableProvider.InformationalVersion];
36-
var assemblyFileVersion = variables[VariableProvider.MajorMinorPatch];
36+
var assemblyFileVersion = variables[VariableProvider.AssemblySemVer];
3737
var fileContents = File.ReadAllText(assemblyInfoFile)
3838
.RegexReplace(@"AssemblyVersion\(""\d+.\d+.\d+(.\d+|\*)?""\)", string.Format("AssemblyVersion(\"{0}\")", assemblyVersion))
3939
.RegexReplace(@"AssemblyInformationalVersion\(""\d+.\d+.\d+(.\d+|\*)?""\)", string.Format("AssemblyInformationalVersion(\"{0}\")", assemblyInfoVersion))

GitVersionExe/Program.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,10 @@ static int Run()
8080
}
8181
SemanticVersion semanticVersion;
8282
var versionFinder = new GitVersionFinder();
83+
var configuration = ConfigurationProvider.Provide(gitDirectory);
8384
using (var repo = RepositoryLoader.GetRepo(gitDirectory))
8485
{
85-
var gitVersionContext = new GitVersionContext(repo, ConfigurationProvider.Provide(gitDirectory));
86+
var gitVersionContext = new GitVersionContext(repo, configuration);
8687
semanticVersion = versionFinder.FindVersion(gitVersionContext);
8788
}
8889

@@ -94,7 +95,7 @@ static int Run()
9495
}
9596
}
9697

97-
var variables = VariableProvider.GetVariablesFor(semanticVersion);
98+
var variables = VariableProvider.GetVariablesFor(semanticVersion, configuration);
9899
if (arguments.Output == OutputType.Json)
99100
{
100101
switch (arguments.VersionPart)

0 commit comments

Comments
 (0)