Skip to content

Commit f5f5c02

Browse files
authored
Merge pull request #3811 from arturcic/feature/json-cache
Switch to JSON for cache serialization and deserialization
2 parents 3ccbd99 + 68bbf72 commit f5f5c02

File tree

8 files changed

+114
-123
lines changed

8 files changed

+114
-123
lines changed

.github/workflows/_artifacts_linux.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,6 @@ jobs:
4747
with:
4848
name: native-${{ runner.os }}
4949
path: ${{ github.workspace }}/artifacts/packages/native
50-
# -
51-
# name: Setup QEMU
52-
# if: inputs.arch == 'arm64'
53-
# uses: docker/setup-qemu-action@v3
5450
-
5551
name: Echo
5652
shell: pwsh

.github/workflows/_docker.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,6 @@ jobs:
3737
with:
3838
name: nuget
3939
path: ${{ github.workspace }}/artifacts/packages/nuget
40-
# -
41-
# name: Setup QEMU
42-
# if: inputs.arch == 'arm64'
43-
# uses: docker/setup-qemu-action@v3
4440
-
4541
name: Docker Test
4642
if: success() && github.event_name == 'pull_request' || github.repository_owner != 'GitTools'

build/common/Utilities/DockerContextExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public static void DockerTestImage(this BuildContextBase context, DockerImage do
114114
var tags = context.GetDockerTags(dockerImage, dockerImage.Architecture);
115115
foreach (var tag in tags)
116116
{
117-
context.DockerTestRun(tag, dockerImage.Architecture, "/repo", "/showvariable", "FullSemver");
117+
context.DockerTestRun(tag, dockerImage.Architecture, "/repo", "/showvariable", "FullSemver", "/nocache");
118118
}
119119
}
120120

src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs

Lines changed: 106 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -92,31 +92,33 @@ public void CacheKeyForWorktree()
9292
public void CacheFileExistsOnDisk()
9393
{
9494
const string versionCacheFileContent = """
95-
Major: 4
96-
Minor: 10
97-
Patch: 3
98-
PreReleaseTag: test.19
99-
PreReleaseTagWithDash: -test.19
100-
PreReleaseLabel: test
101-
PreReleaseLabelWithDash: -test
102-
PreReleaseNumber: 19
103-
WeightedPreReleaseNumber: 19
104-
BuildMetaData:
105-
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
106-
MajorMinorPatch: 4.10.3
107-
SemVer: 4.10.3-test.19
108-
AssemblySemVer: 4.10.3.0
109-
AssemblySemFileVer: 4.10.3.0
110-
FullSemVer: 4.10.3-test.19
111-
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
112-
BranchName: feature/test
113-
EscapedBranchName: feature-test
114-
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
115-
ShortSha: dd2a29af
116-
VersionSourceSha: 4.10.2
117-
CommitsSinceVersionSource: 19
118-
CommitDate: 2015-11-10
119-
UncommittedChanges: 0
95+
{
96+
"Major": 4,
97+
"Minor": 10,
98+
"Patch": 3,
99+
"PreReleaseTag": "test.19",
100+
"PreReleaseTagWithDash": "-test.19",
101+
"PreReleaseLabel": "test",
102+
"PreReleaseLabelWithDash": "-test",
103+
"PreReleaseNumber": 19,
104+
"WeightedPreReleaseNumber": 19,
105+
"BuildMetaData": null,
106+
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
107+
"MajorMinorPatch": "4.10.3",
108+
"SemVer": "4.10.3-test.19",
109+
"AssemblySemVer": "4.10.3.0",
110+
"AssemblySemFileVer": "4.10.3.0",
111+
"FullSemVer": "4.10.3-test.19",
112+
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
113+
"BranchName": "feature/test",
114+
"EscapedBranchName": "feature-test",
115+
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
116+
"ShortSha": "dd2a29af",
117+
"VersionSourceSha": "4.10.2",
118+
"CommitsSinceVersionSource": 19,
119+
"CommitDate": "2015-11-10T00:00:00.000Z",
120+
"UncommittedChanges": 0
121+
}
120122
""";
121123

122124
var stringBuilder = new StringBuilder();
@@ -152,29 +154,31 @@ public void CacheFileExistsOnDisk()
152154
public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDynamicallyCalculatedWithoutSavingInCache()
153155
{
154156
const string versionCacheFileContent = """
155-
Major: 4
156-
Minor: 10
157-
Patch: 3
158-
PreReleaseTag: test.19
159-
PreReleaseTagWithDash: -test.19
160-
PreReleaseLabel: test
161-
PreReleaseLabelWithDash: -test
162-
PreReleaseNumber: 19
163-
BuildMetaData:
164-
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
165-
MajorMinorPatch: 4.10.3
166-
SemVer: 4.10.3-test.19
167-
AssemblySemVer: 4.10.3.0
168-
AssemblySemFileVer: 4.10.3.0
169-
FullSemVer: 4.10.3-test.19
170-
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
171-
BranchName: feature/test
172-
EscapedBranchName: feature-test
173-
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
174-
ShortSha: dd2a29af
175-
CommitsSinceVersionSource: 19
176-
CommitDate: 2015-11-10
177-
UncommittedChanges: 0
157+
{
158+
"Major": 4,
159+
"Minor": 10,
160+
"Patch": 3,
161+
"PreReleaseTag": "test.19",
162+
"PreReleaseTagWithDash": "-test.19",
163+
"PreReleaseLabel": "test",
164+
"PreReleaseLabelWithDash": "-test",
165+
"PreReleaseNumber": 19,
166+
"BuildMetaData": null,
167+
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
168+
"MajorMinorPatch": "4.10.3",
169+
"SemVer": "4.10.3-test.19",
170+
"AssemblySemVer": "4.10.3.0",
171+
"AssemblySemFileVer": "4.10.3.0",
172+
"FullSemVer": "4.10.3-test.19",
173+
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
174+
"BranchName": "feature/test",
175+
"EscapedBranchName": "feature-test",
176+
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
177+
"ShortSha": "dd2a29af",
178+
"CommitsSinceVersionSource": 19,
179+
"CommitDate": "2015-11-10T00:00:00.000Z",
180+
"UncommittedChanges": 0
181+
}
178182
""";
179183

180184
using var fixture = new EmptyRepositoryFixture();
@@ -236,31 +240,33 @@ public void CacheFileIsMissing()
236240
public void ConfigChangeInvalidatesCache(string configFileName)
237241
{
238242
const string versionCacheFileContent = """
239-
Major: 4
240-
Minor: 10
241-
Patch: 3
242-
PreReleaseTag: test.19
243-
PreReleaseTagWithDash: -test.19
244-
PreReleaseLabel: test
245-
PreReleaseLabelWithDash: -test
246-
PreReleaseNumber: 19
247-
WeightedPreReleaseNumber: 19
248-
BuildMetaData:
249-
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
250-
MajorMinorPatch: 4.10.3
251-
SemVer: 4.10.3-test.19
252-
AssemblySemVer: 4.10.3.0
253-
AssemblySemFileVer: 4.10.3.0
254-
FullSemVer: 4.10.3-test.19
255-
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
256-
BranchName: feature/test
257-
EscapedBranchName: feature-test
258-
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
259-
ShortSha: dd2a29af
260-
VersionSourceSha: 4.10.2
261-
CommitsSinceVersionSource: 19
262-
CommitDate: 2015-11-10
263-
UncommittedChanges: 0
243+
{
244+
"Major": 4,
245+
"Minor": 10,
246+
"Patch": 3,
247+
"PreReleaseTag": "test.19",
248+
"PreReleaseTagWithDash": "-test.19",
249+
"PreReleaseLabel": "test",
250+
"PreReleaseLabelWithDash": "-test",
251+
"PreReleaseNumber": 19,
252+
"WeightedPreReleaseNumber": 19,
253+
"BuildMetaData": null,
254+
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
255+
"MajorMinorPatch": "4.10.3",
256+
"SemVer": "4.10.3-test.19",
257+
"AssemblySemVer": "4.10.3.0",
258+
"AssemblySemFileVer": "4.10.3.0",
259+
"FullSemVer": "4.10.3-test.19",
260+
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
261+
"BranchName": "feature/test",
262+
"EscapedBranchName": "feature-test",
263+
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
264+
"ShortSha": "dd2a29af",
265+
"VersionSourceSha": "4.10.2",
266+
"CommitsSinceVersionSource": 19,
267+
"CommitDate": "2015-11-10T00:00:00.000Z",
268+
"UncommittedChanges": 0
269+
}
264270
""";
265271

266272
using var fixture = new EmptyRepositoryFixture();
@@ -296,31 +302,33 @@ public void ConfigChangeInvalidatesCache(string configFileName)
296302
public void NoCacheBypassesCache()
297303
{
298304
const string versionCacheFileContent = """
299-
Major: 4
300-
Minor: 10
301-
Patch: 3
302-
PreReleaseTag: test.19
303-
PreReleaseTagWithDash: -test.19
304-
PreReleaseLabel: test
305-
PreReleaseLabelWithDash: -test
306-
PreReleaseNumber: 19
307-
WeightedPreReleaseNumber: 19
308-
BuildMetaData:
309-
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
310-
MajorMinorPatch: 4.10.3
311-
SemVer: 4.10.3-test.19
312-
AssemblySemVer: 4.10.3.0
313-
AssemblySemFileVer: 4.10.3.0
314-
FullSemVer: 4.10.3-test.19
315-
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
316-
BranchName: feature/test
317-
EscapedBranchName: feature-test
318-
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
319-
ShortSha: dd2a29af
320-
VersionSourceSha: 4.10.2
321-
CommitsSinceVersionSource: 19
322-
CommitDate: 2015-11-10
323-
UncommittedChanges: 0
305+
{
306+
"Major": 4,
307+
"Minor": 10,
308+
"Patch": 3,
309+
"PreReleaseTag": "test.19",
310+
"PreReleaseTagWithDash": "-test.19",
311+
"PreReleaseLabel": "test",
312+
"PreReleaseLabelWithDash": "-test",
313+
"PreReleaseNumber": 19,
314+
"WeightedPreReleaseNumber": 19,
315+
"BuildMetaData": null,
316+
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
317+
"MajorMinorPatch": "4.10.3",
318+
"SemVer": "4.10.3-test.19",
319+
"AssemblySemVer": "4.10.3.0",
320+
"AssemblySemFileVer": "4.10.3.0",
321+
"FullSemVer": "4.10.3-test.19",
322+
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
323+
"BranchName": "feature/test",
324+
"EscapedBranchName": "feature-test",
325+
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
326+
"ShortSha": "dd2a29af",
327+
"VersionSourceSha": "4.10.2",
328+
"CommitsSinceVersionSource": 19,
329+
"CommitDate": "2015-11-10T00:00:00.000Z",
330+
"UncommittedChanges": 0
331+
}
324332
""";
325333

326334
using var fixture = new EmptyRepositoryFixture();

src/GitVersion.Output/GitVersion.Output.csproj

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,7 @@
88
<EmbeddedResource Include="*\AddFormats\**\*.*" />
99
<EmbeddedResource Include="*\Templates\**\*.*" />
1010
</ItemGroup>
11-
12-
<ItemGroup>
13-
<PackageReference Include="YamlDotNet" />
14-
</ItemGroup>
15-
11+
1612
<ItemGroup>
1713
<InternalsVisibleTo Include="GitVersion.App.Tests" />
1814
<InternalsVisibleTo Include="GitVersion.Output.Tests" />

src/GitVersion.Output/Serializer/VersionVariableSerializer.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,14 @@ private static GitVersionVariables FromDictionary(IEnumerable<KeyValuePair<strin
8787

8888
private GitVersionVariables FromFileInternal(string filePath)
8989
{
90-
using var stream = fileSystem.OpenRead(filePath);
91-
using var reader = new StreamReader(stream);
92-
var dictionary = new YamlDotNet.Serialization.Deserializer().Deserialize<Dictionary<string, string>>(reader);
93-
return FromDictionary(dictionary);
90+
var json = fileSystem.ReadAllText(filePath);
91+
return FromJson(json);
9492
}
9593

9694
private void ToFileInternal(GitVersionVariables gitVersionVariables, string filePath)
9795
{
98-
var dictionary = gitVersionVariables.ToDictionary(x => x.Key, x => x.Value);
99-
using var stream = fileSystem.OpenWrite(filePath);
100-
using var sw = new StreamWriter(stream);
101-
var serializer = new YamlDotNet.Serialization.Serializer();
102-
serializer.Serialize(sw, dictionary);
96+
var json = ToJson(gitVersionVariables);
97+
fileSystem.WriteAllText(filePath, json);
10398
}
10499

105100
private static JsonSerializerOptions JsonSerializerOptions() => new() { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, Converters = { new VersionVariablesJsonStringConverter() } };

tests/scripts/test-global-tool.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ result=$(dotnet tool install GitVersion.Tool --version $version --tool-path /too
2121
status=$?
2222
if test $status -eq 0
2323
then
24-
/tools/dotnet-gitversion $repoPath /showvariable FullSemver
24+
/tools/dotnet-gitversion $repoPath /showvariable FullSemver /nocache
2525
else
2626
echo $result
2727
fi

tests/scripts/test-native-tool.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ result=$(tar -xvpf /native/gitversion-$runtime-$version.tar.gz -C /native) # >/d
2121
status=$?
2222
if test $status -eq 0
2323
then
24-
/native/gitversion $repoPath /showvariable FullSemver;
24+
/native/gitversion $repoPath /showvariable FullSemver /nocache
2525
else
2626
echo $result
2727
fi

0 commit comments

Comments
 (0)