Skip to content

Commit 62c532d

Browse files
author
Yannis Guedel
committed
Added support for branch specific config
1 parent 50d6f03 commit 62c532d

File tree

8 files changed

+97
-0
lines changed

8 files changed

+97
-0
lines changed

GitVersionCore.Tests/ConfigProviderTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ public void CanReadDocument()
3030
release-branch-tag: rc
3131
next-version: 2.0.0
3232
tag-prefix: '[vV|version-]'
33+
mode: ContinuousDelivery
34+
develop:
35+
mode: ContinuousDeployment
36+
tag: dev
37+
release*:
38+
mode: ContinuousDeployment
39+
tag: rc
3340
";
3441
SetupConfigFileContent(text);
3542

@@ -39,6 +46,25 @@ public void CanReadDocument()
3946
config.ReleaseBranchTag.ShouldBe("rc");
4047
config.NextVersion.ShouldBe("2.0.0");
4148
config.TagPrefix.ShouldBe("[vV|version-]");
49+
config.Release.VersioningMode.ShouldBe(VersioningMode.ContinuousDeployment);
50+
config.Develop.VersioningMode.ShouldBe(VersioningMode.ContinuousDeployment);
51+
config.VersioningMode.ShouldBe(VersioningMode.ContinuousDelivery);
52+
config.Release.Tag.ShouldBe("rc");
53+
config.Develop.Tag.ShouldBe("dev");
54+
}
55+
56+
[Test]
57+
public void CanInheritVersioningMode()
58+
{
59+
const string text = @"
60+
mode: ContinuousDelivery
61+
develop:
62+
mode: ContinuousDeployment
63+
";
64+
SetupConfigFileContent(text);
65+
var config = ConfigurationProvider.Provide(gitDirectory, fileSystem);
66+
config.Develop.VersioningMode.ShouldBe(VersioningMode.ContinuousDeployment);
67+
config.Release.VersioningMode.ShouldBe(VersioningMode.ContinuousDelivery);
4268
}
4369

4470
[Test]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace GitVersion
2+
{
3+
using YamlDotNet.Serialization;
4+
5+
public class BranchConfig
6+
{
7+
[YamlAlias("mode")]
8+
public VersioningMode VersioningMode { get; set; }
9+
10+
[YamlAlias("tag")]
11+
public string Tag { get; set; }
12+
}
13+
}

GitVersionCore/Configuration/Config.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44

55
public class Config
66
{
7+
VersioningMode versioningMode;
8+
79
public Config()
810
{
911
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch;
1012
DevelopBranchTag = "unstable";
1113
ReleaseBranchTag = "beta";
1214
TagPrefix = "[vV]";
15+
Release = new BranchConfig();
16+
Develop = new BranchConfig();
17+
VersioningMode = VersioningMode.ContinuousDelivery;
1318
}
1419

1520
[YamlAlias("assembly-versioning-scheme")]
@@ -21,6 +26,28 @@ public Config()
2126
[YamlAlias("release-branch-tag")]
2227
public string ReleaseBranchTag { get; set; }
2328

29+
[YamlAlias("mode")]
30+
public VersioningMode VersioningMode
31+
{
32+
get
33+
{
34+
return this.versioningMode;
35+
}
36+
set
37+
{
38+
Develop.VersioningMode = value;
39+
Release.VersioningMode = value;
40+
this.versioningMode = value;
41+
}
42+
}
43+
44+
[YamlAlias("develop")]
45+
public BranchConfig Develop { get; set; }
46+
47+
[YamlAlias("release*")]
48+
public BranchConfig Release { get; set; }
49+
50+
2451
[YamlAlias("tag-prefix")]
2552
public string TagPrefix { get; set; }
2653

GitVersionCore/GitVersionCore.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
<Compile Include="BuildServers\IBuildServer.cs" />
7171
<Compile Include="BuildServers\MyGet.cs" />
7272
<Compile Include="BuildServers\TeamCity.cs" />
73+
<Compile Include="Configuration\BranchConfig.cs" />
7374
<Compile Include="Configuration\Config.cs" />
7475
<Compile Include="Configuration\ConfigReader.cs" />
7576
<Compile Include="Configuration\ConfigurationProvider.cs" />
@@ -79,6 +80,10 @@
7980
<Compile Include="Helpers\IFileSystem.cs" />
8081
<Compile Include="LastMinorVersionFinder.cs" />
8182
<Compile Include="SemanticVersionExtensions.cs" />
83+
<Compile Include="VersioningModes\ContinuousDeliveryMode.cs" />
84+
<Compile Include="VersioningModes\ContinuousDeploymentMode.cs" />
85+
<Compile Include="VersioningModes\VersioningMode.cs" />
86+
<Compile Include="VersioningModes\VersioningModeBase.cs" />
8287
<Compile Include="WarningException.cs" />
8388
<Compile Include="ExtensionMethods.cs" />
8489
<Compile Include="GitDirFinder.cs" />
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace GitVersion.VersioningModes
2+
{
3+
public class ContinuousDeliveryMode : VersioningModeBase
4+
{
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace GitVersion.VersioningModes
2+
{
3+
public class ContinuousDeploymentMode : VersioningModeBase
4+
{
5+
}
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace GitVersion
2+
{
3+
public enum VersioningMode
4+
{
5+
ContinuousDelivery,
6+
ContinuousDeployment
7+
}
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace GitVersion.VersioningModes
2+
{
3+
public abstract class VersioningModeBase
4+
{
5+
}
6+
}

0 commit comments

Comments
 (0)