Skip to content

Commit e1b4534

Browse files
committed
fix version and help, register in DI GitVersionContext Lazy
1 parent 12278d0 commit e1b4534

15 files changed

+37
-39
lines changed

src/GitVersionCore.Tests/Extensions/GitToolsTestingExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static VersionVariables GetVersion(this RepositoryFixtureBase fixture, Co
4242

4343
var variableProvider = sp.GetService<IVariableProvider>();
4444
var nextVersionCalculator = sp.GetService<INextVersionCalculator>();
45-
var contextOptions = sp.GetService<IOptions<GitVersionContext>>();
45+
var contextOptions = sp.GetService<Lazy<GitVersionContext>>();
4646

4747
var context = contextOptions.Value;
4848

src/GitVersionCore.Tests/Model/GitVersionContextTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using GitTools.Testing;
34
using GitVersion;
@@ -8,7 +9,6 @@
89
using GitVersionCore.Tests.Mocks;
910
using LibGit2Sharp;
1011
using Microsoft.Extensions.DependencyInjection;
11-
using Microsoft.Extensions.Options;
1212
using NUnit.Framework;
1313
using Shouldly;
1414

@@ -175,7 +175,7 @@ public void CanFindParentBranchForInheritingIncrementStrategy()
175175
private static GitVersionContext GetGitVersionContext(IRepository repository, string branch, Config config = null)
176176
{
177177
var sp = BuildServiceProvider(repository, branch, config);
178-
return sp.GetService<IOptions<GitVersionContext>>().Value;
178+
return sp.GetService<Lazy<GitVersionContext>>().Value;
179179
}
180180
}
181181
}

src/GitVersionCore/Core/GitRepository.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ private static IRepository InitRepository(IOptions<Arguments> options, IGitPrepa
2323

2424
public void Dispose()
2525
{
26-
repositoryInstance.Dispose();
26+
if (repositoryLazy.IsValueCreated)
27+
{
28+
repositoryInstance.Dispose();
29+
}
2730
}
2831

2932
public void Checkout(Tree tree, IEnumerable<string> paths, CheckoutOptions opts)

src/GitVersionCore/Core/GitVersionTool.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,15 @@ public class GitVersionTool : IGitVersionTool
2525
private readonly IAssemblyInfoFileUpdater assemblyInfoFileUpdater;
2626

2727
private readonly IOptions<Arguments> options;
28-
private readonly GitVersionContext context;
28+
private readonly Lazy<GitVersionContext> versionContext;
29+
private GitVersionContext context => versionContext.Value;
2930

3031
private readonly IBuildServer buildServer;
3132

3233
public GitVersionTool(ILog log, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider, IConsole console,
3334
IGitVersionCache gitVersionCache, IGitVersionCacheKeyFactory cacheKeyFactory, IBuildServerResolver buildServerResolver,
3435
IWixVersionFileUpdater wixVersionFileUpdater, IGitVersionInformationGenerator gitVersionInformationGenerator, IAssemblyInfoFileUpdater assemblyInfoFileUpdater,
35-
IOptions<Arguments> options, IOptions<GitVersionContext> versionContext)
36+
IOptions<Arguments> options, Lazy<GitVersionContext> versionContext)
3637
{
3738
this.log = log ?? throw new ArgumentNullException(nameof(log));
3839
this.console = console ?? throw new ArgumentNullException(nameof(console));
@@ -48,8 +49,8 @@ public GitVersionTool(ILog log, INextVersionCalculator nextVersionCalculator, IV
4849
this.assemblyInfoFileUpdater = assemblyInfoFileUpdater ?? throw new ArgumentNullException(nameof(gitVersionInformationGenerator));
4950

5051
this.options = options ?? throw new ArgumentNullException(nameof(options));
52+
this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
5153

52-
context = versionContext.Value;
5354
buildServer = buildServerResolver.Resolve();
5455
}
5556

src/GitVersionCore/GitVersionCoreModule.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using GitVersion.BuildServers;
23
using GitVersion.Common;
34
using GitVersion.Configuration;
@@ -53,7 +54,7 @@ public void RegisterTypes(IServiceCollection services)
5354
{
5455
var options = sp.GetService<IOptions<Arguments>>();
5556
var contextFactory = sp.GetService<IGitVersionContextFactory>();
56-
return Options.Create(contextFactory.Create(options.Value));
57+
return new Lazy<GitVersionContext>(() => contextFactory.Create(options.Value));
5758
});
5859

5960
services.AddModule(new BuildServerModule());

src/GitVersionCore/VersionCalculation/BaseVersionCalculator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44
using GitVersion.Common;
55
using GitVersion.Configuration;
66
using GitVersion.Logging;
7-
using Microsoft.Extensions.Options;
87

98
namespace GitVersion.VersionCalculation
109
{
1110
public class BaseVersionCalculator : IBaseVersionCalculator
1211
{
1312
private readonly ILog log;
1413
private readonly IRepositoryMetadataProvider repositoryMetadataProvider;
15-
private readonly GitVersionContext context;
1614
private readonly IVersionStrategy[] strategies;
15+
private readonly Lazy<GitVersionContext> versionContext;
16+
private GitVersionContext context => versionContext.Value;
1717

18-
public BaseVersionCalculator(ILog log, IRepositoryMetadataProvider repository, IOptions<GitVersionContext> versionContext, IEnumerable<IVersionStrategy> strategies)
18+
public BaseVersionCalculator(ILog log, IRepositoryMetadataProvider repository, Lazy<GitVersionContext> versionContext, IEnumerable<IVersionStrategy> strategies)
1919
{
2020
this.log = log ?? throw new ArgumentNullException(nameof(log));
2121
this.repositoryMetadataProvider = repository ?? throw new ArgumentNullException(nameof(repository));
2222
this.strategies = strategies?.ToArray() ?? Array.Empty<IVersionStrategy>();
23-
context = versionContext.Value;
23+
this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
2424
}
2525

2626
public BaseVersion GetBaseVersion()

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/ConfigNextVersionVersionStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
using System;
12
using System.Collections.Generic;
2-
using Microsoft.Extensions.Options;
33

44
namespace GitVersion.VersionCalculation
55
{
@@ -10,7 +10,7 @@ namespace GitVersion.VersionCalculation
1010
/// </summary>
1111
public class ConfigNextVersionVersionStrategy : VersionStrategyBase
1212
{
13-
public ConfigNextVersionVersionStrategy(IOptions<GitVersionContext> versionContext) : base(versionContext)
13+
public ConfigNextVersionVersionStrategy(Lazy<GitVersionContext> versionContext) : base(versionContext)
1414
{
1515
}
1616

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/FallbackVersionStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
using System;
12
using System.Collections.Generic;
23
using GitVersion.Common;
34
using LibGit2Sharp;
4-
using Microsoft.Extensions.Options;
55

66
namespace GitVersion.VersionCalculation
77
{
@@ -14,7 +14,7 @@ public class FallbackVersionStrategy : VersionStrategyBase
1414
{
1515
private readonly IRepositoryMetadataProvider repositoryMetadataProvider;
1616

17-
public FallbackVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, IOptions<GitVersionContext> versionContext) : base(versionContext)
17+
public FallbackVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, Lazy<GitVersionContext> versionContext) : base(versionContext)
1818
{
1919
this.repositoryMetadataProvider = repositoryMetadataProvider;
2020
}

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageVersionStrategy.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using GitVersion.Extensions;
77
using GitVersion.Logging;
88
using LibGit2Sharp;
9-
using Microsoft.Extensions.Options;
109

1110
namespace GitVersion.VersionCalculation
1211
{
@@ -19,7 +18,7 @@ public class MergeMessageVersionStrategy : VersionStrategyBase
1918
{
2019
private readonly ILog log;
2120

22-
public MergeMessageVersionStrategy(ILog log, IOptions<GitVersionContext> versionContext) : base(versionContext)
21+
public MergeMessageVersionStrategy(ILog log, Lazy<GitVersionContext> versionContext) : base(versionContext)
2322
{
2423
this.log = log ?? throw new ArgumentNullException(nameof(log));
2524
}

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TaggedCommitVersionStrategy.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using GitVersion.Common;
55
using GitVersion.Extensions;
66
using LibGit2Sharp;
7-
using Microsoft.Extensions.Options;
87

98
namespace GitVersion.VersionCalculation
109
{
@@ -17,7 +16,7 @@ public class TaggedCommitVersionStrategy : VersionStrategyBase
1716
{
1817
private readonly IRepositoryMetadataProvider repositoryMetadataProvider;
1918

20-
public TaggedCommitVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, IOptions<GitVersionContext> versionContext) : base(versionContext)
19+
public TaggedCommitVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, Lazy<GitVersionContext> versionContext) : base(versionContext)
2120
{
2221
this.repositoryMetadataProvider = repositoryMetadataProvider ?? throw new ArgumentNullException(nameof(repositoryMetadataProvider));
2322
}

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/TrackReleaseBranchesVersionStrategy.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using GitVersion.Common;
55
using GitVersion.Configuration;
66
using LibGit2Sharp;
7-
using Microsoft.Extensions.Options;
87

98
namespace GitVersion.VersionCalculation
109
{
@@ -30,7 +29,7 @@ public class TrackReleaseBranchesVersionStrategy : VersionStrategyBase
3029
private readonly VersionInBranchNameVersionStrategy releaseVersionStrategy;
3130
private readonly TaggedCommitVersionStrategy taggedCommitVersionStrategy;
3231

33-
public TrackReleaseBranchesVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, IOptions<GitVersionContext> versionContext)
32+
public TrackReleaseBranchesVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, Lazy<GitVersionContext> versionContext)
3433
: base(versionContext)
3534
{
3635
this.repositoryMetadataProvider = repositoryMetadataProvider ?? throw new ArgumentNullException(nameof(repositoryMetadataProvider));

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/VersionInBranchNameVersionStrategy.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using GitVersion.Configuration;
55
using GitVersion.Extensions;
66
using LibGit2Sharp;
7-
using Microsoft.Extensions.Options;
87

98
namespace GitVersion.VersionCalculation
109
{
@@ -17,7 +16,7 @@ public class VersionInBranchNameVersionStrategy : VersionStrategyBase
1716
{
1817
private IRepositoryMetadataProvider repositoryMetadataProvider;
1918

20-
public VersionInBranchNameVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, IOptions<GitVersionContext> versionContext) : base(versionContext)
19+
public VersionInBranchNameVersionStrategy(IRepositoryMetadataProvider repositoryMetadataProvider, Lazy<GitVersionContext> versionContext) : base(versionContext)
2120
{
2221
this.repositoryMetadataProvider = repositoryMetadataProvider ?? throw new ArgumentNullException(nameof(repositoryMetadataProvider));
2322
}

src/GitVersionCore/VersionCalculation/BaseVersionCalculators/VersionStrategyBase.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
using System;
22
using System.Collections.Generic;
3-
using Microsoft.Extensions.Options;
43

54
namespace GitVersion.VersionCalculation
65
{
76
public class VersionStrategyBase : IVersionStrategy
87
{
9-
protected readonly GitVersionContext Context;
8+
private readonly Lazy<GitVersionContext> versionContext;
9+
protected GitVersionContext Context => versionContext.Value;
1010

11-
protected VersionStrategyBase(IOptions<GitVersionContext> versionContext)
11+
protected VersionStrategyBase(Lazy<GitVersionContext> versionContext)
1212
{
13-
Context = versionContext.Value;
13+
this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
1414
}
1515
public virtual IEnumerable<BaseVersion> GetVersions()
1616
{

src/GitVersionCore/VersionCalculation/MainlineVersionCalculator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@
66
using GitVersion.Extensions;
77
using GitVersion.Logging;
88
using LibGit2Sharp;
9-
using Microsoft.Extensions.Options;
109

1110
namespace GitVersion.VersionCalculation
1211
{
1312
internal class MainlineVersionCalculator : IMainlineVersionCalculator
1413
{
1514
private readonly ILog log;
1615
private readonly IRepositoryMetadataProvider repositoryMetadataProvider;
17-
private readonly GitVersionContext context;
16+
private readonly Lazy<GitVersionContext> versionContext;
17+
private GitVersionContext context => versionContext.Value;
1818

19-
public MainlineVersionCalculator(ILog log, IRepositoryMetadataProvider repositoryMetadataProvider, IOptions<GitVersionContext> versionContext)
19+
public MainlineVersionCalculator(ILog log, IRepositoryMetadataProvider repositoryMetadataProvider, Lazy<GitVersionContext> versionContext)
2020
{
2121
this.log = log ?? throw new ArgumentNullException(nameof(log));
2222
this.repositoryMetadataProvider = repositoryMetadataProvider ?? throw new ArgumentNullException(nameof(repositoryMetadataProvider));
23-
context = versionContext.Value;
23+
this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
2424
}
2525

2626
public SemanticVersion FindMainlineModeVersion(BaseVersion baseVersion)

src/GitVersionCore/VersionCalculation/NextVersionCalculator.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using GitVersion.Configuration;
55
using GitVersion.Extensions;
66
using GitVersion.Logging;
7-
using Microsoft.Extensions.Options;
87

98
namespace GitVersion.VersionCalculation
109
{
@@ -14,18 +13,18 @@ public class NextVersionCalculator : INextVersionCalculator
1413
private readonly IBaseVersionCalculator baseVersionCalculator;
1514
private readonly IMainlineVersionCalculator mainlineVersionCalculator;
1615
private readonly IRepositoryMetadataProvider repositoryMetadataProvider;
17-
private readonly GitVersionContext context;
16+
private readonly Lazy<GitVersionContext> versionContext;
17+
private GitVersionContext context => versionContext.Value;
1818

1919
public NextVersionCalculator(ILog log, IBaseVersionCalculator baseVersionCalculator,
2020
IMainlineVersionCalculator mainlineVersionCalculator, IRepositoryMetadataProvider repositoryMetadataProvider,
21-
IOptions<GitVersionContext> versionContext)
21+
Lazy<GitVersionContext> versionContext)
2222
{
2323
this.log = log ?? throw new ArgumentNullException(nameof(log));
2424
this.baseVersionCalculator = baseVersionCalculator ?? throw new ArgumentNullException(nameof(baseVersionCalculator));
2525
this.mainlineVersionCalculator = mainlineVersionCalculator ?? throw new ArgumentNullException(nameof(mainlineVersionCalculator));
2626
this.repositoryMetadataProvider = repositoryMetadataProvider ?? throw new ArgumentNullException(nameof(repositoryMetadataProvider));
27-
28-
context = versionContext.Value;
27+
this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
2928
}
3029

3130
public SemanticVersion FindVersion()
@@ -102,8 +101,6 @@ private SemanticVersion PerformIncrement(BaseVersion baseVersion)
102101
return semver;
103102
}
104103

105-
106-
107104
private void UpdatePreReleaseTag(SemanticVersion semanticVersion, string branchNameOverride)
108105
{
109106
var tagToUse = context.Configuration.GetBranchSpecificTag(log, context.CurrentBranch.FriendlyName, branchNameOverride);

0 commit comments

Comments
 (0)