Skip to content

Commit 9f8b337

Browse files
authored
Merge pull request #4246 from arturcic/feature/regex
Move creation of Regex to a central location
2 parents d8975f6 + b8ebe25 commit 9f8b337

File tree

44 files changed

+717
-484
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+717
-484
lines changed

new-cli/GitVersion.Common/GitVersion.Common.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<Compile Include="..\..\src\GitVersion.Core\Core\Abstractions\IFileSystem.cs" Link="Infrastructure\%(Filename)%(Extension)" />
88
<Compile Include="..\..\src\GitVersion.Core\Core\Exceptions\WarningException.cs" Link="Exceptions\%(Filename)%(Extension)"/>
99
<Compile Include="..\..\src\GitVersion.Core\Core\RegexPatterns.cs" Link="%(Filename)%(Extension)" />
10+
<Compile Include="..\..\src\GitVersion.Core\Extensions\DictionaryExtensions.cs" Link="%(Filename)%(Extension)" />
1011
<Compile Include="..\..\src\GitVersion.Core\Extensions\StringExtensions.cs" Link="Extensions\StringExtensions.cs" />
1112
<Compile Include="..\..\src\GitVersion.Core\Extensions\CommonExtensions.cs" Link="Extensions\CommonExtensions.cs" />
1213
<Compile Include="..\..\src\GitVersion.Core\Helpers\*.cs" Link="Helpers\%(Filename)%(Extension)" />

src/GitVersion.App.Tests/ArgumentParserTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ private static IEnumerable<TestCaseData> OverrideConfigWithSingleOptionTestData(
450450
"tag-prefix=sample",
451451
new GitVersionConfiguration
452452
{
453-
TagPrefix = "sample"
453+
TagPrefixPattern = "sample"
454454
}
455455
);
456456
yield return new TestCaseData(
@@ -546,23 +546,23 @@ private static IEnumerable<TestCaseData> OverrideConfigWithMultipleOptionsTestDa
546546
"/overrideconfig tag-prefix=sample /overrideconfig assembly-versioning-scheme=MajorMinor",
547547
new GitVersionConfiguration
548548
{
549-
TagPrefix = "sample",
549+
TagPrefixPattern = "sample",
550550
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinor
551551
}
552552
);
553553
yield return new TestCaseData(
554554
"/overrideconfig tag-prefix=sample /overrideconfig assembly-versioning-format=\"{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}\"",
555555
new GitVersionConfiguration
556556
{
557-
TagPrefix = "sample",
557+
TagPrefixPattern = "sample",
558558
AssemblyVersioningFormat = "{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}"
559559
}
560560
);
561561
yield return new TestCaseData(
562562
"/overrideconfig tag-prefix=sample /overrideconfig assembly-versioning-format=\"{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}\" /overrideconfig update-build-number=true /overrideconfig assembly-versioning-scheme=MajorMinorPatchTag /overrideconfig mode=ContinuousDelivery /overrideconfig tag-pre-release-weight=4",
563563
new GitVersionConfiguration
564564
{
565-
TagPrefix = "sample",
565+
TagPrefixPattern = "sample",
566566
AssemblyVersioningFormat = "{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}",
567567
UpdateBuildNumber = true,
568568
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatchTag,

src/GitVersion.BuildAgents/Agents/AzurePipelines.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Text.RegularExpressions;
21
using GitVersion.Extensions;
32
using GitVersion.Logging;
43
using GitVersion.OutputVariables;
@@ -52,7 +51,7 @@ private static string ReplaceVariables(string buildNumberEnv, KeyValuePair<strin
5251
return replacement switch
5352
{
5453
null => buildNumberEnv,
55-
_ => buildNumberEnv.RegexReplace(pattern, replacement, RegexOptions.IgnoreCase)
54+
_ => buildNumberEnv.RegexReplace(pattern, replacement)
5655
};
5756
}
5857
}

src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ public void CanReadDefaultDocument()
246246
configuration.AssemblyInformationalFormat.ShouldBe(null);
247247
configuration.Branches["develop"].Label.ShouldBe("alpha");
248248
configuration.Branches["release"].Label.ShouldBe("beta");
249-
configuration.TagPrefix.ShouldBe(ConfigurationConstants.DefaultTagPrefix);
249+
configuration.TagPrefixPattern.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
250250
configuration.NextVersion.ShouldBe(null);
251251
}
252252

@@ -361,7 +361,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty()
361361

362362
var expectedConfig = GitFlowConfigurationBuilder.New
363363
.WithNextVersion("1.2.3")
364-
.WithTagPrefix("custom-tag-prefix-from-yml")
364+
.WithTagPrefixPattern("custom-tag-prefix-from-yml")
365365
.Build();
366366
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
367367

@@ -370,7 +370,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty()
370370
configuration.AssemblyInformationalFormat.ShouldBe(expectedConfig.AssemblyInformationalFormat);
371371
configuration.AssemblyVersioningFormat.ShouldBe(expectedConfig.AssemblyVersioningFormat);
372372
configuration.AssemblyFileVersioningFormat.ShouldBe(expectedConfig.AssemblyFileVersioningFormat);
373-
configuration.TagPrefix.ShouldBe(expectedConfig.TagPrefix);
373+
configuration.TagPrefixPattern.ShouldBe(expectedConfig.TagPrefixPattern);
374374
configuration.NextVersion.ShouldBe(expectedConfig.NextVersion);
375375
configuration.MajorVersionBumpMessage.ShouldBe(expectedConfig.MajorVersionBumpMessage);
376376
configuration.MinorVersionBumpMessage.ShouldBe(expectedConfig.MinorVersionBumpMessage);
@@ -398,7 +398,7 @@ public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile()
398398
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
399399
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
400400

401-
configuration.TagPrefix.ShouldBe(ConfigurationConstants.DefaultTagPrefix);
401+
configuration.TagPrefixPattern.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
402402
}
403403

404404
[Test]
@@ -408,7 +408,7 @@ public void ShouldUseTagPrefixFromConfigFileWhenProvided()
408408
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
409409
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
410410

411-
configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-yml");
411+
configuration.TagPrefixPattern.ShouldBe("custom-tag-prefix-from-yml");
412412
}
413413

414414
[Test]
@@ -422,7 +422,7 @@ public void ShouldOverrideTagPrefixWithOverrideConfigValue([Values] bool tagPref
422422
};
423423
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);
424424

425-
configuration.TagPrefix.ShouldBe("tag-prefix-from-override-configuration");
425+
configuration.TagPrefixPattern.ShouldBe("tag-prefix-from-override-configuration");
426426
}
427427

428428
[Test]
@@ -437,7 +437,7 @@ public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig()
437437

438438
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);
439439

440-
configuration.TagPrefix.ShouldBe(ConfigurationConstants.DefaultTagPrefix);
440+
configuration.TagPrefixPattern.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
441441
}
442442

443443
[Test]
@@ -451,7 +451,7 @@ public void ShouldNotOverrideTagPrefixFromConfigFileWhenNotSetInOverrideConfig()
451451
};
452452
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);
453453

454-
configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-yml");
454+
configuration.TagPrefixPattern.ShouldBe("custom-tag-prefix-from-yml");
455455
}
456456

457457
[Test]
@@ -465,6 +465,6 @@ public void ShouldOverrideTagPrefixFromConfigFileWhenSetInOverrideConfig()
465465
};
466466
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);
467467

468-
configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-console");
468+
configuration.TagPrefixPattern.ShouldBe("custom-tag-prefix-from-console");
469469
}
470470
}

src/GitVersion.Configuration/BranchConfiguration.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using GitVersion.Configuration.Attributes;
2+
using GitVersion.Core;
23
using GitVersion.Extensions;
34
using GitVersion.VersionCalculation;
45

@@ -26,8 +27,8 @@ internal record BranchConfiguration : IBranchConfiguration
2627
public PreventIncrementConfiguration PreventIncrement { get; internal set; } = new();
2728

2829
[JsonPropertyName("label-number-pattern")]
29-
[JsonPropertyDescription($"The regular expression pattern to use to extract the number from the branch name. Defaults to '{ConfigurationConstants.DefaultLabelNumberPattern}'.")]
30-
[JsonPropertyDefault(ConfigurationConstants.DefaultLabelNumberPattern)]
30+
[JsonPropertyDescription($"The regular expression pattern to use to extract the number from the branch name. Defaults to '{RegexPatterns.Configuration.DefaultLabelNumberPattern}'.")]
31+
[JsonPropertyDefault(RegexPatterns.Configuration.DefaultLabelNumberPattern)]
3132
[JsonPropertyFormat(Format.Regex)]
3233
public string? LabelNumberPattern { get; internal set; }
3334

src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using GitVersion.Core;
12
using GitVersion.Extensions;
23
using GitVersion.Helpers;
34
using GitVersion.VersionCalculation;
@@ -47,49 +48,49 @@ internal abstract class ConfigurationBuilderBase<TConfigurationBuilder> : IConfi
4748
protected readonly BranchMetaData MainBranch = new()
4849
{
4950
Name = ConfigurationConstants.MainBranchKey,
50-
RegexPattern = ConfigurationConstants.MainBranchRegex
51+
RegexPattern = RegexPatterns.Configuration.MainBranchRegexPattern
5152
};
5253

5354
protected readonly BranchMetaData DevelopBranch = new()
5455
{
5556
Name = ConfigurationConstants.DevelopBranchKey,
56-
RegexPattern = ConfigurationConstants.DevelopBranchRegex
57+
RegexPattern = RegexPatterns.Configuration.DevelopBranchRegexPattern
5758
};
5859

5960
protected readonly BranchMetaData ReleaseBranch = new()
6061
{
6162
Name = ConfigurationConstants.ReleaseBranchKey,
62-
RegexPattern = ConfigurationConstants.ReleaseBranchRegex
63+
RegexPattern = RegexPatterns.Configuration.ReleaseBranchRegexPattern
6364
};
6465

6566
protected readonly BranchMetaData FeatureBranch = new()
6667
{
6768
Name = ConfigurationConstants.FeatureBranchKey,
68-
RegexPattern = ConfigurationConstants.FeatureBranchRegex
69+
RegexPattern = RegexPatterns.Configuration.FeatureBranchRegexPattern
6970
};
7071

7172
protected readonly BranchMetaData PullRequestBranch = new()
7273
{
7374
Name = ConfigurationConstants.PullRequestBranchKey,
74-
RegexPattern = ConfigurationConstants.PullRequestBranchRegex
75+
RegexPattern = RegexPatterns.Configuration.PullRequestBranchRegexPattern
7576
};
7677

7778
protected readonly BranchMetaData HotfixBranch = new()
7879
{
7980
Name = ConfigurationConstants.HotfixBranchKey,
80-
RegexPattern = ConfigurationConstants.HotfixBranchRegex
81+
RegexPattern = RegexPatterns.Configuration.HotfixBranchRegexPattern
8182
};
8283

8384
protected readonly BranchMetaData SupportBranch = new()
8485
{
8586
Name = ConfigurationConstants.SupportBranchKey,
86-
RegexPattern = ConfigurationConstants.SupportBranchRegex
87+
RegexPattern = RegexPatterns.Configuration.SupportBranchRegexPattern
8788
};
8889

8990
protected readonly BranchMetaData UnknownBranch = new()
9091
{
9192
Name = ConfigurationConstants.UnknownBranchKey,
92-
RegexPattern = ConfigurationConstants.UnknownBranchRegex
93+
RegexPattern = RegexPatterns.Configuration.UnknownBranchRegexPattern
9394
};
9495

9596
protected ConfigurationBuilderBase()
@@ -130,7 +131,7 @@ public virtual TConfigurationBuilder WithAssemblyFileVersioningFormat(string? va
130131
return (TConfigurationBuilder)this;
131132
}
132133

133-
public virtual TConfigurationBuilder WithTagPrefix(string? value)
134+
public virtual TConfigurationBuilder WithTagPrefixPattern(string? value)
134135
{
135136
this.tagPrefix = value;
136137
return (TConfigurationBuilder)this;
@@ -338,7 +339,7 @@ public virtual TConfigurationBuilder WithConfiguration(IGitVersionConfiguration
338339
WithAssemblyInformationalFormat(value.AssemblyInformationalFormat);
339340
WithAssemblyVersioningFormat(value.AssemblyVersioningFormat);
340341
WithAssemblyFileVersioningFormat(value.AssemblyFileVersioningFormat);
341-
WithTagPrefix(value.TagPrefix);
342+
WithTagPrefixPattern(value.TagPrefixPattern);
342343
WithVersionInBranchPattern(value.VersionInBranchPattern);
343344
WithNextVersion(value.NextVersion);
344345
WithMajorVersionBumpMessage(value.MajorVersionBumpMessage);
@@ -397,7 +398,7 @@ public virtual IGitVersionConfiguration Build()
397398
AssemblyInformationalFormat = this.assemblyInformationalFormat,
398399
AssemblyVersioningFormat = this.assemblyVersioningFormat,
399400
AssemblyFileVersioningFormat = this.assemblyFileVersioningFormat,
400-
TagPrefix = this.tagPrefix,
401+
TagPrefixPattern = this.tagPrefix,
401402
VersionInBranchPattern = this.versionInBranchPattern,
402403
NextVersion = this.nextVersion,
403404
MajorVersionBumpMessage = this.majorVersionBumpMessage,

src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ private GitFlowConfigurationBuilder()
2020
PatchVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultPatchPattern,
2121
SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat,
2222
VersionStrategies = ConfigurationConstants.DefaultVersionStrategies,
23-
TagPrefix = ConfigurationConstants.DefaultTagPrefix,
24-
VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern,
23+
TagPrefixPattern = RegexPatterns.Configuration.DefaultTagPrefixPattern,
24+
VersionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern,
2525
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,
2626
UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber,
2727
DeploymentMode = DeploymentMode.ContinuousDelivery,
@@ -145,7 +145,7 @@ private GitFlowConfigurationBuilder()
145145
OfMergedBranch = true,
146146
WhenCurrentCommitTagged = false
147147
},
148-
LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern,
148+
LabelNumberPattern = RegexPatterns.Configuration.DefaultLabelNumberPattern,
149149
TrackMergeMessage = true,
150150
PreReleaseWeight = 30000
151151
});

src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ private GitHubFlowConfigurationBuilder()
2020
PatchVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultPatchPattern,
2121
SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat,
2222
VersionStrategies = ConfigurationConstants.DefaultVersionStrategies,
23-
TagPrefix = ConfigurationConstants.DefaultTagPrefix,
24-
VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern,
23+
TagPrefixPattern = RegexPatterns.Configuration.DefaultTagPrefixPattern,
24+
VersionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern,
2525
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,
2626
UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber,
2727
DeploymentMode = DeploymentMode.ContinuousDelivery,
@@ -114,7 +114,7 @@ private GitHubFlowConfigurationBuilder()
114114
OfMergedBranch = true,
115115
WhenCurrentCommitTagged = false
116116
},
117-
LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern,
117+
LabelNumberPattern = RegexPatterns.Configuration.DefaultLabelNumberPattern,
118118
RegularExpression = PullRequestBranch.RegexPattern,
119119
SourceBranches =
120120
[

src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ private TrunkBasedConfigurationBuilder()
2323
VersionStrategies.ConfiguredNextVersion,
2424
VersionStrategies.Mainline
2525
],
26-
TagPrefix = ConfigurationConstants.DefaultTagPrefix,
27-
VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern,
26+
TagPrefixPattern = RegexPatterns.Configuration.DefaultTagPrefixPattern,
27+
VersionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern,
2828
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,
2929
UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber,
3030
DeploymentMode = DeploymentMode.ContinuousDelivery,
@@ -112,7 +112,7 @@ private TrunkBasedConfigurationBuilder()
112112
OfMergedBranch = true,
113113
WhenCurrentCommitTagged = false
114114
},
115-
LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern,
115+
LabelNumberPattern = RegexPatterns.Configuration.DefaultLabelNumberPattern,
116116
RegularExpression = PullRequestBranch.RegexPattern,
117117
SourceBranches =
118118
[

src/GitVersion.Configuration/GitVersionConfiguration.cs

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System.Globalization;
2-
using System.Text.RegularExpressions;
32
using GitVersion.Configuration.Attributes;
43
using GitVersion.Core;
5-
using GitVersion.Extensions;
64
using GitVersion.VersionCalculation;
75
using static GitVersion.Configuration.ConfigurationConstants;
86

@@ -38,28 +36,17 @@ internal sealed record GitVersionConfiguration : BranchConfiguration, IGitVersio
3836
public string? AssemblyFileVersioningFormat { get; internal set; }
3937

4038
[JsonPropertyName("tag-prefix")]
41-
[JsonPropertyDescription($"A regular expression which is used to trim Git tags before processing. Defaults to '{DefaultTagPrefix}'")]
42-
[JsonPropertyDefault(DefaultTagPrefix)]
39+
[JsonPropertyDescription($"A regular expression which is used to trim Git tags before processing. Defaults to '{RegexPatterns.Configuration.DefaultTagPrefixPattern}'")]
40+
[JsonPropertyDefault(RegexPatterns.Configuration.DefaultTagPrefixPattern)]
4341
[JsonPropertyFormat(Format.Regex)]
44-
public string? TagPrefix { get; internal set; }
42+
public string? TagPrefixPattern { get; internal set; }
4543

4644
[JsonPropertyName("version-in-branch-pattern")]
47-
[JsonPropertyDescription($"A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '{DefaultVersionInBranchPattern}'.")]
48-
[JsonPropertyDefault(DefaultVersionInBranchPattern)]
45+
[JsonPropertyDescription($"A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '{RegexPatterns.Configuration.DefaultVersionInBranchPattern}'.")]
46+
[JsonPropertyDefault(RegexPatterns.Configuration.DefaultVersionInBranchPattern)]
4947
[JsonPropertyFormat(Format.Regex)]
5048
public string? VersionInBranchPattern { get; internal set; }
5149

52-
[JsonIgnore]
53-
public Regex VersionInBranchRegex => versionInBranchRegex ??= new(GetVersionInBranchPattern(), RegexOptions.Compiled);
54-
private Regex? versionInBranchRegex;
55-
56-
private string GetVersionInBranchPattern()
57-
{
58-
var versionInBranchPattern = VersionInBranchPattern;
59-
if (versionInBranchPattern.IsNullOrEmpty()) versionInBranchPattern = DefaultVersionInBranchPattern;
60-
return $"^{versionInBranchPattern.TrimStart('^')}";
61-
}
62-
6350
[JsonPropertyName("next-version")]
6451
[JsonPropertyDescription("Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes")]
6552
public string? NextVersion
@@ -103,9 +90,7 @@ public string? NextVersion
10390
[JsonPropertyName("commit-date-format")]
10491
[JsonPropertyDescription($"The format to use when calculating the commit date. Defaults to '{DefaultCommitDateFormat}'. See [Standard Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [Custom Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings).")]
10592
[JsonPropertyDefault(DefaultCommitDateFormat)]
106-
#if NET7_0_OR_GREATER
107-
[System.Diagnostics.CodeAnalysis.StringSyntax("DateTimeFormat")] // See https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.codeanalysis.stringsyntaxattribute, https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.codeanalysis.stringsyntaxattribute.datetimeformat?view=net-7.0#system-diagnostics-codeanalysis-stringsyntaxattribute-datetimeformat
108-
#endif
93+
[System.Diagnostics.CodeAnalysis.StringSyntax("DateTimeFormat")]
10994
public string? CommitDateFormat { get; internal set; }
11095

11196
[JsonPropertyName("merge-message-formats")]

0 commit comments

Comments
 (0)