Skip to content

Commit 4d57b87

Browse files
committed
Fixed #242
1 parent 2a0d2bf commit 4d57b87

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)

GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_Major.approved.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ static class GitVersionInformation
3434
public static string SemVer = "2.3.4";
3535
public static string LegacySemVer = "2.3.4";
3636
public static string LegacySemVerPadded = "2.3.4";
37-
public static string AssemblySemVer = "2.3.4.0";
37+
public static string AssemblySemVer = "2.0.0.0";
38+
public static string AssemblyFileSemVer = "2.3.4.0";
3839
public static string FullSemVer = "2.3.4+5";
3940
public static string InformationalVersion = "2.3.4+5.Branch.master.Sha.commitSha";
4041
public static string ClassicVersion = "2.3.4.5";

GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinor.approved.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ static class GitVersionInformation
3434
public static string SemVer = "2.3.4";
3535
public static string LegacySemVer = "2.3.4";
3636
public static string LegacySemVerPadded = "2.3.4";
37-
public static string AssemblySemVer = "2.3.4.0";
37+
public static string AssemblySemVer = "2.3.0.0";
38+
public static string AssemblyFileSemVer = "2.3.4.0";
3839
public static string FullSemVer = "2.3.4+5";
3940
public static string InformationalVersion = "2.3.4+5.Branch.master.Sha.commitSha";
4041
public static string ClassicVersion = "2.3.4.5";

GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinorPatch.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ static class GitVersionInformation
3535
public static string LegacySemVer = "2.3.4";
3636
public static string LegacySemVerPadded = "2.3.4";
3737
public static string AssemblySemVer = "2.3.4.0";
38+
public static string AssemblyFileSemVer = "2.3.4.0";
3839
public static string FullSemVer = "2.3.4+5";
3940
public static string InformationalVersion = "2.3.4+5.Branch.master.Sha.commitSha";
4041
public static string ClassicVersion = "2.3.4.5";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+

2+
using System;
3+
using System.Reflection;
4+
5+
[assembly: AssemblyVersion("2.3.4.5")]
6+
[assembly: AssemblyFileVersion("2.3.4.5")]
7+
[assembly: AssemblyInformationalVersion("2.3.4+5.Branch.master.Sha.commitSha")]
8+
[assembly: ReleaseDate("2014-03-01", "2014-03-06")]
9+
10+
[System.Runtime.CompilerServices.CompilerGenerated]
11+
sealed class ReleaseDateAttribute : System.Attribute
12+
{
13+
public string OriginalDate { get; private set; }
14+
public string Date { get; private set; }
15+
16+
public ReleaseDateAttribute(string originalDate, string date)
17+
{
18+
OriginalDate = date;
19+
Date = date;
20+
}
21+
}
22+
23+
[System.Runtime.CompilerServices.CompilerGenerated]
24+
static class GitVersionInformation
25+
{
26+
public static string Major = "2";
27+
public static string Minor = "3";
28+
public static string Patch = "4";
29+
public static string PreReleaseTag = "";
30+
public static string PreReleaseTagWithDash = "";
31+
public static string BuildMetaData = "5";
32+
public static string FullBuildMetaData = "5.Branch.master.Sha.commitSha";
33+
public static string MajorMinorPatch = "2.3.4";
34+
public static string SemVer = "2.3.4";
35+
public static string LegacySemVer = "2.3.4";
36+
public static string LegacySemVerPadded = "2.3.4";
37+
public static string AssemblySemVer = "2.3.4.5";
38+
public static string AssemblyFileSemVer = "2.3.4.5";
39+
public static string FullSemVer = "2.3.4+5";
40+
public static string InformationalVersion = "2.3.4+5.Branch.master.Sha.commitSha";
41+
public static string ClassicVersion = "2.3.4.5";
42+
public static string ClassicVersionWithTag = "2.3.4.5";
43+
public static string BranchName = "master";
44+
public static string Sha = "commitSha";
45+
public static string NuGetVersionV2 = "2.3.4";
46+
public static string NuGetVersion = "2.3.4";
47+
48+
}
49+
50+

GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyCreatedCode.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ static class GitVersionInformation
3535
public static string LegacySemVer = "1.2.3-unstable4";
3636
public static string LegacySemVerPadded = "1.2.3-unstable0004";
3737
public static string AssemblySemVer = "1.2.3.0";
38+
public static string AssemblyFileSemVer = "1.2.3.0";
3839
public static string FullSemVer = "1.2.3-unstable.4+5";
3940
public static string InformationalVersion = "1.2.3-unstable.4+5.Branch.feature1.Sha.commitSha";
4041
public static string ClassicVersion = "1.2.3.5";

GitVersionTask.Tests/AssemblyInfoBuilderTests.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Runtime.CompilerServices;
55
using ApprovalTests;
66
using GitVersion;
7+
using GitVersion.Configuration;
78
using NUnit.Framework;
89
using Roslyn.Compilers;
910
using Roslyn.Compilers.CSharp;
@@ -32,7 +33,7 @@ public void VerifyCreatedCode()
3233
MasterReleaseDate = DateTimeOffset.Parse("2014-03-01 00:00:01Z"),
3334
}
3435
};
35-
var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText();
36+
var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText(new Config());
3637
Approvals.Verify(assemblyInfoText);
3738
var syntaxTree = SyntaxTree.ParseText(assemblyInfoText);
3839
var references = new[] {new MetadataFileReference(typeof(object).Assembly.Location)};
@@ -62,6 +63,13 @@ public void VerifyAssemblyVersion_MajorMinorPatch()
6263
VerifyAssemblyVersion(AssemblyVersioningScheme.MajorMinorPatch);
6364
}
6465

66+
[Test]
67+
[MethodImpl(MethodImplOptions.NoInlining)]
68+
public void VerifyAssemblyVersion_MajorMinorPatchMetadata()
69+
{
70+
VerifyAssemblyVersion(AssemblyVersioningScheme.MajorMinorPatchMetadata);
71+
}
72+
6573
static void VerifyAssemblyVersion(AssemblyVersioningScheme avs)
6674
{
6775
var semanticVersion = new SemanticVersion
@@ -79,10 +87,9 @@ static void VerifyAssemblyVersion(AssemblyVersioningScheme avs)
7987
SemanticVersion = semanticVersion,
8088
MasterReleaseDate = DateTimeOffset.Parse("2014-03-01 00:00:01Z")
8189
},
82-
AssemblyVersioningScheme = avs,
8390
};
8491

85-
var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText();
92+
var assemblyInfoText = assemblyInfoBuilder.GetAssemblyInfoText(new Config { AssemblyVersioningScheme = avs });
8693
Approvals.Verify(assemblyInfoText);
8794
var syntaxTree = SyntaxTree.ParseText(assemblyInfoText);
8895
var references = new[] { new MetadataFileReference(typeof(object).Assembly.Location)};

GitVersionTask.Tests/GetVersionTaskTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Linq;
33
using GitVersion;
4+
using GitVersion.Configuration;
45
using GitVersionTask;
56
using Microsoft.Build.Framework;
67
using NUnit.Framework;
@@ -21,7 +22,7 @@ public void OutputsShouldMatchVariableProvider()
2122
Minor = 2,
2223
Patch = 3,
2324
BuildMetaData = new SemanticVersionBuildMetaData(5, "develop", "commitSha",DateTimeOffset.Parse("2014-03-06 23:59:59Z"))
24-
}).Keys;
25+
}, new Config()).Keys;
2526

2627
CollectionAssert.AreEquivalent(properties, variables);
2728
}

GitVersionTask/AssemblyInfoBuilder/AssemblyInfoBuilder.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
using System.Collections.Generic;
22
using System.Text;
33
using GitVersion;
4+
using GitVersion.Configuration;
45

56
public class AssemblyInfoBuilder
67
{
78
public CachedVersion CachedVersion;
8-
public AssemblyVersioningScheme AssemblyVersioningScheme;
99

10-
public string GetAssemblyInfoText()
10+
public string GetAssemblyInfoText(Config configuration)
1111
{
1212
var semanticVersion = CachedVersion.SemanticVersion;
13-
var vars = VariableProvider.GetVariablesFor(semanticVersion);
13+
var vars = VariableProvider.GetVariablesFor(semanticVersion, configuration);
1414
var assemblyInfo = string.Format(@"
1515
using System;
1616
using System.Reflection;
@@ -40,7 +40,9 @@ static class GitVersionInformation
4040
}}
4141
4242
43-
", semanticVersion.GetAssemblyVersion(AssemblyVersioningScheme), string.Format("{0}.{1}.{2}.0", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch), semanticVersion.ToString("i"),
43+
", vars[VariableProvider.AssemblySemVer],
44+
vars[VariableProvider.AssemblyFileSemVer],
45+
semanticVersion.ToString("i"),
4446
CachedVersion.MasterReleaseDate.UtcDateTime.ToString("yyyy-MM-dd"),
4547
semanticVersion.BuildMetaData.CommitDate.UtcDateTime.ToString("yyyy-MM-dd"),
4648
GenerateVariableMembers(vars));

GitVersionTask/AssemblyInfoBuilder/AssemblyVersionsGenerator.cs

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)