Skip to content

Commit c3856fb

Browse files
sergiorykovJakeGinnivan
authored andcommitted
select config file from working directory first and only then use project root directory
1 parent 087f938 commit c3856fb

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

src/GitVersionCore/Configuration/ConfigurationProvider.cs

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,19 @@ public class ConfigurationProvider
1212
{
1313
internal const string DefaultTagPrefix = "[vV]";
1414

15+
public static Config Provide(GitPreparer gitPreparer, IFileSystem fileSystem, bool applyDefaults = true, Config overrideConfig = null)
16+
{
17+
var workingDirectory = gitPreparer.WorkingDirectory;
18+
var projectRootDirectory = gitPreparer.GetProjectRootDirectory();
19+
20+
if (HasConfigFileAt(workingDirectory, fileSystem))
21+
{
22+
return Provide(workingDirectory, fileSystem, applyDefaults, overrideConfig);
23+
}
24+
25+
return Provide(projectRootDirectory, fileSystem, applyDefaults, overrideConfig);
26+
}
27+
1528
public static Config Provide(string workingDirectory, IFileSystem fileSystem, bool applyDefaults = true, Config overrideConfig = null)
1629
{
1730
var readConfig = ReadConfig(workingDirectory, fileSystem);
@@ -140,9 +153,9 @@ static Config ReadConfig(string workingDirectory, IFileSystem fileSystem)
140153
return new Config();
141154
}
142155

143-
public static string GetEffectiveConfigAsString(string gitDirectory, IFileSystem fileSystem)
156+
public static string GetEffectiveConfigAsString(string workingDirectory, IFileSystem fileSystem)
144157
{
145-
var config = Provide(gitDirectory, fileSystem);
158+
var config = Provide(workingDirectory, fileSystem);
146159
var stringBuilder = new StringBuilder();
147160
using (var stream = new StringWriter(stringBuilder))
148161
{
@@ -180,7 +193,7 @@ public static void Verify(GitPreparer gitPreparer, IFileSystem fileSystem)
180193
public static readonly string DefaultConfigFileName = "GitVersion.yml";
181194
public static readonly string ObsoleteConfigFileName = "GitVersionConfig.yaml";
182195

183-
static string GetConfigFilePath(string workingDirectory, IFileSystem fileSystem)
196+
public static string GetConfigFilePath(string workingDirectory, IFileSystem fileSystem)
184197
{
185198
var ymlPath = Path.Combine(workingDirectory, DefaultConfigFileName);
186199
if (fileSystem.Exists(ymlPath))
@@ -197,6 +210,23 @@ static string GetConfigFilePath(string workingDirectory, IFileSystem fileSystem)
197210
return ymlPath;
198211
}
199212

213+
public static bool HasConfigFileAt(string workingDirectory, IFileSystem fileSystem)
214+
{
215+
var defaultConfigFilePath = Path.Combine(workingDirectory, DefaultConfigFileName);
216+
if (fileSystem.Exists(defaultConfigFilePath))
217+
{
218+
return true;
219+
}
220+
221+
var deprecatedConfigFilePath = Path.Combine(workingDirectory, ObsoleteConfigFileName);
222+
if (fileSystem.Exists(deprecatedConfigFilePath))
223+
{
224+
return true;
225+
}
226+
227+
return false;
228+
}
229+
200230
static bool WarnAboutObsoleteConfigFile(string workingDirectory, IFileSystem fileSystem)
201231
{
202232
var deprecatedConfigFilePath = Path.Combine(workingDirectory, ObsoleteConfigFileName);

src/GitVersionCore/ExecuteCore.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ static string ResolveCurrentBranch(IBuildServer buildServer, string targetBranch
103103
VersionVariables ExecuteInternal(string targetBranch, string commitId, IRepository repo, GitPreparer gitPreparer, string projectRoot, IBuildServer buildServer, Config overrideConfig = null)
104104
{
105105
var versionFinder = new GitVersionFinder();
106-
var configuration = ConfigurationProvider.Provide(projectRoot, fileSystem, overrideConfig: overrideConfig);
106+
var configuration = ConfigurationProvider.Provide(gitPreparer, fileSystem, overrideConfig: overrideConfig);
107107

108108
var gitVersionContext = new GitVersionContext(repo, configuration, commitId : commitId);
109109
var semanticVersion = versionFinder.FindVersion(gitVersionContext);

0 commit comments

Comments
 (0)