Skip to content

Commit ff3cbea

Browse files
committed
Merge remote-tracking branch 'upstream/master' into BranchSpecificConfiguration
2 parents 5da70ee + 308aca8 commit ff3cbea

File tree

8 files changed

+279
-42
lines changed

8 files changed

+279
-42
lines changed

GitVersion.sln.DotSettings

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,167 @@
141141
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_OBJECT_AND_COLLECTION_INITIALIZER_STYLE/@EntryValue">CHOP_ALWAYS</s:String>
142142
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/JavaScriptCodeFormatting/ALIGN_MULTIPLE_DECLARATION/@EntryValue">True</s:Boolean>
143143
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/JavaScriptCodeFormatting/JavaScriptFormatOther/ALIGN_MULTIPLE_DECLARATION/@EntryValue">True</s:Boolean>
144+
<s:String x:Key="/Default/CodeStyle/CSharpFileLayoutPatterns/Pattern/@EntryValue">&lt;Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"&gt;&#xD;
145+
&lt;TypePattern DisplayName="COM interfaces or structs"&gt;&#xD;
146+
&lt;TypePattern.Match&gt;&#xD;
147+
&lt;Or&gt;&#xD;
148+
&lt;And&gt;&#xD;
149+
&lt;Kind Is="Interface" /&gt;&#xD;
150+
&lt;Or&gt;&#xD;
151+
&lt;HasAttribute Name="System.Runtime.InteropServices.InterfaceTypeAttribute" /&gt;&#xD;
152+
&lt;HasAttribute Name="System.Runtime.InteropServices.ComImport" /&gt;&#xD;
153+
&lt;/Or&gt;&#xD;
154+
&lt;/And&gt;&#xD;
155+
&lt;HasAttribute Name="System.Runtime.InteropServices.StructLayoutAttribute" /&gt;&#xD;
156+
&lt;/Or&gt;&#xD;
157+
&lt;/TypePattern.Match&gt;&#xD;
158+
&lt;/TypePattern&gt;&#xD;
159+
&#xD;
160+
&lt;TypePattern DisplayName="NUnit Test Fixtures" RemoveRegions="All"&gt;&#xD;
161+
&lt;TypePattern.Match&gt;&#xD;
162+
&lt;And&gt;&#xD;
163+
&lt;Kind Is="Class" /&gt;&#xD;
164+
&lt;HasAttribute Name="NUnit.Framework.TestFixtureAttribute" Inherited="true" /&gt;&#xD;
165+
&lt;HasAttribute Name="NUnit.Framework.TestCaseFixtureAttribute" Inherited="true" /&gt;&#xD;
166+
&lt;/And&gt;&#xD;
167+
&lt;/TypePattern.Match&gt;&#xD;
168+
&#xD;
169+
&lt;Entry DisplayName="Setup/Teardown Methods"&gt;&#xD;
170+
&lt;Entry.Match&gt;&#xD;
171+
&lt;And&gt;&#xD;
172+
&lt;Kind Is="Method" /&gt;&#xD;
173+
&lt;Or&gt;&#xD;
174+
&lt;HasAttribute Name="NUnit.Framework.SetUpAttribute" Inherited="true" /&gt;&#xD;
175+
&lt;HasAttribute Name="NUnit.Framework.TearDownAttribute" Inherited="true" /&gt;&#xD;
176+
&lt;HasAttribute Name="NUnit.Framework.FixtureSetUpAttribute" Inherited="true" /&gt;&#xD;
177+
&lt;HasAttribute Name="NUnit.Framework.FixtureTearDownAttribute" Inherited="true" /&gt;&#xD;
178+
&lt;/Or&gt;&#xD;
179+
&lt;/And&gt;&#xD;
180+
&lt;/Entry.Match&gt;&#xD;
181+
&lt;/Entry&gt;&#xD;
182+
&#xD;
183+
&lt;Entry DisplayName="All other members" /&gt;&#xD;
184+
&#xD;
185+
&lt;Entry DisplayName="Test Methods" Priority="100"&gt;&#xD;
186+
&lt;Entry.Match&gt;&#xD;
187+
&lt;And&gt;&#xD;
188+
&lt;Kind Is="Method" /&gt;&#xD;
189+
&lt;HasAttribute Name="NUnit.Framework.TestAttribute" Inherited="false" /&gt;&#xD;
190+
&lt;/And&gt;&#xD;
191+
&lt;/Entry.Match&gt;&#xD;
192+
&#xD;
193+
&lt;Entry.SortBy&gt;&#xD;
194+
&lt;Name /&gt;&#xD;
195+
&lt;/Entry.SortBy&gt;&#xD;
196+
&lt;/Entry&gt;&#xD;
197+
&lt;/TypePattern&gt;&#xD;
198+
&#xD;
199+
&lt;TypePattern DisplayName="Default Pattern"&gt;&#xD;
200+
&lt;Entry DisplayName="Public Delegates" Priority="100"&gt;&#xD;
201+
&lt;Entry.Match&gt;&#xD;
202+
&lt;And&gt;&#xD;
203+
&lt;Access Is="Public" /&gt;&#xD;
204+
&lt;Kind Is="Delegate" /&gt;&#xD;
205+
&lt;/And&gt;&#xD;
206+
&lt;/Entry.Match&gt;&#xD;
207+
&#xD;
208+
&lt;Entry.SortBy&gt;&#xD;
209+
&lt;Name /&gt;&#xD;
210+
&lt;/Entry.SortBy&gt;&#xD;
211+
&lt;/Entry&gt;&#xD;
212+
&#xD;
213+
&lt;Entry DisplayName="Public Enums" Priority="100"&gt;&#xD;
214+
&lt;Entry.Match&gt;&#xD;
215+
&lt;And&gt;&#xD;
216+
&lt;Access Is="Public" /&gt;&#xD;
217+
&lt;Kind Is="Enum" /&gt;&#xD;
218+
&lt;/And&gt;&#xD;
219+
&lt;/Entry.Match&gt;&#xD;
220+
&#xD;
221+
&lt;Entry.SortBy&gt;&#xD;
222+
&lt;Name /&gt;&#xD;
223+
&lt;/Entry.SortBy&gt;&#xD;
224+
&lt;/Entry&gt;&#xD;
225+
&#xD;
226+
&lt;Entry DisplayName="Static Fields and Constants"&gt;&#xD;
227+
&lt;Entry.Match&gt;&#xD;
228+
&lt;Or&gt;&#xD;
229+
&lt;Kind Is="Constant" /&gt;&#xD;
230+
&lt;And&gt;&#xD;
231+
&lt;Kind Is="Field" /&gt;&#xD;
232+
&lt;Static /&gt;&#xD;
233+
&lt;/And&gt;&#xD;
234+
&lt;/Or&gt;&#xD;
235+
&lt;/Entry.Match&gt;&#xD;
236+
&#xD;
237+
&lt;Entry.SortBy&gt;&#xD;
238+
&lt;Kind&gt;&#xD;
239+
&lt;Kind.Order&gt;&#xD;
240+
&lt;DeclarationKind&gt;Constant&lt;/DeclarationKind&gt;&#xD;
241+
&lt;DeclarationKind&gt;Field&lt;/DeclarationKind&gt;&#xD;
242+
&lt;/Kind.Order&gt;&#xD;
243+
&lt;/Kind&gt;&#xD;
244+
&lt;/Entry.SortBy&gt;&#xD;
245+
&lt;/Entry&gt;&#xD;
246+
&#xD;
247+
&lt;Entry DisplayName="Fields"&gt;&#xD;
248+
&lt;Entry.Match&gt;&#xD;
249+
&lt;And&gt;&#xD;
250+
&lt;Kind Is="Field" /&gt;&#xD;
251+
&lt;Not&gt;&#xD;
252+
&lt;Static /&gt;&#xD;
253+
&lt;/Not&gt;&#xD;
254+
&lt;/And&gt;&#xD;
255+
&lt;/Entry.Match&gt;&#xD;
256+
&#xD;
257+
&lt;Entry.SortBy&gt;&#xD;
258+
&lt;Readonly /&gt;&#xD;
259+
&lt;Name /&gt;&#xD;
260+
&lt;/Entry.SortBy&gt;&#xD;
261+
&lt;/Entry&gt;&#xD;
262+
&#xD;
263+
&lt;Entry DisplayName="Constructors"&gt;&#xD;
264+
&lt;Entry.Match&gt;&#xD;
265+
&lt;Kind Is="Constructor" /&gt;&#xD;
266+
&lt;/Entry.Match&gt;&#xD;
267+
&#xD;
268+
&lt;Entry.SortBy&gt;&#xD;
269+
&lt;Static/&gt;&#xD;
270+
&lt;/Entry.SortBy&gt;&#xD;
271+
&lt;/Entry&gt;&#xD;
272+
&#xD;
273+
&lt;Entry DisplayName="Properties, Indexers"&gt;&#xD;
274+
&lt;Entry.Match&gt;&#xD;
275+
&lt;Or&gt;&#xD;
276+
&lt;Kind Is="Property" /&gt;&#xD;
277+
&lt;Kind Is="Indexer" /&gt;&#xD;
278+
&lt;/Or&gt;&#xD;
279+
&lt;/Entry.Match&gt;&#xD;
280+
&lt;/Entry&gt;&#xD;
281+
&#xD;
282+
&lt;Entry DisplayName="Interface Implementations" Priority="100"&gt;&#xD;
283+
&lt;Entry.Match&gt;&#xD;
284+
&lt;And&gt;&#xD;
285+
&lt;Kind Is="Member" /&gt;&#xD;
286+
&lt;ImplementsInterface /&gt;&#xD;
287+
&lt;/And&gt;&#xD;
288+
&lt;/Entry.Match&gt;&#xD;
289+
&#xD;
290+
&lt;Entry.SortBy&gt;&#xD;
291+
&lt;ImplementsInterface Immediate="true" /&gt;&#xD;
292+
&lt;/Entry.SortBy&gt;&#xD;
293+
&lt;/Entry&gt;&#xD;
294+
&#xD;
295+
&lt;Entry DisplayName="All other members" /&gt;&#xD;
296+
&#xD;
297+
&lt;Entry DisplayName="Nested Types"&gt;&#xD;
298+
&lt;Entry.Match&gt;&#xD;
299+
&lt;Kind Is="Type" /&gt;&#xD;
300+
&lt;/Entry.Match&gt;&#xD;
301+
&lt;/Entry&gt;&#xD;
302+
&lt;/TypePattern&gt;&#xD;
303+
&lt;/Patterns&gt;&#xD;
304+
</s:String>
144305
<s:String x:Key="/Default/CodeStyle/CSharpMemberOrderPattern/CustomPattern/@EntryValue">&lt;?xml version="1.0" encoding="utf-8" ?&gt;&#xD;
145306
&#xD;
146307
&lt;!--&#xD;
@@ -405,7 +566,9 @@ II.2.12 &lt;HandlesEvent /&gt;&#xD;
405566
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/PredefinedNamingRules/=StaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
406567
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/PredefinedNamingRules/=TypeParameters/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="T" Suffix="" Style="AaBb" /&gt;</s:String>
407568
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/PredefinedNamingRules/=TypesAndNamespaces/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
569+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpFileLayoutPatternsUpgrade/@EntryIndexedValue">True</s:Boolean>
408570
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
571+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
409572
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EJavaScript_002ECodeStyle_002ESettingsUpgrade_002EJsCodeFormatterSettingsUpgrader/@EntryIndexedValue">True</s:Boolean>
410573
<s:Boolean x:Key="/Default/Environment/UnitTesting/SeparateAppDomainPerAssembly/@EntryValue">True</s:Boolean>
411574
<s:Boolean x:Key="/Default/Environment/UnitTesting/ShadowCopy/@EntryValue">False</s:Boolean>

GitVersionCore.Tests/GitVersionCore.Tests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,14 @@
7676
<Compile Include="Fixtures\BaseGitFlowRepositoryFixture.cs" />
7777
<Compile Include="IntegrationTests\RemoteRepositoryTests.cs" />
7878
<Compile Include="IntegrationTests\GitFlow\DevelopScenarios.cs" />
79+
<Compile Include="IntegrationTests\GitFlow\FeatureBranchTests.cs" />
7980
<Compile Include="IntegrationTests\GitFlow\SupportBranchScenarios.cs" />
8081
<Compile Include="IntegrationTests\GitFlow\MetaDataByCommitScenarios.cs" />
8182
<Compile Include="IntegrationTests\GitFlow\PatchScenarios.cs" />
8283
<Compile Include="IntegrationTests\GitFlow\ReleaseBranchTests.cs" />
8384
<Compile Include="IntegrationTests\GitFlow\SwitchingToGitFlowScenarios.cs" />
8485
<Compile Include="IntegrationTests\GitFlow\UncycloScenarios.cs" />
86+
<Compile Include="IntegrationTests\GitHubFlow\FeatureBranchTests.cs" />
8587
<Compile Include="IntegrationTests\GitHubFlow\OtherBranchTests.cs" />
8688
<Compile Include="IntegrationTests\GitHubFlow\ReleaseBranchTests.cs" />
8789
<Compile Include="Helpers\Constants.cs" />
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using GitVersion;
2+
using LibGit2Sharp;
3+
using NUnit.Framework;
4+
5+
[TestFixture]
6+
public class FeatureBranchTests
7+
{
8+
[Test]
9+
public void ShouldNotUseNumberInFeatureBranchAsPreReleaseNumber()
10+
{
11+
using (var fixture = new EmptyRepositoryFixture(new Config()))
12+
{
13+
fixture.Repository.MakeATaggedCommit("1.0.0");
14+
fixture.Repository.CreateBranch("develop");
15+
fixture.Repository.Checkout("develop");
16+
fixture.Repository.CreateBranch("feature/JIRA-123");
17+
fixture.Repository.Checkout("feature/JIRA-123");
18+
fixture.Repository.MakeCommits(5);
19+
20+
fixture.AssertFullSemver("1.1.0-JIRA-123+5");
21+
}
22+
}
23+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using GitVersion;
2+
using LibGit2Sharp;
3+
using NUnit.Framework;
4+
5+
namespace GitVersionCore.Tests.IntegrationTests.GitHubFlow
6+
{
7+
[TestFixture]
8+
public class FeatureBranchTests
9+
{
10+
[Test]
11+
public void ShouldNotUseNumberInFeatureBranchAsPreReleaseNumber()
12+
{
13+
using (var fixture = new EmptyRepositoryFixture(new Config()))
14+
{
15+
fixture.Repository.MakeATaggedCommit("1.0.0");
16+
fixture.Repository.CreateBranch("feature/JIRA-123");
17+
fixture.Repository.Checkout("feature/JIRA-123");
18+
fixture.Repository.MakeCommits(5);
19+
20+
fixture.AssertFullSemver("1.0.1-JIRA-123+5");
21+
}
22+
}
23+
24+
[Test]
25+
public void TestFeatureBranch()
26+
{
27+
using (var fixture = new EmptyRepositoryFixture(new Config()))
28+
{
29+
fixture.Repository.MakeATaggedCommit("1.0.0");
30+
fixture.Repository.CreateBranch("feature-test");
31+
fixture.Repository.Checkout("feature-test");
32+
fixture.Repository.MakeCommits(5);
33+
34+
fixture.AssertFullSemver("1.0.1-feature-test+5");
35+
}
36+
}
37+
}
38+
}

GitVersionCore.Tests/SemanticVersionTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public class SemanticVersionTests
1010
[TestCase("1.2", 1, 2, 0, null, null, null, null, null, null, "1.2.0")]
1111
[TestCase("1.2.3-beta", 1, 2, 3, "beta", null, null, null, null, null, null)]
1212
[TestCase("1.2.3-beta3", 1, 2, 3, "beta", 3, null, null, null, null, "1.2.3-beta.3")]
13+
[TestCase("1.2.3-beta.3", 1, 2, 3, "beta", 3, null, null, null, null, "1.2.3-beta.3")]
14+
[TestCase("1.2.3-beta-3", 1, 2, 3, "beta-3", null, null, null, null, null, "1.2.3-beta-3")]
1315
[TestCase("1.2.3-alpha", 1, 2, 3, "alpha", null, null, null, null, null, null)]
1416
[TestCase("1.2-alpha4", 1, 2, 0, "alpha", 4, null, null, null, null, "1.2.0-alpha.4")]
1517
[TestCase("1.2.3-rc", 1, 2, 3, "rc", null, null, null, null, null, null)]

GitVersionCore/GitHubFlow/NextSemverCalculator.cs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,17 @@ public NextSemverCalculator(
2626

2727
public SemanticVersion NextVersion()
2828
{
29-
var versions = GetPossibleVersions().ToList();
30-
31-
if (versions.Any())
32-
{
33-
return versions.Max();
34-
}
35-
return new SemanticVersion
36-
{
37-
Minor = 1
38-
};
29+
return GetPossibleVersions().Max();
3930
}
4031

4132
public IEnumerable<SemanticVersion> GetPossibleVersions()
4233
{
34+
// always provide a minimum fallback version for other strategies
35+
var defaultNextVersion = new SemanticVersion
36+
{
37+
Minor = 1
38+
};
39+
yield return defaultNextVersion;
4340

4441
VersionTaggedCommit lastTaggedRelease;
4542
if (lastTaggedReleaseFinder.GetVersion(out lastTaggedRelease))
@@ -50,12 +47,13 @@ public IEnumerable<SemanticVersion> GetPossibleVersions()
5047
yield return lastTaggedRelease.SemVer;
5148
yield break;
5249
}
53-
yield return new SemanticVersion
54-
{
55-
Major = lastTaggedRelease.SemVer.Major,
56-
Minor = lastTaggedRelease.SemVer.Minor,
57-
Patch = lastTaggedRelease.SemVer.Patch + 1
58-
};
50+
defaultNextVersion = new SemanticVersion
51+
{
52+
Major = lastTaggedRelease.SemVer.Major,
53+
Minor = lastTaggedRelease.SemVer.Minor,
54+
Patch = lastTaggedRelease.SemVer.Patch + 1
55+
};
56+
yield return defaultNextVersion;
5957
}
6058

6159
SemanticVersion fileVersion;
@@ -82,7 +80,7 @@ public IEnumerable<SemanticVersion> GetPossibleVersions()
8280
}
8381

8482
SemanticVersion otherBranchVersion;
85-
if (unknownBranchFinder.FindVersion(context, out otherBranchVersion))
83+
if (unknownBranchFinder.FindVersion(context, defaultNextVersion, out otherBranchVersion))
8684
{
8785
yield return otherBranchVersion;
8886
}

0 commit comments

Comments
 (0)