forked from GitTools/GitVersion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGitflowScenarios.cs
85 lines (78 loc) · 3.49 KB
/
GitflowScenarios.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using GitTools.Testing;
using GitVersion.Core.Tests.Helpers;
using NUnit.Framework;
namespace GitVersion.Core.Tests.IntegrationTests
{
[TestFixture]
public class GitflowScenarios : TestBase
{
[Test]
public void GitflowComplexExample()
{
const string developBranch = "develop";
const string feature1Branch = "feature/f1";
const string feature2Branch = "feature/f2";
const string release1Branch = "release/1.1.0";
const string release2Branch = "release/1.2.0";
const string hotfixBranch = "hotfix/hf";
using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
fixture.AssertFullSemver("1.1.0-alpha.1");
// Feature 1
fixture.BranchTo(feature1Branch);
fixture.MakeACommit("added feature 1");
fixture.AssertFullSemver("1.1.0-f1.1+2");
fixture.Checkout(developBranch);
fixture.MergeNoFF(feature1Branch);
fixture.Repository.Branches.Remove(fixture.Repository.Branches[feature1Branch]);
fixture.AssertFullSemver("1.1.0-alpha.3");
// Release 1.1.0
fixture.BranchTo(release1Branch);
fixture.MakeACommit("release stabilization");
fixture.AssertFullSemver("1.1.0-beta.1+1");
fixture.Checkout(MainBranch);
fixture.MergeNoFF(release1Branch);
fixture.AssertFullSemver("1.1.0+0");
fixture.ApplyTag("1.1.0");
fixture.AssertFullSemver("1.1.0");
fixture.Checkout(developBranch);
fixture.MergeNoFF(release1Branch);
fixture.Repository.Branches.Remove(fixture.Repository.Branches[release1Branch]);
fixture.AssertFullSemver("1.2.0-alpha.1");
// Feature 2
fixture.BranchTo(feature2Branch);
fixture.MakeACommit("added feature 2");
fixture.AssertFullSemver("1.2.0-f2.1+2");
fixture.Checkout(developBranch);
fixture.MergeNoFF(feature2Branch);
fixture.Repository.Branches.Remove(fixture.Repository.Branches[feature2Branch]);
fixture.AssertFullSemver("1.2.0-alpha.3");
// Release 1.2.0
fixture.BranchTo(release2Branch);
fixture.MakeACommit("release stabilization");
fixture.AssertFullSemver("1.2.0-beta.1+1");
fixture.Checkout(MainBranch);
fixture.MergeNoFF(release2Branch);
fixture.AssertFullSemver("1.2.0+0");
fixture.ApplyTag("1.2.0");
fixture.AssertFullSemver("1.2.0");
fixture.Checkout(developBranch);
fixture.MergeNoFF(release2Branch);
fixture.Repository.Branches.Remove(fixture.Repository.Branches[release2Branch]);
fixture.AssertFullSemver("1.3.0-alpha.1");
// Hotfix
fixture.Checkout(MainBranch);
fixture.BranchTo(hotfixBranch);
fixture.MakeACommit("added hotfix");
fixture.AssertFullSemver("1.2.1-beta.1+1");
fixture.Checkout(MainBranch);
fixture.MergeNoFF(hotfixBranch);
fixture.AssertFullSemver("1.2.1+2");
fixture.ApplyTag("1.2.1");
fixture.AssertFullSemver("1.2.1");
fixture.Checkout(developBranch);
fixture.MergeNoFF(hotfixBranch);
fixture.Repository.Branches.Remove(fixture.Repository.Branches[hotfixBranch]);
fixture.AssertFullSemver("1.3.0-alpha.3");
}
}
}