diff --git a/docs/src/main/asciidoc/spring-cloud-release-process.adoc b/docs/src/main/asciidoc/spring-cloud-release-process.adoc index d8c3e4d0..db5dc57e 100644 --- a/docs/src/main/asciidoc/spring-cloud-release-process.adoc +++ b/docs/src/main/asciidoc/spring-cloud-release-process.adoc @@ -23,18 +23,18 @@ git pull origin jenkins-releaser-config [start=2] . Find the most recent release in the desired release train. In this document we will use: 2020_0_x.properties . Create a copy of that file and set the name of the copy to .properties (for example: 2020_0_2.properties) -. Edit this file and update all project versions to their latest release. -.. The latest release for each project can be determined by navigating to the individual Github project and checking for commits since the last release, where the last release is marked by a commit from spring-cloud-issues. If there are commits since the last release, change the value in the properties file. If there are no commits since the last release (i.e. the last commit is from spring-cloud-issues) then do not increment the value. +. Edit this file and update all project versions to their latest release. +.. The latest release for each project can be determined by navigating to the individual Github project and checking for commits since the last release, where the last release is marked by a commit from spring-cloud-issues. If there are commits since the last release, change the value in the properties file. If there are no commits since the last release (i.e. the last commit is from spring-cloud-issues) then do not increment the value. . Make a note of the projects that did not increment their version number, as those projects will need to be specified later in the “RELEASER_PROJECTS_TO_SKIP” field in the Jenkins project spring-cloud--meta-releaser - -NOTE: Sometimes the release value for a project will need to be incremented by more than one, + +NOTE: Sometimes the release value for a project will need to be incremented by more than one, for example if there was a release for an individual project due to a CVE and there were commits made after that release. To determine the new version number, look for the latest version in the commit history from spring-cloud-issues. [start=6] . Commit the change . Push the changes back to github. For example: ```bash -git push origin jenkins-releaser-config +git push origin jenkins-releaser-config ``` [start=8] . Request that project owners verify versions in the Spring Cloud Slack room by sharing a github link to the 2020_0_x.properties you just pushed. @@ -43,12 +43,12 @@ git push origin jenkins-releaser-config NOTE: The builder project is required to run first because it is required for spring-cloud-function and spring-cloud-stream. All other spring-cloud builds will run after spring-cloud-function and spring-cloud-stream have performed a successful release [start=10] -. Click `Build With Parameters` on the left side of page +. Click `Build With Parameters` on the left side of page image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/build-releaser-buildwithparams.png[Build With Params] [start=11] -. In the RELEASE_VERSION column enter the name of the file you created without the properties extension +. In the RELEASE_VERSION column enter the name of the file you created without the properties extension image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/build-releaser-setreleaseversion.png[Set The Version] @@ -57,12 +57,12 @@ image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/build-releaser-selectdryrun.png[Set Dry Run] [start=13] -. Once the dry run is successfully complete we need to remove all of the artifacts from the dry run. -To do this select the `spring-cloud-purge-worker-artifacts-releaser` job from the list of jobs. -. Once the purge work has completed successfully, +. Once the dry run is successfully complete we need to remove all of the artifacts from the dry run. +To do this select the `spring-cloud-purge-worker-artifacts-releaser` job from the list of jobs. +. Once the purge work has completed successfully, . Select Rebuild Last option on the left side of the page. . Now go to the `spring-cloud-build--version-releaser` job on Jenkins -, Select the last build +, Select the last build . When build page appears click the `Rebuild` option. image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/build-releaser-selectlastrun.png[Select Last Run] @@ -74,12 +74,12 @@ image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools . Once Spring Cloud Stream and Function projects are released verify that all other builds are succeeding . Now go to the `Spring-cloud--meta-releaser` job on Jenkins. For example: `spring-cloud-Kilburn-meta-releaser` -. Click `Build With Parameters` on the left side of page +. Click `Build With Parameters` on the left side of page image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/meta-releaser-buildwithparameters.png[Build With Params] [start=4] -. Update RELEASE_VERSION with the current release and corresponds to the release file. +. Update RELEASE_VERSION with the current release and corresponds to the release file. image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/meta-releaser-setreleaseversion.png[Set The Version] @@ -100,7 +100,7 @@ NOTE: Spring Cloud K8’s Integration tests may time out. Restart the build. Select Rebuild Last option on the left side of the page. [start=8] -. Upon a successful "DRY_RUN". +. Upon a successful "DRY_RUN". . Click "Rebuild Last" option on the left side of the page. image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/meta-releaser-rebuildlast.png[Rebuild Last] @@ -110,3 +110,69 @@ image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools . Deselect “DRY_RUN” then click the build button. . Clear the Start_From field . Click Rebuild + +=== Commercial Releases + +See https://docs.google.com/document/d/10pk6b2Cy0OW9fzFKEHSRIys-2Z_rseqnu7CIYFXnJoM/edit#heading=h.slor8nyo3f1n[this document] from Trevor for more information on the requirement to create release bundles +and distribute the release artifacts to the edge repository. + +==== Creating and Distributing Release Bundles + +The releaser will create release bundles for individual project releases as well as when doing a release for the entire release train. + +Release bundles and distribution of those bundles are disabled by default. + +To enable the creation of project release bundles set `releaser.bundles.create-project-release-bundle=true`. + +The task which creates individual project release bundles, `CreateProjectReleaseBundlePostReleaseTask`, is run when doing a +release of an individual project AND when doing a release train release. + +To enable the creation of release train release bundles set `releaser.bundles.distribute-release-train-source-bundle`. + +The task which creates a release train source bundle, `CreateReleaseTrainReleaseBundlePostReleaseTask`, is run as a release train +`PostReleaseTask`. + +To distribute a project release bundle to the edge repo you must set `releaser.bundles.distribute-project-release-bundle=true`. + +The task which distributes the release bundle to the edge repo, `DistributeProjectReleaseBundleTask`, runs as a project post release +task and runs after `CreateProjectReleaseBundlePostReleaseTask`. Unlike `CreateProjectReleaseBundlePostReleaseTask`, `DistributeProjectReleaseBundleTask` +*should not* be run during a release train release. This is because distributing the release train source release bundle will take care of +distributing all the individual project release bundles. + +To distribute a release train source bundle to the edge repo you must set `releaser.bundles.distribute-release-train-source-bundle=true`. + +The task which distributes release train release source bundles, `DistributeReleaseTrainSourceBundleTask`, runs as a release train post +release task. + +*Release bundles and distribution of those bundles only occurs `releaser.commercial=true`, it is not a snapshot release, and is not a dry run.* + +NOTE: Distribution of release bundles to the edge repo can only be done on a CI system like Jenkins. + + +==== Creating and Distributing Release Bundles On Jenkins + +Our Jenkins jobs have been updated to allow the creation and distribution of release bundles for commercial releases. + +When releasing individual projects you will see 2 new post release tasks in the job options + +image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/project_release_bundles.png[Project Release Bundles] + +When these options are checked the correct properties will be passed to the releaser when run to create and distribute release bundles for an individual project release. + +If you just want to create and distribute the release bundles for an individual project without doing an entire release make sure the two check boxes are checked and then +add `createReleaseBundle,distributeProjectReleaseBundleTask` in the `TASK_NAMES` field and specify the `RELEASE_VERSION` you want to create and distribute the release bundles for. + +Similar options exist for the Jenkins jobs for the meta-release. + +image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-release-tools/main/docs/src/main/asciidoc/images/meta_release_release_bundles.png[Release Train Source Release Bundles] + +If you just want to create the release train source release bundles and distribute them without doing an entire release you can select `RELEASER_POST_RELEASE_ONLY`, uncheck the other post +release tasks in the job configuration, but leaving `RELEASER_PUBLISH_RELEASE_BUNDLES` and `DISTRIBUTE_RELEASE_BUNDLES` checked. + +==== Verify Distribution Of Artifacts + +Packages will be distributed to the edge repo at https://packages.broadcom.com/artifactory/spring-enterprise/org/springframework/cloud/[https://packages.broadcom.com/artifactory/spring-enterprise/org/springframework/cloud/]. +To authenticate to that repo and verify the artifacts are present follow the instructions here[https://docs.vmware.com/en/Tanzu-Spring-Runtime/Commercial/Tanzu-Spring-Runtime/guide-artifact-repository-administrators.html#access-commercial-subscription]. + +NOTE: For Broadcom employees access to the Broadcom Customer Support Portal can be found under Okta. + diff --git a/projects/spring-cloud-stream/src/main/java/releaser/cloud/buildsystem/SpringCloudStreamMavenBomParser.java b/projects/spring-cloud-stream/src/main/java/releaser/cloud/buildsystem/SpringCloudStreamMavenBomParser.java index 27756e44..792fceb8 100644 --- a/projects/spring-cloud-stream/src/main/java/releaser/cloud/buildsystem/SpringCloudStreamMavenBomParser.java +++ b/projects/spring-cloud-stream/src/main/java/releaser/cloud/buildsystem/SpringCloudStreamMavenBomParser.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/projects/spring-cloud/src/main/java/releaser/cloud/buildsystem/SpringCloudMavenBomParser.java b/projects/spring-cloud/src/main/java/releaser/cloud/buildsystem/SpringCloudMavenBomParser.java index 349704ca..6c4d1bcd 100644 --- a/projects/spring-cloud/src/main/java/releaser/cloud/buildsystem/SpringCloudMavenBomParser.java +++ b/projects/spring-cloud/src/main/java/releaser/cloud/buildsystem/SpringCloudMavenBomParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2013-2019 the original author or authors. + * Copyright 2013-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/projects/spring-cloud/src/test/java/releaser/cloud/SpringCloudReleaserProperties.java b/projects/spring-cloud/src/test/java/releaser/cloud/SpringCloudReleaserProperties.java index 97db06dc..22b52c75 100644 --- a/projects/spring-cloud/src/test/java/releaser/cloud/SpringCloudReleaserProperties.java +++ b/projects/spring-cloud/src/test/java/releaser/cloud/SpringCloudReleaserProperties.java @@ -28,7 +28,10 @@ import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.context.properties.source.MapConfigurationPropertySource; import org.springframework.core.io.FileSystemResource; -public class SpringCloudReleaserProperties { +public final class SpringCloudReleaserProperties { + + private SpringCloudReleaserProperties() { + } public static ReleaserProperties get() { try { diff --git a/projects/spring-cloud/src/test/java/releaser/cloud/docs/TestUtils.java b/projects/spring-cloud/src/test/java/releaser/cloud/docs/TestUtils.java index 10a25694..07b5e47d 100644 --- a/projects/spring-cloud/src/test/java/releaser/cloud/docs/TestUtils.java +++ b/projects/spring-cloud/src/test/java/releaser/cloud/docs/TestUtils.java @@ -33,6 +33,7 @@ public final class TestUtils { prepareLocalRepo("target/test-classes/projects/", "spring-cloud-core-tests"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-release"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-consul"); + prepareLocalRepo("target/test-classes/projects/", "spring-cloud-consul-commercial"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-static"); } diff --git a/projects/spring-cloud/src/test/java/releaser/cloud/github/SpringCloudGithubIssuesAccessor.java b/projects/spring-cloud/src/test/java/releaser/cloud/github/SpringCloudGithubIssuesAccessor.java index 98cd35a8..4dbb8191 100644 --- a/projects/spring-cloud/src/test/java/releaser/cloud/github/SpringCloudGithubIssuesAccessor.java +++ b/projects/spring-cloud/src/test/java/releaser/cloud/github/SpringCloudGithubIssuesAccessor.java @@ -20,7 +20,10 @@ import org.kohsuke.github.GitHub; import releaser.internal.ReleaserProperties; import releaser.internal.github.CustomGithubIssues; -public class SpringCloudGithubIssuesAccessor { +public final class SpringCloudGithubIssuesAccessor { + + private SpringCloudGithubIssuesAccessor() { + } public static CustomGithubIssues springCloud(GitHub github, ReleaserProperties releaserProperties) { return new SpringCloudGithubIssues(github, releaserProperties); diff --git a/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/AbstractSpringCloudMetaAcceptanceTests.java b/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/AbstractSpringCloudMetaAcceptanceTests.java index a90f2a30..aa397644 100644 --- a/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/AbstractSpringCloudMetaAcceptanceTests.java +++ b/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/AbstractSpringCloudMetaAcceptanceTests.java @@ -28,6 +28,8 @@ public class AbstractSpringCloudMetaAcceptanceTests extends AbstractSpringMetaRe public File springCloudConsulProject; + public File springCloudConsulCommercialProject; + public File springCloudBuildProject; @BeforeEach @@ -36,6 +38,8 @@ public class AbstractSpringCloudMetaAcceptanceTests extends AbstractSpringMetaRe AbstractSpringCloudMetaAcceptanceTests.class.getResource("/projects/spring-cloud-consul").toURI()); this.springCloudBuildProject = new File( AbstractSpringCloudMetaAcceptanceTests.class.getResource("/projects/spring-cloud-build").toURI()); + this.springCloudConsulCommercialProject = new File(AbstractSpringCloudMetaAcceptanceTests.class + .getResource("/projects/spring-cloud-consul-commercial").toURI()); } public void consulPomParentVersionIsEqualTo(File project, String expected) { diff --git a/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java b/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java index 24039f6d..f83808c4 100644 --- a/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java +++ b/projects/spring-cloud/src/test/java/releaser/cloud/spring/meta/SpringMetaReleaseAcceptanceTests.java @@ -17,8 +17,10 @@ package releaser.cloud.spring.meta; import java.io.File; +import java.io.IOException; import java.util.Collections; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import org.junit.jupiter.api.Test; @@ -26,10 +28,12 @@ import org.junit.jupiter.api.io.TempDir; import org.mockito.BDDMockito; import releaser.internal.Releaser; import releaser.internal.ReleaserProperties; +import releaser.internal.commercial.ReleaseBundleCreator; import releaser.internal.docs.DocumentationUpdater; import releaser.internal.git.GitTestUtils; import releaser.internal.options.OptionsBuilder; import releaser.internal.postrelease.PostReleaseActions; +import releaser.internal.project.ProjectVersion; import releaser.internal.project.Projects; import releaser.internal.sagan.SaganClient; import releaser.internal.sagan.SaganUpdater; @@ -58,6 +62,9 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; /** * @author Marcin Grzejszczak @@ -83,17 +90,19 @@ public class SpringMetaReleaseAcceptanceTests extends AbstractSpringCloudMetaAcc public void should_perform_a_meta_release_of_sc_release_and_consul(@TempDir File tempDirSpringCloudConsulOrigin, @TempDir File tempDirSpringCloudConsulProject) throws Exception { checkoutReleaseTrainBranch("/projects/spring-cloud-release/", "2022.0.x"); - File origin = cloneToTemporaryDirectory(tempDirSpringCloudConsulOrigin, this.springCloudConsulProject); + File origin = cloneToTemporaryDirectory(tempDirSpringCloudConsulOrigin, + this.springCloudConsulCommercialProject); assertThatClonedConsulProjectIsInSnapshots(origin); File project = cloneToTemporaryDirectory(tempDirSpringCloudConsulProject, tmpFile("spring-cloud-consul")); GitTestUtils.setOriginOnProjectToTmp(origin, project); - run(defaultRunner(), - properties("debugx=true") - .properties("test.metarelease=true", "releaser.git.create-release-notes-for-milestone=false") - .properties(metaReleaseArgs(project, tempDirTestSamplesProject, tempDirReleaseTrainDocs, - tempDirSpringCloud, tempDirReleaseTrainWiki, tempDirAllTestSample) - .bomBranch("v2022.0.2").addFixedVersions(v2022_0_4()).build()), + run(defaultRunner(), properties("debugx=true") + .properties("test.metarelease=true", "releaser.git.create-release-notes-for-milestone=false") + .properties(metaReleaseArgs(project, tempDirTestSamplesProject, tempDirReleaseTrainDocs, + tempDirSpringCloud, tempDirReleaseTrainWiki, tempDirAllTestSample).bomBranch("v2022.0.2") + .addFixedVersions(v2022_0_4()).distributeReleaseTrainSourceReleaseBundle(true) + .releaseTrainSourceReleaseBundle(true).projectReleaseBundle(true).commercial(true) + .build()), context -> { SpringReleaser releaser = context.getBean(SpringReleaser.class); NonAssertingTestProjectGitHandler nonAssertingTestProjectGitHandler = context @@ -102,6 +111,7 @@ public class SpringMetaReleaseAcceptanceTests extends AbstractSpringCloudMetaAcc PostReleaseActions postReleaseActions = context.getBean(PostReleaseActions.class); TestExecutionResultHandler testExecutionResultHandler = context .getBean(TestExecutionResultHandler.class); + ReleaseBundleCreator creator = context.getBean(ReleaseBundleCreator.class); ExecutionResult result = releaser.release(new OptionsBuilder().metaRelease(true).options()); @@ -115,10 +125,22 @@ public class SpringMetaReleaseAcceptanceTests extends AbstractSpringCloudMetaAcc // don't want to verify the docs thenAllStepsWereExecutedForEachProject(nonAssertingTestProjectGitHandler); thenSaganWasCalled(saganUpdater); - then(clonedProject(nonAssertingTestProjectGitHandler, "spring-cloud-consul").tagList().call()) - .extracting("name").contains("refs/tags/v4.0.2"); + then(clonedProject(nonAssertingTestProjectGitHandler, "spring-cloud-consul-commercial").tagList() + .call()).extracting("name").contains("refs/tags/v4.0.2"); thenRunUpdatedTestsWereCalled(postReleaseActions); thenUpdateReleaseTrainDocsWasCalled(postReleaseActions); + BDDMockito.then(creator).should(times(1)) + .createReleaseTrainSourceBundle(List.of(new ProjectVersion("spring-cloud-consul", "4.0.2"), + new ProjectVersion("spring-cloud-starter-build", "2022.0.4")), "2022.0.4"); + BDDMockito.then(creator).should(times(1)).createReleaseBundle( + List.of("org/springframework/cloud/spring-cloud-consul*", + "org/springframework/cloud/spring-cloud-starter-consul*"), + "4.0.2", "TNZ-spring-cloud-consul-commercial"); + BDDMockito.then(creator).should(times(1)).distributeReleaseTrainSourceBundle("2022.0.4"); + // This should never be called when releasing a release train since + // distributing a release train source bundle + // will distribute individual project release bundles + verify(creator, never()).distributeReleaseBundle(anyString(), anyString(), anyString()); }); } @@ -375,11 +397,10 @@ public class SpringMetaReleaseAcceptanceTests extends AbstractSpringCloudMetaAcc then(nonAssertingTestProjectGitHandler.clonedProjects).hasSize(1); BDDMockito.then(firstTask).should() .runTask(BDDMockito.argThat(arg -> arg.project.getName().equals("spring-cloud-consul"))); - BDDMockito.then(firstTask).should(BDDMockito.never()) + BDDMockito.then(firstTask).should(never()) .runTask(BDDMockito.argThat(arg -> arg.project.getName().equals("spring-cloud-release"))); - BDDMockito.then(secondTask).should(BDDMockito.never()).runTask(BDDMockito.any(Arguments.class)); - BDDMockito.then(postReleaseTask).should(BDDMockito.never()) - .runTask(BDDMockito.any(Arguments.class)); + BDDMockito.then(secondTask).should(never()).runTask(BDDMockito.any(Arguments.class)); + BDDMockito.then(postReleaseTask).should(never()).runTask(BDDMockito.any(Arguments.class)); }); } @@ -405,7 +426,7 @@ public class SpringMetaReleaseAcceptanceTests extends AbstractSpringCloudMetaAcc } private void thenBuildWasNeverCalledFor(BuildProjectReleaseTask build, String projectName) { - BDDMockito.then(build).should(BDDMockito.never()) + BDDMockito.then(build).should(never()) .apply(argThat(argument -> argument.originalVersion.projectName.equals(projectName) || argument.project.getAbsolutePath().endsWith(projectName))); } @@ -439,6 +460,15 @@ public class SpringMetaReleaseAcceptanceTests extends AbstractSpringCloudMetaAcc return saganClient; } + @Bean + ReleaseBundleCreator testReleaseBundleCreator() throws IOException { + ReleaseBundleCreator creator = BDDMockito.mock(ReleaseBundleCreator.class); + given(creator.createReleaseBundle(any(), anyString(), anyString())).willReturn(true); + given(creator.createReleaseTrainSourceBundle(any(), anyString())).willReturn(true); + given(creator.distributeReleaseTrainSourceBundle(anyString())).willReturn(true); + return creator; + } + @Bean @ConditionalOnProperty(value = "test.mockBuild", havingValue = "true") BuildProjectReleaseTask mockedBuildProjectReleaseTask(Releaser releaser) { diff --git a/projects/spring-cloud/src/test/java/releaser/cloud/spring/single/SpringSingleProjectAcceptanceTests.java b/projects/spring-cloud/src/test/java/releaser/cloud/spring/single/SpringSingleProjectAcceptanceTests.java index c356d0da..7dbcc784 100644 --- a/projects/spring-cloud/src/test/java/releaser/cloud/spring/single/SpringSingleProjectAcceptanceTests.java +++ b/projects/spring-cloud/src/test/java/releaser/cloud/spring/single/SpringSingleProjectAcceptanceTests.java @@ -17,8 +17,10 @@ package releaser.cloud.spring.single; import java.io.File; +import java.io.IOException; import java.util.Collections; import java.util.Iterator; +import java.util.List; import org.assertj.core.api.BDDAssertions; import org.eclipse.jgit.revwalk.RevCommit; @@ -27,6 +29,7 @@ import org.junit.jupiter.api.io.TempDir; import org.mockito.BDDMockito; import releaser.cloud.spring.AbstractSpringCloudAcceptanceTests; import releaser.internal.ReleaserProperties; +import releaser.internal.commercial.ReleaseBundleCreator; import releaser.internal.docs.DocumentationUpdater; import releaser.internal.git.GitTestUtils; import releaser.internal.github.ProjectGitHubHandler; @@ -53,6 +56,7 @@ import static org.assertj.core.api.BDDAssertions.then; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; /** @@ -116,7 +120,8 @@ public class SpringSingleProjectAcceptanceTests extends AbstractSpringCloudAccep properties("debugx=true").properties(new ArgsBuilder(project, tempDirTestSamplesProject, tempDirReleaseTrainDocs, tempDirSpringCloud, tempDirReleaseTrainWiki, tempDirAllTestSample) .releaseTrainUrl("/projects/spring-cloud-release/").bomBranch("v2022.0.3") - .expectedVersion("4.0.2").build()), + .expectedVersion("4.0.2").commercial(true).projectReleaseBundle(true) + .distributeProjectReleaseBundle(true).build()), context -> { SpringReleaser releaser = context.getBean(SpringReleaser.class); TestProjectGitHubHandler gitHubHandler = context.getBean(TestProjectGitHubHandler.class); @@ -124,6 +129,7 @@ public class SpringSingleProjectAcceptanceTests extends AbstractSpringCloudAccep PostReleaseActions postReleaseActions = context.getBean(PostReleaseActions.class); TestExecutionResultHandler testExecutionResultHandler = context .getBean(TestExecutionResultHandler.class); + ReleaseBundleCreator releaseBundleCreator = context.getBean(ReleaseBundleCreator.class); ExecutionResult result = releaser.release(new OptionsBuilder().interactive(true).options()); @@ -153,6 +159,13 @@ public class SpringSingleProjectAcceptanceTests extends AbstractSpringCloudAccep // print results testExecutionResultHandler.accept(result); then(testExecutionResultHandler.exitedSuccessOrUnstable).isTrue(); + + BDDMockito.then(releaseBundleCreator).should(times(1)).createReleaseBundle( + List.of("org/springframework/cloud/spring-cloud-consul*", + "org/springframework/cloud/spring-cloud-starter-consul*"), + "4.0.2", "TNZ-spring-cloud-consul-commercial"); + BDDMockito.then(releaseBundleCreator).should(times(1)) + .distributeProjectReleaseBundle("TNZ-spring-cloud-consul-commercial", "4.0.2"); }); } @@ -346,16 +359,24 @@ public class SpringSingleProjectAcceptanceTests extends AbstractSpringCloudAccep @Bean SaganClient testSaganClient() { - SaganClient saganClient = BDDMockito.mock(SaganClient.class); + SaganClient saganClient = mock(SaganClient.class); given(saganClient.getProject(anyString())).willReturn(newProject()); given(saganClient.addRelease(anyString(), any())).willReturn(true); given(saganClient.deleteRelease(anyString(), anyString())).willReturn(true); return saganClient; } + @Bean + ReleaseBundleCreator testReleaseBundleCreator() throws IOException { + ReleaseBundleCreator releaseBundleCreator = mock(ReleaseBundleCreator.class); + given(releaseBundleCreator.createReleaseBundle(any(), anyString(), anyString())).willReturn(true); + given(releaseBundleCreator.distributeProjectReleaseBundle(anyString(), anyString())).willReturn(true); + return releaseBundleCreator; + } + @Bean PostReleaseActions myPostReleaseActions() { - return BDDMockito.mock(PostReleaseActions.class); + return mock(PostReleaseActions.class); } @Bean @@ -374,7 +395,7 @@ public class SpringSingleProjectAcceptanceTests extends AbstractSpringCloudAccep @Bean DocumentationUpdater testDocumentationUpdater() { - return BDDMockito.mock(DocumentationUpdater.class); + return mock(DocumentationUpdater.class); } } diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/.gitignore b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/.gitignore new file mode 100644 index 00000000..bd9bb4ce --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/.gitignore @@ -0,0 +1,16 @@ +*~ +#* +*# +.#* +.classpath +.project +.settings/ +.springBeans +target/ +_site/ +.idea +*.iml +*.ipr +.factorypath +*.swp +/consul diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/COMMIT_EDITMSG b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/COMMIT_EDITMSG new file mode 100644 index 00000000..31425058 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +Removed deployer diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/HEAD new file mode 100644 index 00000000..cb089cd8 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/config b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/config new file mode 100644 index 00000000..6c9406b7 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/description b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/description new file mode 100644 index 00000000..498b267a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/index b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/index new file mode 100644 index 00000000..4203f4e5 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/index differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/logs/HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/logs/HEAD new file mode 100644 index 00000000..f2d72e08 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/logs/HEAD @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 2e289de071592d4d361957e59cc0485c5e1941a0 Marcin Grzejszczak 1489136624 +0100 commit (initial): Initial commit +2e289de071592d4d361957e59cc0485c5e1941a0 386e26ed81099e05b791bbea27a0236abc42a455 Marcin Grzejszczak 1489413813 +0100 commit: Removed deployer diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/logs/refs/heads/master b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/logs/refs/heads/master new file mode 100644 index 00000000..f2d72e08 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/logs/refs/heads/master @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 2e289de071592d4d361957e59cc0485c5e1941a0 Marcin Grzejszczak 1489136624 +0100 commit (initial): Initial commit +2e289de071592d4d361957e59cc0485c5e1941a0 386e26ed81099e05b791bbea27a0236abc42a455 Marcin Grzejszczak 1489413813 +0100 commit: Removed deployer diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/14/e930a30601eee731b77d0a84499aaf56be8b26 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/14/e930a30601eee731b77d0a84499aaf56be8b26 new file mode 100644 index 00000000..0878a4d0 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/14/e930a30601eee731b77d0a84499aaf56be8b26 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/2e/289de071592d4d361957e59cc0485c5e1941a0 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/2e/289de071592d4d361957e59cc0485c5e1941a0 new file mode 100644 index 00000000..fe76f9f2 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/2e/289de071592d4d361957e59cc0485c5e1941a0 @@ -0,0 +1,2 @@ +x10 @Q;"0@Ӣ ˜s1jQL:[7D +CV78!FQ1 դvyimcQamZ#˻9N&˙WB \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/37/296724b949a9c2126e0c3e2e7bf5e5d7678802 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/37/296724b949a9c2126e0c3e2e7bf5e5d7678802 new file mode 100644 index 00000000..bfb35e0f Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/37/296724b949a9c2126e0c3e2e7bf5e5d7678802 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/38/6e26ed81099e05b791bbea27a0236abc42a455 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/38/6e26ed81099e05b791bbea27a0236abc42a455 new file mode 100644 index 00000000..0355fe5f --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/38/6e26ed81099e05b791bbea27a0236abc42a455 @@ -0,0 +1,3 @@ +x= +1s$/&DlA|u +`;0HuQX"qsf!K 8JlbJԐ+nD/"X6㩯zozS'\Lݗ?ڕ>}TscQ}_EO]0 UP< \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/3f/e60ad83d20b9fcc485d1f4a07c84f81a4820f9 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/3f/e60ad83d20b9fcc485d1f4a07c84f81a4820f9 new file mode 100644 index 00000000..c6d94969 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/git/objects/3f/e60ad83d20b9fcc485d1f4a07c84f81a4820f9 @@ -0,0 +1,4 @@ +xUo0+L#ۍV`1ic!^;n sv >ww}*!ӳJ>d2!c68Q7H-A4`fm9` <UzF7 ,9XFWUES;  +i,) ?R)jbidYQNT /uױX 1% -;Tyy"5Fm&P)g[Ak+&<QC +S%<ֽ7}zҽ??Flurd#ng1k g&}*-d"mc"pq' yRTMm uqO*ӈJbۂÉ1uRwٟUmj(\M䑷X0x}V. +4/-,QwOgsHUA!DFWbkC^^!c.4d$'EH2D*K! ǐ0`sҶ5Uj2΀N-[| + + 4.0.0 + + org.springframework.cloud + spring-cloud-consul + 1.2.0.BUILD-SNAPSHOT + pom + Spring Cloud Consul + Spring Cloud Consul + + + org.springframework.cloud + spring-cloud-build + 1.3.1.BUILD-SNAPSHOT + + + + + + 1.3.0.BUILD-SNAPSHOT + 1.2.0.BUILD-SNAPSHOT + 1.3.0.BUILD-SNAPSHOT + 1.3.0.BUILD-SNAPSHOT + Chelsea.BUILD-SNAPSHOT + 2.3.1 + 4.5.13 + 4.4.5 + 2.7 + + + + https://github.com/spring-cloud/spring-cloud-consul + scm:git:git://github.com/spring-cloud/spring-cloud-consul.git + scm:git:ssh://git@github.com/spring-cloud/spring-cloud-consul.git + HEAD + + + + spring-cloud-consul-dependencies + spring-cloud-consul-core + spring-cloud-consul-config + spring-cloud-consul-discovery + spring-cloud-consul-binder + spring-cloud-consul-sample + spring-cloud-starter-consul + spring-cloud-starter-consul-bus + spring-cloud-starter-consul-config + spring-cloud-starter-consul-discovery + spring-cloud-starter-consul-all + docs + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + + + + + org.springframework.cloud + spring-cloud-consul-dependencies + ${project.version} + import + pom + + + org.springframework.cloud + spring-cloud-deployer-local + ${spring-cloud-deployer.version} + test + + + org.springframework.cloud + spring-cloud-stream-binder-test + ${spring-cloud-stream.version} + test + + + org.springframework.cloud + spring-cloud-stream-dependencies + ${spring-cloud-stream.version} + pom + import + + + org.springframework.cloud + spring-cloud-bus-dependencies + ${spring-cloud-bus.version} + pom + import + + + org.springframework.cloud + spring-cloud-commons-dependencies + ${spring-cloud-commons.version} + pom + import + + + org.springframework.cloud + spring-cloud-config-dependencies + ${spring-cloud-config.version} + pom + import + + + org.springframework.cloud + spring-cloud-netflix-dependencies + ${spring-cloud-netflix.version} + import + pom + + + + com.google.code.gson + gson + ${gson.version} + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + org.apache.httpcomponents + httpcore + ${httpcore.version} + + + joda-time + joda-time + ${joda-time.version} + + + + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/libs-release-local + + false + + + + + + diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/spring-cloud-starter-consul/pom.xml b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/spring-cloud-starter-consul/pom.xml new file mode 100644 index 00000000..cd1e7895 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-consul-commercial/spring-cloud-starter-consul/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-consul + 1.2.0.BUILD-SNAPSHOT + .. + + spring-cloud-starter-consul + Spring Cloud Starter Consul + Spring Cloud Starter Consul + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../.. + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-commons + + + org.springframework.cloud + spring-cloud-context + + + org.springframework.cloud + spring-cloud-consul-core + + + com.ecwid.consul + consul-api + + + + com.google.code.gson + gson + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/.editorconfig b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/.editorconfig new file mode 100644 index 00000000..ddda9782 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/.editorconfig @@ -0,0 +1,24 @@ +root = true + +[*.java] +indent_style = tab +indent_size = 4 +continuation_indent_size = 8 + +[*.groovy] +indent_style = tab +indent_size = 4 +continuation_indent_size = 8 + +[*.xml] +indent_style = tab +indent_size = 4 +continuation_indent_size = 8 + +[*.yml] +indent_style = space +indent_size = 2 + +[*.yaml] +indent_style = space +indent_size = 2 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/.gitignore b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/.gitignore new file mode 100644 index 00000000..4bb61be1 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/.gitignore @@ -0,0 +1,18 @@ +*~ +#* +*# +.#* +.classpath +.project +.settings +.springBeans +.gradle +build +bin +target/ +.idea +*.iml +*.ipr +*.iws +.factorypath +.flattened-pom.xml diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/LICENSE.txt b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/LICENSE.txt new file mode 100644 index 00000000..62589edd --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/README.adoc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/README.adoc new file mode 100644 index 00000000..63a60907 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/README.adoc @@ -0,0 +1,292 @@ +//// +DO NOT EDIT THIS FILE. IT WAS GENERATED. +Manual changes to this file will be lost when it is generated again. +Edit the files in the src/main/asciidoc/ directory instead. +//// + + +Spring Cloud Release Train is a curated set of dependencies across a +range of Spring Cloud projects. You consume it by using the +spring-cloud-dependencies POM to manage dependencies in Maven or +Gradle. The release trains have names, not versions, to avoid +confusion with the sub-projects. The names are an alphabetic sequence +(so you can sort them chronologically) with names of London Tube +stations ("Angel" is the first release, "Brixton" is the second). + +== Generating release train documentation + +In order to generate the release train documentation, please update the project with versions for a given release train and then execute the following command: + +```bash +$ ./mvnw clean install -Pdocs,train-docs -pl train-docs +``` + +In order to upload the documentation to the documentation server just execute the following command: + +```bash +$ ./mvnw clean deploy -Pdocs,train-docs -pl train-docs +``` + +IMPORTANT: If you're releasing milestones don't forget to add `-Pmilestone` and if GA `-Pcentral`. + +== Contributing + +:spring-cloud-build-branch: master + +Spring Cloud is released under the non-restrictive Apache 2.0 license, +and follows a very standard Github development process, using Github +tracker for issues and merging pull requests into master. If you want +to contribute even something trivial please do not hesitate, but +follow the guidelines below. + +=== Sign the Contributor License Agreement +Before we accept a non-trivial patch or pull request we will need you to sign the +https://cla.pivotal.io/sign/spring[Contributor License Agreement]. +Signing the contributor's agreement does not grant anyone commit rights to the main +repository, but it does mean that we can accept your contributions, and you will get an +author credit if we do. Active contributors might be asked to join the core team, and +given the ability to merge pull requests. + +=== Code of Conduct +This project adheres to the Contributor Covenant https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[code of +conduct]. By participating, you are expected to uphold this code. Please report +unacceptable behavior to spring-code-of-conduct@pivotal.io. + +=== Code Conventions and Housekeeping +None of these is essential for a pull request, but they will all help. They can also be +added after the original pull request but before a merge. + +* Use the Spring Framework code format conventions. If you use Eclipse + you can import formatter settings using the + `eclipse-code-formatter.xml` file from the + https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring + Cloud Build] project. If using IntelliJ, you can use the + https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter + Plugin] to import the same file. +* Make sure all new `.java` files to have a simple Javadoc class comment with at least an + `@author` tag identifying you, and preferably at least a paragraph on what the class is + for. +* Add the ASF license header comment to all new `.java` files (copy from existing files + in the project) +* Add yourself as an `@author` to the .java files that you modify substantially (more + than cosmetic changes). +* Add some Javadocs and, if you change the namespace, some XSD doc elements. +* A few unit tests would help a lot as well -- someone has to do it. +* If no-one else is using your branch, please rebase it against the current master (or + other target branch in the main project). +* When writing a commit message please follow https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[these conventions], + if you are fixing an existing issue please add `Fixes gh-XXXX` at the end of the commit + message (where XXXX is the issue number). + +=== Checkstyle + +Spring Cloud Build comes with a set of checkstyle rules. You can find them in the `spring-cloud-build-tools` module. The most notable files under the module are: + +.spring-cloud-build-tools/ +---- +└── src +    ├── checkstyle +    │   └── checkstyle-suppressions.xml <3> +    └── main +    └── resources +    ├── checkstyle-header.txt <2> +    └── checkstyle.xml <1> +---- +<1> Default Checkstyle rules +<2> File header setup +<3> Default suppression rules + +==== Checkstyle configuration + +Checkstyle rules are *disabled by default*. To add checkstyle to your project just define the following properties and plugins. + +.pom.xml +---- + +true <1> + true + <2> + true + <3> + + + + + <4> + io.spring.javaformat + spring-javaformat-maven-plugin + + <5> + org.apache.maven.plugins + maven-checkstyle-plugin + + + + + + <5> + org.apache.maven.plugins + maven-checkstyle-plugin + + + + +---- +<1> Fails the build upon Checkstyle errors +<2> Fails the build upon Checkstyle violations +<3> Checkstyle analyzes also the test sources +<4> Add the Spring Java Format plugin that will reformat your code to pass most of the Checkstyle formatting rules +<5> Add checkstyle plugin to your build and reporting phases + +If you need to suppress some rules (e.g. line length needs to be longer), then it's enough for you to define a file under `${project.root}/src/checkstyle/checkstyle-suppressions.xml` with your suppressions. Example: + +.projectRoot/src/checkstyle/checkstyle-suppresions.xml +---- + + + + + + +---- + +It's advisable to copy the `${spring-cloud-build.rootFolder}/.editorconfig` and `${spring-cloud-build.rootFolder}/.springformat` to your project. That way, some default formatting rules will be applied. You can do so by running this script: + +```bash +$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig +$ touch .springformat +``` + +=== IDE setup + +==== Intellij IDEA + +In order to setup Intellij you should import our coding conventions, inspection profiles and set up the checkstyle plugin. +The following files can be found in the https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] project. + +.spring-cloud-build-tools/ +---- +└── src +    ├── checkstyle +    │   └── checkstyle-suppressions.xml <3> +    └── main +    └── resources +    ├── checkstyle-header.txt <2> +    ├── checkstyle.xml <1> +    └── intellij +       ├── Intellij_Project_Defaults.xml <4> +       └── Intellij_Spring_Boot_Java_Conventions.xml <5> +---- +<1> Default Checkstyle rules +<2> File header setup +<3> Default suppression rules +<4> Project defaults for Intellij that apply most of Checkstyle rules +<5> Project style conventions for Intellij that apply most of Checkstyle rules + +.Code style + +image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-code-style.png[Code style] + +Go to `File` -> `Settings` -> `Editor` -> `Code style`. There click on the icon next to the `Scheme` section. There, click on the `Import Scheme` value and pick the `Intellij IDEA code style XML` option. Import the `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml` file. + +.Inspection profiles + +image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-inspections.png[Code style] + +Go to `File` -> `Settings` -> `Editor` -> `Inspections`. There click on the icon next to the `Profile` section. There, click on the `Import Profile` and import the `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml` file. + +.Checkstyle + +To have Intellij work with Checkstyle, you have to install the `Checkstyle` plugin. It's advisable to also install the `Assertions2Assertj` to automatically convert the JUnit assertions + +image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-checkstyle.png[Checkstyle] + +Go to `File` -> `Settings` -> `Other settings` -> `Checkstyle`. There click on the `+` icon in the `Configuration file` section. There, you'll have to define where the checkstyle rules should be picked from. In the image above, we've picked the rules from the cloned Spring Cloud Build repository. However, you can point to the Spring Cloud Build's GitHub repository (e.g. for the `checkstyle.xml` : `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml`). We need to provide the following variables: + +- `checkstyle.header.file` - please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` URL. +- `checkstyle.suppressions.file` - default suppressions. Please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` URL. +- `checkstyle.additional.suppressions.file` - this variable corresponds to suppressions in your local project. E.g. you're working on `spring-cloud-contract`. Then point to the `project-root/src/checkstyle/checkstyle-suppressions.xml` folder. Example for `spring-cloud-contract` would be: `/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml`. + +IMPORTANT: Remember to set the `Scan Scope` to `All sources` since we apply checkstyle rules for production and test sources. + +=== Duplicate Finder + +Spring Cloud Build brings along the `basepom:duplicate-finder-maven-plugin`, that enables flagging duplicate and conflicting classes and resources on the java classpath. + +==== Duplicate Finder configuration + +Duplicate finder is *enabled by default* and will run in the `verify` phase of your Maven build, but it will only take effect in your project if you add the `duplicate-finder-maven-plugin` to the `build` section of the projecst's `pom.xml`. + +.pom.xml +[source,xml] +---- + + + + org.basepom.maven + duplicate-finder-maven-plugin + + + +---- + +For other properties, we have set defaults as listed in the https://github.com/basepom/duplicate-finder-maven-plugin/wiki[plugin documentation]. + +You can easily override them but setting the value of the selected property prefixed with `duplicate-finder-maven-plugin`. For example, set `duplicate-finder-maven-plugin.skip` to `true` in order to skip duplicates check in your build. + +If you need to add `ignoredClassPatterns` or `ignoredResourcePatterns` to your setup, make sure to add them in the plugin configuration section of your project: + +[source,xml] +---- + + + + org.basepom.maven + duplicate-finder-maven-plugin + + + org.joda.time.base.BaseDateTime + .*module-info + + + changelog.txt + + + + + + + +---- + + +== Building and Deploying + +Since there is no code to compile in the starters they should do not need to compile, but a compiler has to be available because they are built and deployed as JAR artifacts. To install locally: + +---- + +$ mvn install -s .settings.xml +---- + +and to deploy snapshots to repo.spring.io: + +---- +$ mvn install -DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local +---- + +for a RELEASE build use + +---- +$ mvn install -DaltReleaseDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-release-local +---- + +and for Maven Central use + +---- +$ mvn install -P central -DaltReleaseDeploymentRepository=sonatype-nexus-staging::default::https://oss.sonatype.org/service/local/staging/deploy/maven2 +---- + +(the "central" profile is available for all projects in Spring Cloud and it sets up the gpg jar signing, and the repository has to be specified separately for this project because it is a parent of the starter parent which users in turn have as their own parent). diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/pom.xml b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/pom.xml new file mode 100644 index 00000000..5dc05354 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + spring-cloud-starter-docs + + org.springframework.cloud + spring-cloud-starter-build + 2023.0.0-SNAPSHOT + + pom + Spring Cloud Starter Docs + Spring Cloud Docs + + spring-cloud-starters + ${basedir}/.. + deploy + + + + docs + + + + pl.project13.maven + git-commit-id-plugin + + + maven-dependency-plugin + + + maven-resources-plugin + + + org.codehaus.mojo + exec-maven-plugin + + + org.asciidoctor + asciidoctor-maven-plugin + + + maven-antrun-plugin + + + maven-deploy-plugin + + + + + + diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/README.adoc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/README.adoc new file mode 100644 index 00000000..bdda3668 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/README.adoc @@ -0,0 +1,34 @@ +include::intro.adoc[] + +== Contributing + +include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/docs/src/main/asciidoc/contributing.adoc[] + +== Building and Deploying + +Since there is no code to compile in the starters they should do not need to compile, but a compiler has to be available because they are built and deployed as JAR artifacts. To install locally: + +---- + +$ mvn install -s .settings.xml +---- + +and to deploy snapshots to repo.spring.io: + +---- +$ mvn install -DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local +---- + +for a RELEASE build use + +---- +$ mvn install -DaltReleaseDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-release-local +---- + +and for Maven Central use + +---- +$ mvn install -P central -DaltReleaseDeploymentRepository=sonatype-nexus-staging::default::https://oss.sonatype.org/service/local/staging/deploy/maven2 +---- + +(the "central" profile is available for all projects in Spring Cloud and it sets up the gpg jar signing, and the repository has to be specified separately for this project because it is a parent of the starter parent which users in turn have as their own parent). diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/ghpages.sh b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/ghpages.sh new file mode 100755 index 00000000..f051e693 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/ghpages.sh @@ -0,0 +1,330 @@ +#!/bin/bash -x + +set -e + +# Set default props like MAVEN_PATH, ROOT_FOLDER etc. +function set_default_props() { + # The script should be executed from the root folder + ROOT_FOLDER=`pwd` + echo "Current folder is ${ROOT_FOLDER}" + + if [[ ! -e "${ROOT_FOLDER}/.git" ]]; then + echo "You're not in the root folder of the project!" + exit 1 + fi + + # Prop that will let commit the changes + COMMIT_CHANGES="no" + MAVEN_PATH=${MAVEN_PATH:-} + echo "Path to Maven is [${MAVEN_PATH}]" + REPO_NAME=${PWD##*/} + echo "Repo name is [${REPO_NAME}]" + SPRING_CLOUD_STATIC_REPO=${SPRING_CLOUD_STATIC_REPO:-git@github.com:spring-cloud/spring-cloud-static.git} + echo "Spring Cloud Static repo is [${SPRING_CLOUD_STATIC_REPO}" +} + +# Check if gh-pages exists and docs have been built +function check_if_anything_to_sync() { + git remote set-url --push origin `git config remote.origin.url | sed -e 's/^git:/https:/'` + + if ! (git remote set-branches --add origin gh-pages && git fetch -q); then + echo "No gh-pages, so not syncing" + exit 0 + fi + + if ! [ -d docs/target/generated-docs ] && ! [ "${BUILD}" == "yes" ]; then + echo "No gh-pages sources in docs/target/generated-docs, so not syncing" + exit 0 + fi +} + +function retrieve_current_branch() { + # Code getting the name of the current branch. For master we want to publish as we did until now + # https://stackoverflow.com/questions/1593051/how-to-programmatically-determine-the-current-checked-out-git-branch + # If there is a branch already passed will reuse it - otherwise will try to find it + CURRENT_BRANCH=${BRANCH} + if [[ -z "${CURRENT_BRANCH}" ]] ; then + CURRENT_BRANCH=$(git symbolic-ref -q HEAD) + CURRENT_BRANCH=${CURRENT_BRANCH##refs/heads/} + CURRENT_BRANCH=${CURRENT_BRANCH:-HEAD} + fi + echo "Current branch is [${CURRENT_BRANCH}]" + git checkout ${CURRENT_BRANCH} || echo "Failed to check the branch... continuing with the script" +} + +# Switches to the provided value of the release version. We always prefix it with `v` +function switch_to_tag() { + git checkout v${VERSION} +} + +# Build the docs if switch is on +function build_docs_if_applicable() { + if [[ "${BUILD}" == "yes" ]] ; then + ./mvnw clean install -P docs -pl docs -DskipTests + fi +} + +# Get the name of the `docs.main` property +# Get whitelisted branches - assumes that a `docs` module is available under `docs` profile +function retrieve_doc_properties() { + MAIN_ADOC_VALUE=$("${MAVEN_PATH}"mvn -q \ + -Dexec.executable="echo" \ + -Dexec.args='${docs.main}' \ + --non-recursive \ + org.codehaus.mojo:exec-maven-plugin:1.3.1:exec) + echo "Extracted 'main.adoc' from Maven build [${MAIN_ADOC_VALUE}]" + + + WHITELIST_PROPERTY=${WHITELIST_PROPERTY:-"docs.whitelisted.branches"} + WHITELISTED_BRANCHES_VALUE=$("${MAVEN_PATH}"mvn -q \ + -Dexec.executable="echo" \ + -Dexec.args="\${${WHITELIST_PROPERTY}}" \ + org.codehaus.mojo:exec-maven-plugin:1.3.1:exec \ + -P docs \ + -pl docs) + echo "Extracted '${WHITELIST_PROPERTY}' from Maven build [${WHITELISTED_BRANCHES_VALUE}]" +} + +# Stash any outstanding changes +function stash_changes() { + git diff-index --quiet HEAD && dirty=$? || (echo "Failed to check if the current repo is dirty. Assuming that it is." && dirty="1") + if [ "$dirty" != "0" ]; then git stash; fi +} + +# Switch to gh-pages branch to sync it with current branch +function add_docs_from_target() { + local DESTINATION_REPO_FOLDER + if [[ -z "${DESTINATION}" && -z "${CLONE}" ]] ; then + DESTINATION_REPO_FOLDER=${ROOT_FOLDER} + elif [[ "${CLONE}" == "yes" ]]; then + mkdir -p ${ROOT_FOLDER}/target + local clonedStatic=${ROOT_FOLDER}/target/spring-cloud-static + if [[ ! -e "${clonedStatic}/.git" ]]; then + echo "Cloning Spring Cloud Static to target" + git clone ${SPRING_CLOUD_STATIC_REPO} ${clonedStatic} && git checkout gh-pages + else + echo "Spring Cloud Static already cloned - will pull changes" + cd ${clonedStatic} && git checkout gh-pages && git pull origin gh-pages + fi + DESTINATION_REPO_FOLDER=${clonedStatic}/${REPO_NAME} + mkdir -p ${DESTINATION_REPO_FOLDER} + else + if [[ ! -e "${DESTINATION}/.git" ]]; then + echo "[${DESTINATION}] is not a git repository" + exit 1 + fi + DESTINATION_REPO_FOLDER=${DESTINATION}/${REPO_NAME} + mkdir -p ${DESTINATION_REPO_FOLDER} + echo "Destination was provided [${DESTINATION}]" + fi + cd ${DESTINATION_REPO_FOLDER} + git checkout gh-pages + git pull origin gh-pages + + # Add git branches + ################################################################### + if [[ -z "${VERSION}" ]] ; then + copy_docs_for_current_version + else + copy_docs_for_provided_version + fi + commit_changes_if_applicable +} + + +# Copies the docs by using the retrieved properties from Maven build +function copy_docs_for_current_version() { + if [[ "${CURRENT_BRANCH}" == "master" ]] ; then + echo -e "Current branch is master - will copy the current docs only to the root folder" + for f in docs/target/generated-docs/*; do + file=${f#docs/target/generated-docs/*} + if ! git ls-files -i -o --exclude-standard --directory | grep -q ^$file$; then + # Not ignored... + cp -rf $f ${ROOT_FOLDER}/ + git add -A ${ROOT_FOLDER}/$file + fi + done + COMMIT_CHANGES="yes" + else + echo -e "Current branch is [${CURRENT_BRANCH}]" + # https://stackoverflow.com/questions/29300806/a-bash-script-to-check-if-a-string-is-present-in-a-comma-separated-list-of-strin + if [[ ",${WHITELISTED_BRANCHES_VALUE}," = *",${CURRENT_BRANCH},"* ]] ; then + mkdir -p ${ROOT_FOLDER}/${CURRENT_BRANCH} + echo -e "Branch [${CURRENT_BRANCH}] is whitelisted! Will copy the current docs to the [${CURRENT_BRANCH}] folder" + for f in docs/target/generated-docs/*; do + file=${f#docs/target/generated-docs/*} + if ! git ls-files -i -o --exclude-standard --directory | grep -q ^$file$; then + # Not ignored... + # We want users to access 1.0.0.BUILD-SNAPSHOT/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html + if [[ "${file}" == "${MAIN_ADOC_VALUE}.html" ]] ; then + # We don't want to copy the spring-cloud-sleuth.html + # we want it to be converted to index.html + cp -rf $f ${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html + git add -A ${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html + else + cp -rf $f ${ROOT_FOLDER}/${CURRENT_BRANCH} + git add -A ${ROOT_FOLDER}/${CURRENT_BRANCH}/$file + fi + fi + done + COMMIT_CHANGES="yes" + else + echo -e "Branch [${CURRENT_BRANCH}] is not on the white list! Check out the Maven [${WHITELIST_PROPERTY}] property in + [docs] module available under [docs] profile. Won't commit any changes to gh-pages for this branch." + fi + fi +} + +# Copies the docs by using the explicitly provided version +function copy_docs_for_provided_version() { + local FOLDER=${DESTINATION_REPO_FOLDER}/${VERSION} + mkdir -p ${FOLDER} + echo -e "Current tag is [v${VERSION}] Will copy the current docs to the [${FOLDER}] folder" + for f in ${ROOT_FOLDER}/docs/target/generated-docs/*; do + file=${f#${ROOT_FOLDER}/docs/target/generated-docs/*} + copy_docs_for_branch ${file} ${FOLDER} + done + COMMIT_CHANGES="yes" + CURRENT_BRANCH="v${VERSION}" +} + +# Copies the docs from target to the provided destination +# Params: +# $1 - file from target +# $2 - destination to which copy the files +function copy_docs_for_branch() { + local file=$1 + local destination=$2 + if ! git ls-files -i -o --exclude-standard --directory | grep -q ^${file}$; then + # Not ignored... + # We want users to access 1.0.0.BUILD-SNAPSHOT/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html + if [[ ("${file}" == "${MAIN_ADOC_VALUE}.html") || ("${file}" == "${REPO_NAME}.html") ]] ; then + # We don't want to copy the spring-cloud-sleuth.html + # we want it to be converted to index.html + cp -rf $f ${destination}/index.html + git add -A ${destination}/index.html + else + cp -rf $f ${destination} + git add -A ${destination}/$file + fi + fi +} + +function commit_changes_if_applicable() { + if [[ "${COMMIT_CHANGES}" == "yes" ]] ; then + COMMIT_SUCCESSFUL="no" + git commit -a -m "Sync docs from ${CURRENT_BRANCH} to gh-pages" && COMMIT_SUCCESSFUL="yes" || echo "Failed to commit changes" + + # Uncomment the following push if you want to auto push to + # the gh-pages branch whenever you commit to master locally. + # This is a little extreme. Use with care! + ################################################################### + if [[ "${COMMIT_SUCCESSFUL}" == "yes" ]] ; then + git push origin gh-pages + fi + fi +} + +# Switch back to the previous branch and exit block +function checkout_previous_branch() { + # If -version was provided we need to come back to root project + cd ${ROOT_FOLDER} + git checkout ${CURRENT_BRANCH} || echo "Failed to check the branch... continuing with the script" + if [ "$dirty" != "0" ]; then git stash pop; fi + exit 0 +} + +# Assert if properties have been properly passed +function assert_properties() { +echo "VERSION [${VERSION}], DESTINATION [${DESTINATION}], CLONE [${CLONE}]" +if [[ "${VERSION}" != "" && (-z "${DESTINATION}" && -z "${CLONE}") ]] ; then echo "Version was set but destination / clone was not!"; exit 1;fi +if [[ ("${DESTINATION}" != "" && "${CLONE}" != "") && -z "${VERSION}" ]] ; then echo "Destination / clone was set but version was not!"; exit 1;fi +if [[ "${DESTINATION}" != "" && "${CLONE}" == "yes" ]] ; then echo "Destination and clone was set. Pick one!"; exit 1;fi +} + +# Prints the usage +function print_usage() { +cat </` +- if the destination switch is passed (-d) then the script will check if the provided dir is a git repo and then will + switch to gh-pages of that repo and copy the generated docs to `docs//` + +USAGE: + +You can use the following options: + +-v|--version - the script will apply the whole procedure for a particular library version +-d|--destination - the root of destination folder where the docs should be copied. You have to use the full path. + E.g. point to spring-cloud-static folder. Can't be used with (-c) +-b|--build - will run the standard build process after checking out the branch +-c|--clone - will automatically clone the spring-cloud-static repo instead of providing the destination. + Obviously can't be used with (-d) + +EOF +} + + +# ========================================== +# ____ ____ _____ _____ _____ _______ +# / ____|/ ____| __ \|_ _| __ \__ __| +# | (___ | | | |__) | | | | |__) | | | +# \___ \| | | _ / | | | ___/ | | +# ____) | |____| | \ \ _| |_| | | | +# |_____/ \_____|_| \_\_____|_| |_| +# +# ========================================== + +while [[ $# > 0 ]] +do +key="$1" +case ${key} in + -v|--version) + VERSION="$2" + shift # past argument + ;; + -d|--destination) + DESTINATION="$2" + shift # past argument + ;; + -b|--build) + BUILD="yes" + ;; + -c|--clone) + CLONE="yes" + ;; + -h|--help) + print_usage + exit 0 + ;; + *) + echo "Invalid option: [$1]" + print_usage + exit 1 + ;; +esac +shift # past argument or value +done + +assert_properties +set_default_props +check_if_anything_to_sync +if [[ -z "${VERSION}" ]] ; then + retrieve_current_branch +else + switch_to_tag +fi +build_docs_if_applicable +retrieve_doc_properties +stash_changes +add_docs_from_target +checkout_previous_branch \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/intro.adoc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/intro.adoc new file mode 100644 index 00000000..77295c64 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/intro.adoc @@ -0,0 +1,23 @@ +Spring Cloud Release Train is a curated set of dependencies across a +range of Spring Cloud projects. You consume it by using the +spring-cloud-dependencies POM to manage dependencies in Maven or +Gradle. The release trains have names, not versions, to avoid +confusion with the sub-projects. The names are an alphabetic sequence +(so you can sort them chronologically) with names of London Tube +stations ("Angel" is the first release, "Brixton" is the second). + +== Generating release train documentation + +In order to generate the release train documentation, please update the project with versions for a given release train and then execute the following command: + +```bash +$ ./mvnw clean install -Pdocs,train-docs -pl train-docs +``` + +In order to upload the documentation to the documentation server just execute the following command: + +```bash +$ ./mvnw clean deploy -Pdocs,train-docs -pl train-docs +``` + +IMPORTANT: If you're releasing milestones don't forget to add `-Pmilestone` and if GA `-Pcentral`. \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/spring-cloud-starters.adoc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/spring-cloud-starters.adoc new file mode 100644 index 00000000..c9f670bc --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/docs/src/main/asciidoc/spring-cloud-starters.adoc @@ -0,0 +1,5 @@ += Spring Cloud Release Train + +include::intro.adoc[] + +include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/docs/src/main/asciidoc/contributing-docs.adoc[] diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/COMMIT_EDITMSG b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/COMMIT_EDITMSG new file mode 100644 index 00000000..00d7bdd4 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +WIP diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/FETCH_HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/FETCH_HEAD new file mode 100644 index 00000000..367ecb43 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/FETCH_HEAD @@ -0,0 +1 @@ +6e3fe942d6d8e2bedc298097b06f944ff8613fa3 branch '2022.0.x' of github.com:spring-cloud/spring-cloud-release diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/HEAD new file mode 100644 index 00000000..b870d826 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/ORIG_HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/ORIG_HEAD new file mode 100644 index 00000000..bf326875 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/ORIG_HEAD @@ -0,0 +1 @@ +310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/config b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/config new file mode 100644 index 00000000..084e458b --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/config @@ -0,0 +1,17 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = git@github.com:spring-cloud/spring-cloud-release.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "main"] + remote = origin + merge = refs/heads/main +[branch "2021.0.x"] + remote = origin + merge = refs/heads/2021.0.x +[branch "2022.0.x"] + remote = origin + merge = refs/heads/2022.0.x diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/description b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/description new file mode 100644 index 00000000..498b267a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/applypatch-msg.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/applypatch-msg.sample new file mode 100755 index 00000000..a5d7b84a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/commit-msg.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/commit-msg.sample new file mode 100755 index 00000000..b58d1184 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/fsmonitor-watchman.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/fsmonitor-watchman.sample new file mode 100755 index 00000000..14ed0aa4 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/fsmonitor-watchman.sample @@ -0,0 +1,173 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + } + my $query = <<" END"; + ["query", "$git_work_tree", { + "since": $last_update_token, + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/post-update.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/post-update.sample new file mode 100755 index 00000000..ec17ec19 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-applypatch.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-applypatch.sample new file mode 100755 index 00000000..4142082b --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-commit.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-commit.sample new file mode 100755 index 00000000..e144712c --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-merge-commit.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-merge-commit.sample new file mode 100755 index 00000000..399eab19 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-push.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-push.sample new file mode 100755 index 00000000..4ce688d3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-rebase.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-rebase.sample new file mode 100755 index 00000000..6cbef5c3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-receive.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-receive.sample new file mode 100755 index 00000000..a1fd29ec --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/prepare-commit-msg.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/prepare-commit-msg.sample new file mode 100755 index 00000000..10fa14c5 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/push-to-checkout.sample b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/push-to-checkout.sample new file mode 100755 index 00000000..af5a0c00 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/hooks/push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/index b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/index new file mode 100644 index 00000000..1789bb72 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/index differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/info/exclude b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/info/exclude new file mode 100644 index 00000000..a5196d1b --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/HEAD new file mode 100644 index 00000000..63845d72 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/HEAD @@ -0,0 +1,59 @@ +0000000000000000000000000000000000000000 5e59b54c95305b5e402f19666f37a91e120810b6 Marcin Grzejszczak 1639063414 +0100 clone: from github.com:spring-cloud/spring-cloud-release.git +5e59b54c95305b5e402f19666f37a91e120810b6 26c3e2d3254abd6ccf975755e92f11cb850afce0 Marcin Grzejszczak 1639063418 +0100 checkout: moving from main to v2021.0.0 +26c3e2d3254abd6ccf975755e92f11cb850afce0 5e59b54c95305b5e402f19666f37a91e120810b6 Marcin Grzejszczak 1643282376 +0100 checkout: moving from 26c3e2d3254abd6ccf975755e92f11cb850afce0 to main +5e59b54c95305b5e402f19666f37a91e120810b6 36e5c83639f7596c133691e3256ccc4e2e54338e Marcin Grzejszczak 1643282381 +0100 pull --rebase origin main: Fast-forward +36e5c83639f7596c133691e3256ccc4e2e54338e a8f7edcff2c8117b7a66cd6fb3f62a494df56e4d Marcin Grzejszczak 1643285227 +0100 commit: Bringing back contract +a8f7edcff2c8117b7a66cd6fb3f62a494df56e4d 4a38607b690187fcd596c1034b806d945052260b Marcin Grzejszczak 1646726413 +0100 pull --rebase origin main: Fast-forward +4a38607b690187fcd596c1034b806d945052260b ec7331f8a88ddfd84029ef101a033516a322e793 Marcin Grzejszczak 1646726432 +0100 checkout: moving from main to 2021.0.x +ec7331f8a88ddfd84029ef101a033516a322e793 b0fc42faa6a6101acdafa956c2a4d4f25ce9ead1 Marcin Grzejszczak 1646726437 +0100 pull --rebase origin 2021.0.x: Fast-forward +b0fc42faa6a6101acdafa956c2a4d4f25ce9ead1 66873703a4f37736a6c88317262f82f2ee35b83d Marcin Grzejszczak 1651062123 +0200 commit: Bumped train-docs versions +66873703a4f37736a6c88317262f82f2ee35b83d 4a38607b690187fcd596c1034b806d945052260b Marcin Grzejszczak 1651062129 +0200 checkout: moving from 2021.0.x to main +4a38607b690187fcd596c1034b806d945052260b 66873703a4f37736a6c88317262f82f2ee35b83d Marcin Grzejszczak 1651062135 +0200 checkout: moving from main to 2021.0.x +66873703a4f37736a6c88317262f82f2ee35b83d 0cee0b1b487479d6a0c35f6020db5cefffa080de Marcin Grzejszczak 1651062142 +0200 pull --rebase origin 2021.0.x (start): checkout 0cee0b1b487479d6a0c35f6020db5cefffa080de +0cee0b1b487479d6a0c35f6020db5cefffa080de a9144c26b6f2216ceacef51a7866e36ed4a5434b Marcin Grzejszczak 1651062142 +0200 pull --rebase origin 2021.0.x (pick): Bumped train-docs versions +a9144c26b6f2216ceacef51a7866e36ed4a5434b a9144c26b6f2216ceacef51a7866e36ed4a5434b Marcin Grzejszczak 1651062142 +0200 pull --rebase origin 2021.0.x (finish): returning to refs/heads/2021.0.x +a9144c26b6f2216ceacef51a7866e36ed4a5434b 4a38607b690187fcd596c1034b806d945052260b Marcin Grzejszczak 1651062146 +0200 checkout: moving from 2021.0.x to main +4a38607b690187fcd596c1034b806d945052260b b7e7e284090324d7f4d327031086c37970318542 Marcin Grzejszczak 1651062150 +0200 pull --rebase origin main: Fast-forward +b7e7e284090324d7f4d327031086c37970318542 b7e7e284090324d7f4d327031086c37970318542 Marcin Grzejszczak 1651062214 +0200 reset: moving to HEAD +b7e7e284090324d7f4d327031086c37970318542 95baa3924ea1748e2879d5d87af8659ab223c4d8 Marcin Grzejszczak 1651062261 +0200 commit (merge): Merge branch '2021.0.x' +95baa3924ea1748e2879d5d87af8659ab223c4d8 bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a Marcin Grzejszczak 1651064694 +0200 commit: Going with 3.0.0-SNAPSHOT for Boot +bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a ac2d3d88234950b4c7307664b0957352dc3383fc Marcin Grzejszczak 1651157365 +0200 checkout: moving from main to v2021.0.2 +ac2d3d88234950b4c7307664b0957352dc3383fc a9144c26b6f2216ceacef51a7866e36ed4a5434b Marcin Grzejszczak 1651158679 +0200 checkout: moving from ac2d3d88234950b4c7307664b0957352dc3383fc to 2021.0.x +a9144c26b6f2216ceacef51a7866e36ed4a5434b 9709a7f0eb15744bfb2b8a89369be35281c705ea Marcin Grzejszczak 1651158684 +0200 pull --rebase origin 2021.0.x: Fast-forward +9709a7f0eb15744bfb2b8a89369be35281c705ea e5d27ba1bf078530af2601b075fcbd3d1018bd2c Marcin Grzejszczak 1651158718 +0200 commit: Don't sign train docs +e5d27ba1bf078530af2601b075fcbd3d1018bd2c 224f5592065ed46d90a2f50df528dc553aaa40f4 Marcin Grzejszczak 1653485226 +0200 pull --rebase origin 2021.0.x: Fast-forward +224f5592065ed46d90a2f50df528dc553aaa40f4 accf3c1e77679f6400d576650883802959e08b65 Marcin Grzejszczak 1653637505 +0200 pull: Fast-forward +accf3c1e77679f6400d576650883802959e08b65 a331ef4c182a2cdf6a745de93d5a234f4e7875b7 Marcin Grzejszczak 1653645700 +0200 checkout: moving from 2021.0.x to a331ef4c182a2cdf6a745de93d5a234f4e7875b7 +a331ef4c182a2cdf6a745de93d5a234f4e7875b7 accf3c1e77679f6400d576650883802959e08b65 Marcin Grzejszczak 1653646923 +0200 checkout: moving from a331ef4c182a2cdf6a745de93d5a234f4e7875b7 to 2021.0.x +accf3c1e77679f6400d576650883802959e08b65 aa33294e96817a1720f181e49688004a455f989b Marcin Grzejszczak 1653647008 +0200 commit: Updated versions after the release +aa33294e96817a1720f181e49688004a455f989b a331ef4c182a2cdf6a745de93d5a234f4e7875b7 Marcin Grzejszczak 1653647489 +0200 checkout: moving from 2021.0.x to v2021.0.3 +a331ef4c182a2cdf6a745de93d5a234f4e7875b7 bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a Marcin Grzejszczak 1653982677 +0200 checkout: moving from a331ef4c182a2cdf6a745de93d5a234f4e7875b7 to main +bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a aa33294e96817a1720f181e49688004a455f989b Marcin Grzejszczak 1653982681 +0200 checkout: moving from main to 2021.0.x +aa33294e96817a1720f181e49688004a455f989b 063650255846b01168f6397c7ccd341915e950d0 Marcin Grzejszczak 1653982688 +0200 pull --rebase origin 2021.0.x: Fast-forward +063650255846b01168f6397c7ccd341915e950d0 bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a Marcin Grzejszczak 1655207117 +0200 checkout: moving from 2021.0.x to main +bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a da95978f91a608cab81aa2020e511e9fce0d3593 Marcin Grzejszczak 1655209368 +0200 commit: Added train-docs attribute +da95978f91a608cab81aa2020e511e9fce0d3593 da95978f91a608cab81aa2020e511e9fce0d3593 Marcin Grzejszczak 1660659298 +0200 checkout: moving from main to unzipping +da95978f91a608cab81aa2020e511e9fce0d3593 eedb764786313401e1058a8eda4e653d7eb89e01 Marcin Grzejszczak 1660659301 +0200 commit: Prevents unzipping files outside of the target folder +eedb764786313401e1058a8eda4e653d7eb89e01 063650255846b01168f6397c7ccd341915e950d0 Marcin Grzejszczak 1660729898 +0200 checkout: moving from unzipping to 2021.0.x +063650255846b01168f6397c7ccd341915e950d0 15d9a8568f2289687a85c12a646616943813970c Marcin Grzejszczak 1660729903 +0200 cherry-pick: Prevents unzipping files outside of the target folder +15d9a8568f2289687a85c12a646616943813970c da95978f91a608cab81aa2020e511e9fce0d3593 Marcin Grzejszczak 1660729911 +0200 checkout: moving from 2021.0.x to main +da95978f91a608cab81aa2020e511e9fce0d3593 15d9a8568f2289687a85c12a646616943813970c Marcin Grzejszczak 1660729914 +0200 checkout: moving from main to 2021.0.x +15d9a8568f2289687a85c12a646616943813970c 164958c3e7ab9147b6eff2556eef65c3aeb29da9 Marcin Grzejszczak 1660729919 +0200 pull --rebase origin 2021.0.x (start): checkout 164958c3e7ab9147b6eff2556eef65c3aeb29da9 +164958c3e7ab9147b6eff2556eef65c3aeb29da9 790dd20d1945dd321f87167071a5ae089158e59f Marcin Grzejszczak 1660729919 +0200 pull --rebase origin 2021.0.x (pick): Prevents unzipping files outside of the target folder +790dd20d1945dd321f87167071a5ae089158e59f 790dd20d1945dd321f87167071a5ae089158e59f Marcin Grzejszczak 1660729919 +0200 pull --rebase origin 2021.0.x (finish): returning to refs/heads/2021.0.x +790dd20d1945dd321f87167071a5ae089158e59f da95978f91a608cab81aa2020e511e9fce0d3593 Marcin Grzejszczak 1660729922 +0200 checkout: moving from 2021.0.x to main +da95978f91a608cab81aa2020e511e9fce0d3593 61a279e8d4521d5d2be2c48b8c487758dfa59836 Marcin Grzejszczak 1660729926 +0200 pull --rebase origin main: Fast-forward +61a279e8d4521d5d2be2c48b8c487758dfa59836 308c74143e360ad20602d89d1ef51e95ae99a53c Marcin Grzejszczak 1660729933 +0200 cherry-pick: Prevents unzipping files outside of the target folder +308c74143e360ad20602d89d1ef51e95ae99a53c acccdd1f0d6020fc598fb6ea3c1f660790a3c916 Marcin Grzejszczak 1675782967 +0100 pull: Fast-forward +acccdd1f0d6020fc598fb6ea3c1f660790a3c916 ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 Marcin Grzejszczak 1675783565 +0100 commit: Disables jar signing for train docs +ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 Marcin Grzejszczak 1675784191 +0100 reset: moving to HEAD +ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 790dd20d1945dd321f87167071a5ae089158e59f Marcin Grzejszczak 1675784194 +0100 checkout: moving from main to 2021.0.x +790dd20d1945dd321f87167071a5ae089158e59f 55f92ff863c185caf81f474702d37b73992f7156 Marcin Grzejszczak 1675784199 +0100 pull --rebase origin 2021.0.x: Fast-forward +55f92ff863c185caf81f474702d37b73992f7156 dd371879d6786a9ce4b85c23e1f7564fe251e499 Marcin Grzejszczak 1675784259 +0100 commit: Skipping gpg and standard deploy for release train docs +dd371879d6786a9ce4b85c23e1f7564fe251e499 ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 Marcin Grzejszczak 1675784264 +0100 checkout: moving from 2021.0.x to main +ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 5812dd9ca14d6d61a76632662000c7a93c051c79 Marcin Grzejszczak 1675784320 +0100 commit (merge): Merge branch '2021.0.x' +5812dd9ca14d6d61a76632662000c7a93c051c79 310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a Marcin Grzejszczak 1686912310 +0200 pull: Fast-forward +310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a 6e3fe942d6d8e2bedc298097b06f944ff8613fa3 Marcin Grzejszczak 1686912315 +0200 checkout: moving from main to 2022.0.x +6e3fe942d6d8e2bedc298097b06f944ff8613fa3 310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a Marcin Grzejszczak 1686912330 +0200 checkout: moving from 2022.0.x to main +310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a 217e46bc4aa6df83f3a131c344d53bf02dd28a9c Marcin Grzejszczak 1686912332 +0200 merge 2022.0.x: Merge made by the 'ort' strategy. +217e46bc4aa6df83f3a131c344d53bf02dd28a9c 0686dad89dadf285c219841468fdfec6e6dc67ba Marcin Grzejszczak 1688124894 +0200 commit: WIP diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/2021.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/2021.0.x new file mode 100644 index 00000000..fba75527 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/2021.0.x @@ -0,0 +1,14 @@ +0000000000000000000000000000000000000000 ec7331f8a88ddfd84029ef101a033516a322e793 Marcin Grzejszczak 1646726432 +0100 branch: Created from refs/remotes/origin/2021.0.x +ec7331f8a88ddfd84029ef101a033516a322e793 b0fc42faa6a6101acdafa956c2a4d4f25ce9ead1 Marcin Grzejszczak 1646726437 +0100 pull --rebase origin 2021.0.x: Fast-forward +b0fc42faa6a6101acdafa956c2a4d4f25ce9ead1 66873703a4f37736a6c88317262f82f2ee35b83d Marcin Grzejszczak 1651062123 +0200 commit: Bumped train-docs versions +66873703a4f37736a6c88317262f82f2ee35b83d a9144c26b6f2216ceacef51a7866e36ed4a5434b Marcin Grzejszczak 1651062142 +0200 pull --rebase origin 2021.0.x (finish): refs/heads/2021.0.x onto 0cee0b1b487479d6a0c35f6020db5cefffa080de +a9144c26b6f2216ceacef51a7866e36ed4a5434b 9709a7f0eb15744bfb2b8a89369be35281c705ea Marcin Grzejszczak 1651158684 +0200 pull --rebase origin 2021.0.x: Fast-forward +9709a7f0eb15744bfb2b8a89369be35281c705ea e5d27ba1bf078530af2601b075fcbd3d1018bd2c Marcin Grzejszczak 1651158718 +0200 commit: Don't sign train docs +e5d27ba1bf078530af2601b075fcbd3d1018bd2c 224f5592065ed46d90a2f50df528dc553aaa40f4 Marcin Grzejszczak 1653485226 +0200 pull --rebase origin 2021.0.x: Fast-forward +224f5592065ed46d90a2f50df528dc553aaa40f4 accf3c1e77679f6400d576650883802959e08b65 Marcin Grzejszczak 1653637505 +0200 pull: Fast-forward +accf3c1e77679f6400d576650883802959e08b65 aa33294e96817a1720f181e49688004a455f989b Marcin Grzejszczak 1653647008 +0200 commit: Updated versions after the release +aa33294e96817a1720f181e49688004a455f989b 063650255846b01168f6397c7ccd341915e950d0 Marcin Grzejszczak 1653982688 +0200 pull --rebase origin 2021.0.x: Fast-forward +063650255846b01168f6397c7ccd341915e950d0 15d9a8568f2289687a85c12a646616943813970c Marcin Grzejszczak 1660729903 +0200 cherry-pick: Prevents unzipping files outside of the target folder +15d9a8568f2289687a85c12a646616943813970c 790dd20d1945dd321f87167071a5ae089158e59f Marcin Grzejszczak 1660729919 +0200 pull --rebase origin 2021.0.x (finish): refs/heads/2021.0.x onto 164958c3e7ab9147b6eff2556eef65c3aeb29da9 +790dd20d1945dd321f87167071a5ae089158e59f 55f92ff863c185caf81f474702d37b73992f7156 Marcin Grzejszczak 1675784199 +0100 pull --rebase origin 2021.0.x: Fast-forward +55f92ff863c185caf81f474702d37b73992f7156 dd371879d6786a9ce4b85c23e1f7564fe251e499 Marcin Grzejszczak 1675784259 +0100 commit: Skipping gpg and standard deploy for release train docs diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/2022.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/2022.0.x new file mode 100644 index 00000000..3c69044d --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/2022.0.x @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 6e3fe942d6d8e2bedc298097b06f944ff8613fa3 Marcin Grzejszczak 1686912315 +0200 branch: Created from refs/remotes/origin/2022.0.x diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/main b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/main new file mode 100644 index 00000000..725bd7fd --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/main @@ -0,0 +1,16 @@ +0000000000000000000000000000000000000000 5e59b54c95305b5e402f19666f37a91e120810b6 Marcin Grzejszczak 1639063414 +0100 clone: from github.com:spring-cloud/spring-cloud-release.git +5e59b54c95305b5e402f19666f37a91e120810b6 36e5c83639f7596c133691e3256ccc4e2e54338e Marcin Grzejszczak 1643282381 +0100 pull --rebase origin main: Fast-forward +36e5c83639f7596c133691e3256ccc4e2e54338e a8f7edcff2c8117b7a66cd6fb3f62a494df56e4d Marcin Grzejszczak 1643285227 +0100 commit: Bringing back contract +a8f7edcff2c8117b7a66cd6fb3f62a494df56e4d 4a38607b690187fcd596c1034b806d945052260b Marcin Grzejszczak 1646726413 +0100 pull --rebase origin main: Fast-forward +4a38607b690187fcd596c1034b806d945052260b b7e7e284090324d7f4d327031086c37970318542 Marcin Grzejszczak 1651062150 +0200 pull --rebase origin main: Fast-forward +b7e7e284090324d7f4d327031086c37970318542 95baa3924ea1748e2879d5d87af8659ab223c4d8 Marcin Grzejszczak 1651062261 +0200 commit (merge): Merge branch '2021.0.x' +95baa3924ea1748e2879d5d87af8659ab223c4d8 bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a Marcin Grzejszczak 1651064694 +0200 commit: Going with 3.0.0-SNAPSHOT for Boot +bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a da95978f91a608cab81aa2020e511e9fce0d3593 Marcin Grzejszczak 1655209368 +0200 commit: Added train-docs attribute +da95978f91a608cab81aa2020e511e9fce0d3593 61a279e8d4521d5d2be2c48b8c487758dfa59836 Marcin Grzejszczak 1660729926 +0200 pull --rebase origin main: Fast-forward +61a279e8d4521d5d2be2c48b8c487758dfa59836 308c74143e360ad20602d89d1ef51e95ae99a53c Marcin Grzejszczak 1660729933 +0200 cherry-pick: Prevents unzipping files outside of the target folder +308c74143e360ad20602d89d1ef51e95ae99a53c acccdd1f0d6020fc598fb6ea3c1f660790a3c916 Marcin Grzejszczak 1675782967 +0100 pull: Fast-forward +acccdd1f0d6020fc598fb6ea3c1f660790a3c916 ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 Marcin Grzejszczak 1675783565 +0100 commit: Disables jar signing for train docs +ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 5812dd9ca14d6d61a76632662000c7a93c051c79 Marcin Grzejszczak 1675784320 +0100 commit (merge): Merge branch '2021.0.x' +5812dd9ca14d6d61a76632662000c7a93c051c79 310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a Marcin Grzejszczak 1686912310 +0200 pull: Fast-forward +310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a 217e46bc4aa6df83f3a131c344d53bf02dd28a9c Marcin Grzejszczak 1686912332 +0200 merge 2022.0.x: Merge made by the 'ort' strategy. +217e46bc4aa6df83f3a131c344d53bf02dd28a9c 0686dad89dadf285c219841468fdfec6e6dc67ba Marcin Grzejszczak 1688124894 +0200 commit: WIP diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/unzipping b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/unzipping new file mode 100644 index 00000000..2986b99d --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/heads/unzipping @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 da95978f91a608cab81aa2020e511e9fce0d3593 Marcin Grzejszczak 1660659298 +0200 branch: Created from HEAD +da95978f91a608cab81aa2020e511e9fce0d3593 eedb764786313401e1058a8eda4e653d7eb89e01 Marcin Grzejszczak 1660659301 +0200 commit: Prevents unzipping files outside of the target folder diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2020.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2020.0.x new file mode 100644 index 00000000..700a7b7a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2020.0.x @@ -0,0 +1,4 @@ +aa85bcc817b537ba5f4de9bff793bfde66746bab 4a8b90beb64fd56865281acca149b199ad291e85 Marcin Grzejszczak 1643282376 +0100 pull: fast-forward +4a8b90beb64fd56865281acca149b199ad291e85 f9b62fd49d16d8c75642ec25caf04ca4e2aff077 Marcin Grzejszczak 1651157356 +0200 pull: fast-forward +f9b62fd49d16d8c75642ec25caf04ca4e2aff077 814a756ad4514b1707ae610e765102ee241f10a0 Marcin Grzejszczak 1675782967 +0100 pull: fast-forward +814a756ad4514b1707ae610e765102ee241f10a0 9f0690abd67176c5307abd28542ddd7a07354518 Marcin Grzejszczak 1686912310 +0200 pull: fast-forward diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2021.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2021.0.x new file mode 100644 index 00000000..9d236ac1 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2021.0.x @@ -0,0 +1,15 @@ +0000000000000000000000000000000000000000 ec7331f8a88ddfd84029ef101a033516a322e793 Marcin Grzejszczak 1643282376 +0100 pull: storing head +ec7331f8a88ddfd84029ef101a033516a322e793 b0fc42faa6a6101acdafa956c2a4d4f25ce9ead1 Marcin Grzejszczak 1646726437 +0100 pull --rebase origin 2021.0.x: fast-forward +b0fc42faa6a6101acdafa956c2a4d4f25ce9ead1 0cee0b1b487479d6a0c35f6020db5cefffa080de Marcin Grzejszczak 1651062006 +0200 fetch origin 2021.0.x: fast-forward +0cee0b1b487479d6a0c35f6020db5cefffa080de a9144c26b6f2216ceacef51a7866e36ed4a5434b Marcin Grzejszczak 1651062146 +0200 update by push +a9144c26b6f2216ceacef51a7866e36ed4a5434b 9709a7f0eb15744bfb2b8a89369be35281c705ea Marcin Grzejszczak 1651157356 +0200 pull: fast-forward +9709a7f0eb15744bfb2b8a89369be35281c705ea e5d27ba1bf078530af2601b075fcbd3d1018bd2c Marcin Grzejszczak 1651158724 +0200 update by push +e5d27ba1bf078530af2601b075fcbd3d1018bd2c 224f5592065ed46d90a2f50df528dc553aaa40f4 Marcin Grzejszczak 1653485226 +0200 pull --rebase origin 2021.0.x: fast-forward +224f5592065ed46d90a2f50df528dc553aaa40f4 accf3c1e77679f6400d576650883802959e08b65 Marcin Grzejszczak 1653637505 +0200 pull: fast-forward +accf3c1e77679f6400d576650883802959e08b65 aa33294e96817a1720f181e49688004a455f989b Marcin Grzejszczak 1653647013 +0200 update by push +aa33294e96817a1720f181e49688004a455f989b 063650255846b01168f6397c7ccd341915e950d0 Marcin Grzejszczak 1653982688 +0200 pull --rebase origin 2021.0.x: fast-forward +063650255846b01168f6397c7ccd341915e950d0 164958c3e7ab9147b6eff2556eef65c3aeb29da9 Marcin Grzejszczak 1660729919 +0200 pull --rebase origin 2021.0.x: fast-forward +164958c3e7ab9147b6eff2556eef65c3aeb29da9 790dd20d1945dd321f87167071a5ae089158e59f Marcin Grzejszczak 1660729922 +0200 update by push +790dd20d1945dd321f87167071a5ae089158e59f 55f92ff863c185caf81f474702d37b73992f7156 Marcin Grzejszczak 1675782967 +0100 pull: fast-forward +55f92ff863c185caf81f474702d37b73992f7156 dd371879d6786a9ce4b85c23e1f7564fe251e499 Marcin Grzejszczak 1675784264 +0100 update by push +dd371879d6786a9ce4b85c23e1f7564fe251e499 36f2070ea645c75fbf26bc660245b29cdc863e25 Marcin Grzejszczak 1686912310 +0200 pull: fast-forward diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2022.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2022.0.x new file mode 100644 index 00000000..ddc144c3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/2022.0.x @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 6e3fe942d6d8e2bedc298097b06f944ff8613fa3 Marcin Grzejszczak 1686912310 +0200 pull: storing head diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/HEAD new file mode 100644 index 00000000..a99311fe --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 5e59b54c95305b5e402f19666f37a91e120810b6 Marcin Grzejszczak 1639063414 +0100 clone: from github.com:spring-cloud/spring-cloud-release.git diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/Jenkins b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/Jenkins new file mode 100644 index 00000000..87a825e3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/Jenkins @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 2b7f449fa7d0e04a786ff097c6b1bfe3f322a28d Marcin Grzejszczak 1643282376 +0100 pull: storing head diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/fix-pom b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/fix-pom new file mode 100644 index 00000000..ddc9976e --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/fix-pom @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 3d7d639afa258af09c5c08fd70322d43c95e4f03 Marcin Grzejszczak 1675782967 +0100 pull: storing head diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/functionForStreamRelease b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/functionForStreamRelease new file mode 100644 index 00000000..1a5a90a3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/functionForStreamRelease @@ -0,0 +1,2 @@ +515f6e98638779b1b1c55d4f732242f4834cd3a1 edf332dd107b84dce1bab96b15ef8b62c874bf1b Marcin Grzejszczak 1643282376 +0100 pull: fast-forward +edf332dd107b84dce1bab96b15ef8b62c874bf1b 1d3ec9b883f8b6c894ff0631d061e7df8f704e5f Marcin Grzejszczak 1651157356 +0200 pull: fast-forward diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/functionForStreamRelease_4.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/functionForStreamRelease_4.0.x new file mode 100644 index 00000000..ba1c2e59 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/functionForStreamRelease_4.0.x @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 3b1a1270cc2a01012f663519fb7d4a1c7a26d394 Marcin Grzejszczak 1643282376 +0100 pull: storing head diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/jenkins-releaser-config b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/jenkins-releaser-config new file mode 100644 index 00000000..79181f2c --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/jenkins-releaser-config @@ -0,0 +1,6 @@ +da4cbaea1a027d0b55fff8f7d798e4012e547cdd 0edf7398e4e68698dc9a2257a57f0892e2648362 Marcin Grzejszczak 1643282376 +0100 pull: fast-forward +0edf7398e4e68698dc9a2257a57f0892e2648362 d2601d8c1eefd01a506c54c2f8cb6ed4492c95c4 Marcin Grzejszczak 1651157356 +0200 pull: fast-forward +d2601d8c1eefd01a506c54c2f8cb6ed4492c95c4 60847c1d46bf8fc761b73337455105765d044965 Marcin Grzejszczak 1653637505 +0200 pull: fast-forward +60847c1d46bf8fc761b73337455105765d044965 4241e281e15c11b769a20606c5973a753c3f9151 Marcin Grzejszczak 1655207117 +0200 pull: fast-forward +4241e281e15c11b769a20606c5973a753c3f9151 04b6612cbeaf621808db2a0a66d6b78cc3bfbe34 Marcin Grzejszczak 1675782967 +0100 pull: fast-forward +04b6612cbeaf621808db2a0a66d6b78cc3bfbe34 c3deede8ccf0d1f58e84159c7e8d0748db104669 Marcin Grzejszczak 1686912310 +0200 pull: fast-forward diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/main b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/main new file mode 100644 index 00000000..fe55546d --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/main @@ -0,0 +1,14 @@ +5e59b54c95305b5e402f19666f37a91e120810b6 36e5c83639f7596c133691e3256ccc4e2e54338e Marcin Grzejszczak 1643282376 +0100 pull: fast-forward +36e5c83639f7596c133691e3256ccc4e2e54338e a8f7edcff2c8117b7a66cd6fb3f62a494df56e4d Marcin Grzejszczak 1643285231 +0100 update by push +a8f7edcff2c8117b7a66cd6fb3f62a494df56e4d 4a38607b690187fcd596c1034b806d945052260b Marcin Grzejszczak 1646726413 +0100 pull --rebase origin main: fast-forward +4a38607b690187fcd596c1034b806d945052260b b7e7e284090324d7f4d327031086c37970318542 Marcin Grzejszczak 1651062150 +0200 pull --rebase origin main: fast-forward +b7e7e284090324d7f4d327031086c37970318542 95baa3924ea1748e2879d5d87af8659ab223c4d8 Marcin Grzejszczak 1651062266 +0200 update by push +95baa3924ea1748e2879d5d87af8659ab223c4d8 bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a Marcin Grzejszczak 1651064698 +0200 update by push +bf1cf4ab4843de5837b48ae7f6cbdccd069c0d3a da95978f91a608cab81aa2020e511e9fce0d3593 Marcin Grzejszczak 1655209376 +0200 update by push +da95978f91a608cab81aa2020e511e9fce0d3593 61a279e8d4521d5d2be2c48b8c487758dfa59836 Marcin Grzejszczak 1660729926 +0200 pull --rebase origin main: fast-forward +61a279e8d4521d5d2be2c48b8c487758dfa59836 308c74143e360ad20602d89d1ef51e95ae99a53c Marcin Grzejszczak 1660729938 +0200 update by push +308c74143e360ad20602d89d1ef51e95ae99a53c acccdd1f0d6020fc598fb6ea3c1f660790a3c916 Marcin Grzejszczak 1675782967 +0100 pull: fast-forward +acccdd1f0d6020fc598fb6ea3c1f660790a3c916 ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 Marcin Grzejszczak 1675783569 +0100 update by push +ecbeb68df64f1dcd9a45cd7dac70e857e2cde8a0 5812dd9ca14d6d61a76632662000c7a93c051c79 Marcin Grzejszczak 1675784325 +0100 update by push +5812dd9ca14d6d61a76632662000c7a93c051c79 310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a Marcin Grzejszczak 1686912310 +0200 pull: fast-forward +310b20cbb6f7fca74695b3ff6dc43cf4b3d4ba6a 217e46bc4aa6df83f3a131c344d53bf02dd28a9c Marcin Grzejszczak 1686912337 +0200 update by push diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/netflix4-eureka2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/netflix4-eureka2 new file mode 100644 index 00000000..913ffd5c --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/netflix4-eureka2 @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 b603d412da7e68611e6701926be8a37694e43bd3 Marcin Grzejszczak 1675782967 +0100 pull: storing head diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/unzipping b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/unzipping new file mode 100644 index 00000000..ceb91623 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/remotes/origin/unzipping @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 eedb764786313401e1058a8eda4e653d7eb89e01 Marcin Grzejszczak 1660659309 +0200 update by push diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/stash b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/stash new file mode 100644 index 00000000..c47754b2 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/logs/refs/stash @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 4e030063b617d966e604e13d608fff1bf9170cdb Marcin Grzejszczak 1675784191 +0100 WIP on main: ecbeb68 Disables jar signing for train docs diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/02/f6ff9f70afba1235260d53c684803f85565023 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/02/f6ff9f70afba1235260d53c684803f85565023 new file mode 100644 index 00000000..167d3b88 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/02/f6ff9f70afba1235260d53c684803f85565023 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/8094dc26f8c35964c2d2a961caa35166e820e1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/8094dc26f8c35964c2d2a961caa35166e820e1 new file mode 100644 index 00000000..0f26721c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/8094dc26f8c35964c2d2a961caa35166e820e1 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/a7c66427c0e8766499a7c3e16a2f94baa4e7f8 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/a7c66427c0e8766499a7c3e16a2f94baa4e7f8 new file mode 100644 index 00000000..5af1cc97 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/a7c66427c0e8766499a7c3e16a2f94baa4e7f8 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/c862b65ebfa5e6ce4b305f08a732723086fcb4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/c862b65ebfa5e6ce4b305f08a732723086fcb4 new file mode 100644 index 00000000..344af080 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/03/c862b65ebfa5e6ce4b305f08a732723086fcb4 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/04/0afe01a067d57631f096fe2ee655dde54440f6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/04/0afe01a067d57631f096fe2ee655dde54440f6 new file mode 100644 index 00000000..f6250863 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/04/0afe01a067d57631f096fe2ee655dde54440f6 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/05/cc6abe1c30617cb7d5d285620cd98b14ee44f4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/05/cc6abe1c30617cb7d5d285620cd98b14ee44f4 new file mode 100644 index 00000000..6151db9f Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/05/cc6abe1c30617cb7d5d285620cd98b14ee44f4 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/0e9dd33e2530631fab6b8f69fbcb53cd91e25c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/0e9dd33e2530631fab6b8f69fbcb53cd91e25c new file mode 100644 index 00000000..4a89b259 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/0e9dd33e2530631fab6b8f69fbcb53cd91e25c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/3650255846b01168f6397c7ccd341915e950d0 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/3650255846b01168f6397c7ccd341915e950d0 new file mode 100644 index 00000000..f53ee296 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/3650255846b01168f6397c7ccd341915e950d0 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/86dad89dadf285c219841468fdfec6e6dc67ba b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/86dad89dadf285c219841468fdfec6e6dc67ba new file mode 100644 index 00000000..5d03e0f5 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/06/86dad89dadf285c219841468fdfec6e6dc67ba @@ -0,0 +1,3 @@ +x +1Ec;쬓ɬWbTد7`yũqb*Og +";K"H987r!Gtt6!h5@6: B| ]x:9o|]ο}O/p*.RB :oa}aN \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/21ae0cd9bb4b9387cf407d88de1f93af7ead39 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/21ae0cd9bb4b9387cf407d88de1f93af7ead39 new file mode 100644 index 00000000..551f4aed Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/21ae0cd9bb4b9387cf407d88de1f93af7ead39 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/229069124ec4492fc66c575618f547fa5a0ac6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/229069124ec4492fc66c575618f547fa5a0ac6 new file mode 100644 index 00000000..6968c89b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/229069124ec4492fc66c575618f547fa5a0ac6 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/6c89868e657ca8d8e6a32fd549536f10072a33 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/6c89868e657ca8d8e6a32fd549536f10072a33 new file mode 100644 index 00000000..7e0c2c0a Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/07/6c89868e657ca8d8e6a32fd549536f10072a33 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/08/79e03a4b3239a0748ff9733b8f29301dc6b8ce b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/08/79e03a4b3239a0748ff9733b8f29301dc6b8ce new file mode 100644 index 00000000..44f8e6a0 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/08/79e03a4b3239a0748ff9733b8f29301dc6b8ce differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/09/db338cb8f5d95da86e52d1ce8a50f0141c4a72 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/09/db338cb8f5d95da86e52d1ce8a50f0141c4a72 new file mode 100644 index 00000000..03065309 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/09/db338cb8f5d95da86e52d1ce8a50f0141c4a72 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/50700198c3220841653a1fca6e402dd410d151 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/50700198c3220841653a1fca6e402dd410d151 new file mode 100644 index 00000000..f7bda88b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/50700198c3220841653a1fca6e402dd410d151 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/90ea6340d9ee286cab9014c619e57847ee3ab0 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/90ea6340d9ee286cab9014c619e57847ee3ab0 new file mode 100644 index 00000000..35593e2f Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/90ea6340d9ee286cab9014c619e57847ee3ab0 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/e8820f1a3d46172668eb309d358d80282027dc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/e8820f1a3d46172668eb309d358d80282027dc new file mode 100644 index 00000000..6ba3ea02 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/e8820f1a3d46172668eb309d358d80282027dc @@ -0,0 +1 @@ +x1R0E9&vt3ˤXzVRH8=r삎_ʡz @+(XFb<"^|S[d]{ޭE-6a3`ysJH }.dUZF^Q~2ypW|[/.#xIkK:٨{rNFR9ܼnHRRs>)Iv-MaIO'뮚Zʫ_f2, \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/ee0b1b487479d6a0c35f6020db5cefffa080de b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/ee0b1b487479d6a0c35f6020db5cefffa080de new file mode 100644 index 00000000..089c3269 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0c/ee0b1b487479d6a0c35f6020db5cefffa080de @@ -0,0 +1,2 @@ +xm0Dsfۀ P `D( >J:m0o0u޾&Bɧݚg GcnP4;y >hxcV$'bڭ +]}=ӄGFmr?ֆ\t]Zj˶iMVw~gM \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/25db895e65c784745767f11b67c9549a407ea2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/25db895e65c784745767f11b67c9549a407ea2 new file mode 100644 index 00000000..ae918719 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/25db895e65c784745767f11b67c9549a407ea2 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/b4d8cbf44e05d84c378de7c959a22284ab7287 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/b4d8cbf44e05d84c378de7c959a22284ab7287 new file mode 100644 index 00000000..f2b8fc43 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/b4d8cbf44e05d84c378de7c959a22284ab7287 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/dc66754e49d6b4ea50395245d14350d53b7e52 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/dc66754e49d6b4ea50395245d14350d53b7e52 new file mode 100644 index 00000000..fdce51a7 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/0d/dc66754e49d6b4ea50395245d14350d53b7e52 @@ -0,0 +1,6 @@ +xYMo6WIC(Zm i^)H⸋~lI.P5"g ()X]_\^}~- sA_sӔen~_?gQJyv vl/W"kq|BD4s4Ji*bZexg7B#<Im]븦$s *23%xgd.4c=1T,ZqVWf1 D=9G%2 ҂Y6"JqIrJ0Ҿ3\a Žҵ0F˫(lF,8?"YUs- # +,sB=fdXT*^vKrvŴ Z7㊕J80 $HW[N+G3'O.Ep<=|'e"]'҃)+KF^ܗ%ۓgDpٜlnY{ +'ƥ)K1dpy(UVB~9 +ñWm띨{g2)i7iwƂUI'J +b\™4K8z4#muFxӡ-$aHFyzVg$nٚN{H}E=oHc^h$F}zѶn#yM'ސ>Q^Hνٽmh7$iTL'Ұ)y$F}zqvΑ̝[C^n;{pТӍƪ#ЄW5bɾ^i͡]+1uc7pTBט8GQ'~izM0Xč`D]z'Z|籚{lK={9nNvm]q `}x#b!| O m"hߘc[85́úl"\YTWYyO +K^ccvYd^BXbh^DawIAнLǯxPW&Ao3 s3,][n3^~丄IDX(r['@aс`l΀f֗*_L6R} ! |E8}jC;^/(ĚIgdz +:/j^͇'6e( ,,H"_RMD#LQR7YJuy0QÐ=Nyξ1>3YE5L2S%5zc<$ 6qovEtGreM6”<_ 2;{q]v[>Q=)8^E[,N]5X?gb+ \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1b/55da1b3254bfc61c4a66ca2fa69cf7c880c468 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1b/55da1b3254bfc61c4a66ca2fa69cf7c880c468 new file mode 100644 index 00000000..aaddb4cd Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1b/55da1b3254bfc61c4a66ca2fa69cf7c880c468 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1b/d624e2f2af663c37f84e1d722d8e458ae90b51 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1b/d624e2f2af663c37f84e1d722d8e458ae90b51 new file mode 100644 index 00000000..268eeb43 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1b/d624e2f2af663c37f84e1d722d8e458ae90b51 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1d/33ce3e944d23f146bea6645f01855eefb68925 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1d/33ce3e944d23f146bea6645f01855eefb68925 new file mode 100644 index 00000000..0e9e08a1 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1d/33ce3e944d23f146bea6645f01855eefb68925 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1d/5181fdc7e62f264a26b4dd85f07f31c91120e5 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1d/5181fdc7e62f264a26b4dd85f07f31c91120e5 new file mode 100644 index 00000000..a10068bd Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1d/5181fdc7e62f264a26b4dd85f07f31c91120e5 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1e/3a18a207beb0db35c50b33bf0f42d100c63602 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1e/3a18a207beb0db35c50b33bf0f42d100c63602 new file mode 100644 index 00000000..48bd26a2 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1e/3a18a207beb0db35c50b33bf0f42d100c63602 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1f/4771f5d6eda8ee65a6d6fc44cfdb79a26b9931 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1f/4771f5d6eda8ee65a6d6fc44cfdb79a26b9931 new file mode 100644 index 00000000..a3ff1e18 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1f/4771f5d6eda8ee65a6d6fc44cfdb79a26b9931 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1f/794dfd440917ab658f9feff206f20f0bcecb05 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1f/794dfd440917ab658f9feff206f20f0bcecb05 new file mode 100644 index 00000000..6987ecab Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/1f/794dfd440917ab658f9feff206f20f0bcecb05 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/6b5af59a015aeecd948226e0e3295d769a2ef5 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/6b5af59a015aeecd948226e0e3295d769a2ef5 new file mode 100644 index 00000000..8cc742c6 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/6b5af59a015aeecd948226e0e3295d769a2ef5 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/6e48b678103d4967b6dfeedfdccda1c9a9282f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/6e48b678103d4967b6dfeedfdccda1c9a9282f new file mode 100644 index 00000000..2559d4ae Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/6e48b678103d4967b6dfeedfdccda1c9a9282f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/bb6ff2d09adc855ebd1bcfa780731dbc7d3fbc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/bb6ff2d09adc855ebd1bcfa780731dbc7d3fbc new file mode 100644 index 00000000..929a5a47 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/20/bb6ff2d09adc855ebd1bcfa780731dbc7d3fbc differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/21/7e46bc4aa6df83f3a131c344d53bf02dd28a9c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/21/7e46bc4aa6df83f3a131c344d53bf02dd28a9c new file mode 100644 index 00000000..1ccdee10 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/21/7e46bc4aa6df83f3a131c344d53bf02dd28a9c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/22/4f5592065ed46d90a2f50df528dc553aaa40f4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/22/4f5592065ed46d90a2f50df528dc553aaa40f4 new file mode 100644 index 00000000..e42ff561 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/22/4f5592065ed46d90a2f50df528dc553aaa40f4 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/23/a6aa263f57a2e971e3999f3db84286d215a11c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/23/a6aa263f57a2e971e3999f3db84286d215a11c new file mode 100644 index 00000000..1d6e8c9b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/23/a6aa263f57a2e971e3999f3db84286d215a11c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/26/dd5141b71b49755e522eed005b2d71df2a6e02 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/26/dd5141b71b49755e522eed005b2d71df2a6e02 new file mode 100644 index 00000000..fb44c934 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/26/dd5141b71b49755e522eed005b2d71df2a6e02 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/27/2cd20102faba897a48477fa41a69c69419aa62 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/27/2cd20102faba897a48477fa41a69c69419aa62 new file mode 100644 index 00000000..cd6b4c06 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/27/2cd20102faba897a48477fa41a69c69419aa62 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/38a3bea98d9ae519b4cf7448b39a996e4c528b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/38a3bea98d9ae519b4cf7448b39a996e4c528b new file mode 100644 index 00000000..c212b8f3 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/38a3bea98d9ae519b4cf7448b39a996e4c528b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/8f4fae8e44822bed31479da4c5b1162fc7d0d9 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/8f4fae8e44822bed31479da4c5b1162fc7d0d9 new file mode 100644 index 00000000..3d3607ba Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/8f4fae8e44822bed31479da4c5b1162fc7d0d9 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/ccb89f24b649d1ab74e7d5ccddc6f3b1eba4a0 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/ccb89f24b649d1ab74e7d5ccddc6f3b1eba4a0 new file mode 100644 index 00000000..d1ff4cff Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/28/ccb89f24b649d1ab74e7d5ccddc6f3b1eba4a0 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/29/9ff2bacfd1bc72b424f27db5c6587932dacaa1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/29/9ff2bacfd1bc72b424f27db5c6587932dacaa1 new file mode 100644 index 00000000..28a7df49 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/29/9ff2bacfd1bc72b424f27db5c6587932dacaa1 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/29/b764ce39779cb43844ae8c69886e29071c9371 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/29/b764ce39779cb43844ae8c69886e29071c9371 new file mode 100644 index 00000000..86dc3cd3 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/29/b764ce39779cb43844ae8c69886e29071c9371 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2a/63757edc2373882ccf9d4489d51d4375800dea b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2a/63757edc2373882ccf9d4489d51d4375800dea new file mode 100644 index 00000000..719cea7f --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2a/63757edc2373882ccf9d4489d51d4375800dea @@ -0,0 +1,2 @@ +xKn0 )/b~%:1G o#tvo1fǚ[ܼ_Rw \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2b/28c1bf0bb0dd64a7ebf11165d92007356c64c2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2b/28c1bf0bb0dd64a7ebf11165d92007356c64c2 new file mode 100644 index 00000000..aafb36d4 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2b/28c1bf0bb0dd64a7ebf11165d92007356c64c2 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2b/78bf83e380dc6a31f6a56e571f3d3730bdc5c4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2b/78bf83e380dc6a31f6a56e571f3d3730bdc5c4 new file mode 100644 index 00000000..7aadb190 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2b/78bf83e380dc6a31f6a56e571f3d3730bdc5c4 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2c/1f12e05aace27e02e2678c8f29a132c1767f32 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2c/1f12e05aace27e02e2678c8f29a132c1767f32 new file mode 100644 index 00000000..651db146 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2c/1f12e05aace27e02e2678c8f29a132c1767f32 @@ -0,0 +1 @@ +xMN0YGPˊ 8Dq4v=o^,ÇD`U*[bEDdjDoD5S Ӱ /)g g̖Pa{ \R ӽCxYϙCc3LVI5C?^]]Cܖ6(i<?NMtc[ \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2c/5ac3624227e00cf6437935a42309c3f5c18803 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2c/5ac3624227e00cf6437935a42309c3f5c18803 new file mode 100644 index 00000000..f4cfae08 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2c/5ac3624227e00cf6437935a42309c3f5c18803 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2d/393583430c182faacbee703ae6fcecd9f9876d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2d/393583430c182faacbee703ae6fcecd9f9876d new file mode 100644 index 00000000..5f60abc9 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2d/393583430c182faacbee703ae6fcecd9f9876d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2e/5f36ccf8a03588b7aeef5e8c09cd16e457582a b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2e/5f36ccf8a03588b7aeef5e8c09cd16e457582a new file mode 100644 index 00000000..d38035ba Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2e/5f36ccf8a03588b7aeef5e8c09cd16e457582a differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2e/f6e415e92a358f7ab644d2bc6a2534860b7635 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2e/f6e415e92a358f7ab644d2bc6a2534860b7635 new file mode 100644 index 00000000..6f000f62 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2e/f6e415e92a358f7ab644d2bc6a2534860b7635 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2f/602de99d12863d35f588595ea0b17b53b99f3d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2f/602de99d12863d35f588595ea0b17b53b99f3d new file mode 100644 index 00000000..46ec914c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/2f/602de99d12863d35f588595ea0b17b53b99f3d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/130749086c107872991b4e48360c304d400fa7 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/130749086c107872991b4e48360c304d400fa7 new file mode 100644 index 00000000..8376ad5c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/130749086c107872991b4e48360c304d400fa7 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/2017b3a2ff44b41ca49c7a8b707f7246a1326a b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/2017b3a2ff44b41ca49c7a8b707f7246a1326a new file mode 100644 index 00000000..d5389813 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/2017b3a2ff44b41ca49c7a8b707f7246a1326a differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/8c74143e360ad20602d89d1ef51e95ae99a53c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/8c74143e360ad20602d89d1ef51e95ae99a53c new file mode 100644 index 00000000..6b7c91e3 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/8c74143e360ad20602d89d1ef51e95ae99a53c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/f9f8c51a27423071a048ad91ffe543b3841800 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/f9f8c51a27423071a048ad91ffe543b3841800 new file mode 100644 index 00000000..d2fb3f08 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/30/f9f8c51a27423071a048ad91ffe543b3841800 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/31/0c15aa205982daad64559669e3be6e23fefa65 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/31/0c15aa205982daad64559669e3be6e23fefa65 new file mode 100644 index 00000000..8628f095 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/31/0c15aa205982daad64559669e3be6e23fefa65 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/31/b975e3b7b7dac9d49e862759131227764999a4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/31/b975e3b7b7dac9d49e862759131227764999a4 new file mode 100644 index 00000000..761bb01f --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/31/b975e3b7b7dac9d49e862759131227764999a4 @@ -0,0 +1,2 @@ +xKn0 D)PGI"Hm^n ofn:}M 2G*jٛh$(.cte0t?A>aRa1/gA+̲14sk\e>~u-6^lDvFbNMzcs +Fu_}S \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/32/707a8fb1347c1d6a4d3298f7fd9d00a3b964ab b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/32/707a8fb1347c1d6a4d3298f7fd9d00a3b964ab new file mode 100644 index 00000000..5b0771b7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/32/707a8fb1347c1d6a4d3298f7fd9d00a3b964ab differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/32/cde0944d4c0a3a0c7f29b126972fb66e983047 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/32/cde0944d4c0a3a0c7f29b126972fb66e983047 new file mode 100644 index 00000000..da0c1900 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/32/cde0944d4c0a3a0c7f29b126972fb66e983047 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/33/3e29976ffba5b95f5719ba4c6032be3f630a52 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/33/3e29976ffba5b95f5719ba4c6032be3f630a52 new file mode 100644 index 00000000..7fc77c1c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/33/3e29976ffba5b95f5719ba4c6032be3f630a52 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/33/eef9b68e6517cdf5bf51a7886e67ea5a3d8774 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/33/eef9b68e6517cdf5bf51a7886e67ea5a3d8774 new file mode 100644 index 00000000..aa5a9037 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/33/eef9b68e6517cdf5bf51a7886e67ea5a3d8774 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/34/54c0028460787a5e3facdacdb44f8eb8656a29 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/34/54c0028460787a5e3facdacdb44f8eb8656a29 new file mode 100644 index 00000000..86a20886 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/34/54c0028460787a5e3facdacdb44f8eb8656a29 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/34/97a4fdd867f4ccdac8a25716d7eefda1723e93 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/34/97a4fdd867f4ccdac8a25716d7eefda1723e93 new file mode 100644 index 00000000..83742b8a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/34/97a4fdd867f4ccdac8a25716d7eefda1723e93 @@ -0,0 +1,3 @@ +xAN0EYs +.I .uUʮvvi9=N%ʡz @+(XFb<"^|S[d]{ޭE-6axI^7nCVoPʆՉ,`dssP|N.Q0ja讄UREfhma;*֏$fK*zGX]NT᫞ilӾ9k\)aeo4Y \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/44/d66f06954323d9c6f31862321b7d60f872948e b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/44/d66f06954323d9c6f31862321b7d60f872948e new file mode 100644 index 00000000..1e0ac187 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/44/d66f06954323d9c6f31862321b7d60f872948e differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/656ac26d610c68274390071622980d3f3cb1f3 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/656ac26d610c68274390071622980d3f3cb1f3 new file mode 100644 index 00000000..1230fdb1 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/656ac26d610c68274390071622980d3f3cb1f3 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/c65f651b4bf6921684109f1c2f6f07ebe25f08 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/c65f651b4bf6921684109f1c2f6f07ebe25f08 new file mode 100644 index 00000000..26e383ec Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/c65f651b4bf6921684109f1c2f6f07ebe25f08 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/eea5077a6ba8f468ee56731b8fa1447fb1c854 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/eea5077a6ba8f468ee56731b8fa1447fb1c854 new file mode 100644 index 00000000..b468a114 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/46/eea5077a6ba8f468ee56731b8fa1447fb1c854 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/6e32a6506e90768e0f66efe96b817b424c8d74 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/6e32a6506e90768e0f66efe96b817b424c8d74 new file mode 100644 index 00000000..fc3d13e7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/6e32a6506e90768e0f66efe96b817b424c8d74 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/9d34a865b17822515d2b4443dd153a924cbf71 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/9d34a865b17822515d2b4443dd153a924cbf71 new file mode 100644 index 00000000..8b8b5fa4 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/9d34a865b17822515d2b4443dd153a924cbf71 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/d0a4e11df5be2bfcf490b186c8cc963a85c0d4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/d0a4e11df5be2bfcf490b186c8cc963a85c0d4 new file mode 100644 index 00000000..a6fbcad1 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/47/d0a4e11df5be2bfcf490b186c8cc963a85c0d4 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/48/2c684c59adcb8852001a0d76f7bdcf6be0cb07 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/48/2c684c59adcb8852001a0d76f7bdcf6be0cb07 new file mode 100644 index 00000000..61aa9ddf Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/48/2c684c59adcb8852001a0d76f7bdcf6be0cb07 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/0608d9988888e7b0d48852a1b07c196005826b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/0608d9988888e7b0d48852a1b07c196005826b new file mode 100644 index 00000000..1d1ef7f7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/0608d9988888e7b0d48852a1b07c196005826b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/0abb813481f79f6a3ed346e1e188583180b825 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/0abb813481f79f6a3ed346e1e188583180b825 new file mode 100644 index 00000000..8cf67974 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/0abb813481f79f6a3ed346e1e188583180b825 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/6c8be9464d150ef114a03ef899f245f2c59734 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/6c8be9464d150ef114a03ef899f245f2c59734 new file mode 100644 index 00000000..7829bd02 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/6c8be9464d150ef114a03ef899f245f2c59734 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/c675f4d75b7c92e9de7bf6d1eb18e967a4260c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/c675f4d75b7c92e9de7bf6d1eb18e967a4260c new file mode 100644 index 00000000..be520c6c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/c675f4d75b7c92e9de7bf6d1eb18e967a4260c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/d7a803a5f4df8d3a40d0006a766973dea2d2c4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/d7a803a5f4df8d3a40d0006a766973dea2d2c4 new file mode 100644 index 00000000..a5dc103b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/d7a803a5f4df8d3a40d0006a766973dea2d2c4 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/dea4cf4e77233c77d49fb8a2b4f7d98706859d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/dea4cf4e77233c77d49fb8a2b4f7d98706859d new file mode 100644 index 00000000..3be566b5 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/dea4cf4e77233c77d49fb8a2b4f7d98706859d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/fed2418280adcc6d9b7064a092526dec831e77 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/fed2418280adcc6d9b7064a092526dec831e77 new file mode 100644 index 00000000..3024eb5c --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/49/fed2418280adcc6d9b7064a092526dec831e77 @@ -0,0 +1,2 @@ +xAr0 E)z<@mdXl'iO_^d޺v^<>`ln)ϸ21DzՇ^ؘ~^NS'Ҳ*&ջ(&쒳LbW/O:p=@rUg6r{ ++" 1ݨ6c2%xc(vt>.z髊 nmk[%lKPW⦳?ԏ..mߩVZz\4 \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/38607b690187fcd596c1034b806d945052260b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/38607b690187fcd596c1034b806d945052260b new file mode 100644 index 00000000..5296a5a6 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/38607b690187fcd596c1034b806d945052260b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/3beb0f95523d6f5bd3db807291c3b718eb8c6f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/3beb0f95523d6f5bd3db807291c3b718eb8c6f new file mode 100644 index 00000000..f60c7699 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/3beb0f95523d6f5bd3db807291c3b718eb8c6f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/de3e1cf6fface536dc14006de6597cdd032c3c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/de3e1cf6fface536dc14006de6597cdd032c3c new file mode 100644 index 00000000..2c8b9498 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4a/de3e1cf6fface536dc14006de6597cdd032c3c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/25ebb80080e3f17d28e822e995be515ec3857e b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/25ebb80080e3f17d28e822e995be515ec3857e new file mode 100644 index 00000000..1604108a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/25ebb80080e3f17d28e822e995be515ec3857e @@ -0,0 +1,2 @@ +x;n0D]K.M>,#2FG4Sy +M-"G^'E%q0)MEnњ :Z㕫βo^rxKGY\97K5ZS4FsϷjB[|PQ] \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/6ab259d6a0df43219755707a482b6c8280cafe b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/6ab259d6a0df43219755707a482b6c8280cafe new file mode 100644 index 00000000..cc01ed35 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/6ab259d6a0df43219755707a482b6c8280cafe differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/7785c20dd00f436eadf23a6330dc9ab22fd4fb b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/7785c20dd00f436eadf23a6330dc9ab22fd4fb new file mode 100644 index 00000000..91f09404 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/7785c20dd00f436eadf23a6330dc9ab22fd4fb differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/d5287df95ffa157e0107e9af586539f1dfd2bb b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/d5287df95ffa157e0107e9af586539f1dfd2bb new file mode 100644 index 00000000..650ca44e Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4b/d5287df95ffa157e0107e9af586539f1dfd2bb differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/4e4a706b1fc0e07b1cd54cbbbe6a737fb8111e b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/4e4a706b1fc0e07b1cd54cbbbe6a737fb8111e new file mode 100644 index 00000000..49e043d4 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/4e4a706b1fc0e07b1cd54cbbbe6a737fb8111e differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/503a74ecba7e3dd5b7eede41d13666c11d88b1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/503a74ecba7e3dd5b7eede41d13666c11d88b1 new file mode 100644 index 00000000..ce1e1282 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/503a74ecba7e3dd5b7eede41d13666c11d88b1 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/54b4fb8c89588dda5c6091ba2ebfa3c71d88fb b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/54b4fb8c89588dda5c6091ba2ebfa3c71d88fb new file mode 100644 index 00000000..54efca91 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/54b4fb8c89588dda5c6091ba2ebfa3c71d88fb differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/6e2a5d23556a638e1641ed3f2f4f8ea0e63f76 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/6e2a5d23556a638e1641ed3f2f4f8ea0e63f76 new file mode 100644 index 00000000..7fb537a7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/6e2a5d23556a638e1641ed3f2f4f8ea0e63f76 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/a282625f8536a0f4ae5ba4594766e2afd2e24e b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/a282625f8536a0f4ae5ba4594766e2afd2e24e new file mode 100644 index 00000000..bf4e58ba --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/a282625f8536a0f4ae5ba4594766e2afd2e24e @@ -0,0 +1,4 @@ +xuK@WޚtI ( + +*8)iïI$wwN9un}*2u c"*a"*S,J AETX!$:hXb%J!̋!rģ!1xA  +ṠNдf3k;)sUC1>ӪxIĒ ADrc 0 x.kvIOMct\k6w?}p`luk4O6iAUY6Z3f_cl8 Y1m|^3UkEq 1w m&N88`nt鮽̘ٚm4ZPN:RE7ҹY/S^8"-M[4,@Sxjˠn^7U͚.eO6 \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/e31f01461d5cc16dbb91eccf3dc8bfc0019ae3 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/e31f01461d5cc16dbb91eccf3dc8bfc0019ae3 new file mode 100644 index 00000000..6a3b79f9 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4c/e31f01461d5cc16dbb91eccf3dc8bfc0019ae3 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4d/b8676754926e070eb2eb61fb1d6b3e2f472b9c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4d/b8676754926e070eb2eb61fb1d6b3e2f472b9c new file mode 100644 index 00000000..e31296b8 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/4d/b8676754926e070eb2eb61fb1d6b3e2f472b9c @@ -0,0 +1 @@ +xɽ0P>ŗ0:0[{H%tc4Px$56ɣˈv^($ Ө*\߮ό-Bs#{i6L&)_2]4gC:bX JrNNԡ7,S#!xj: +=JڏfiŪ\7($_lMJKDixi mTZ  +k 9f /m{R]zZZ{-}FTnY]&Ϥ5&3fRr_ Q8U4 87[\Zsmm%ꃫsDB['@ED^HbIw8㊷4_ q0JĺvzĶ(yv5_Tق !URf_N{gmMF7W3ao&amWvW\}өc-r$4ۮ(8t,fV[uiUiSLvLϽ "Ho +lԼPyf~3!vlau?8p}20ؾ2+4hs״$J'VIGNAU# ye.YGG`)޼ iYJ]ͪO̖èevpFgYkl4jvNEdR:1A8`2nFu>6x[#.(U3˖:e,J~Hz"pgFqo?i<jb+TxS \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8c/f64bf9b89682175af661aa7a0e10cd6221b494 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8c/f64bf9b89682175af661aa7a0e10cd6221b494 new file mode 100644 index 00000000..221b9fab Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8c/f64bf9b89682175af661aa7a0e10cd6221b494 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8d/1e1fb51b15be91e8a5d696c42ff995f790e1ef b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8d/1e1fb51b15be91e8a5d696c42ff995f790e1ef new file mode 100644 index 00000000..4b5f8ca1 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8d/1e1fb51b15be91e8a5d696c42ff995f790e1ef differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8d/8a5a301c679ac546a03af575f472f38a379230 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8d/8a5a301c679ac546a03af575f472f38a379230 new file mode 100644 index 00000000..fe878c8e Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8d/8a5a301c679ac546a03af575f472f38a379230 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8e/a23de474970295878160afa0e948b26eff1770 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8e/a23de474970295878160afa0e948b26eff1770 new file mode 100644 index 00000000..b45eedf5 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8e/a23de474970295878160afa0e948b26eff1770 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8f/9106d2c0c1e171a4c1b660e54723d95fbf04e9 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8f/9106d2c0c1e171a4c1b660e54723d95fbf04e9 new file mode 100644 index 00000000..c022a59a Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8f/9106d2c0c1e171a4c1b660e54723d95fbf04e9 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8f/cd3f140369f45a6f0b0c3f665b3ae32477030b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8f/cd3f140369f45a6f0b0c3f665b3ae32477030b new file mode 100644 index 00000000..5776d3c7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/8f/cd3f140369f45a6f0b0c3f665b3ae32477030b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/90/16c1a716b8ed7a483bbf7ded0d24ae745c9a07 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/90/16c1a716b8ed7a483bbf7ded0d24ae745c9a07 new file mode 100644 index 00000000..2cb539eb Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/90/16c1a716b8ed7a483bbf7ded0d24ae745c9a07 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/91/ba5769811cc9ef6d1b566b264296465f32dd91 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/91/ba5769811cc9ef6d1b566b264296465f32dd91 new file mode 100644 index 00000000..a59af6bf Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/91/ba5769811cc9ef6d1b566b264296465f32dd91 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/92/83c6e706278609e1d016eb49f6567c2ddf2cdd b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/92/83c6e706278609e1d016eb49f6567c2ddf2cdd new file mode 100644 index 00000000..f6ccfa0f --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/92/83c6e706278609e1d016eb49f6567c2ddf2cdd @@ -0,0 +1,4 @@ +xSKn0D6c:xIӞ&uyz1G[:AT067 )F ScҫO58xl I, +8\tn"NFr쐳 bNYn>8 +1@!Z!8tE!߉:Yre̦T4C2M:Ï>| G7{WӉ|^4v>hW^oHrxg(O/o${tLGvӋ6F4*iؔ8[HNzH-!ffn=8JjhFcUБMGhBꇁ+AKd_XۿЮ1{*k̉YB(lV&c,Fu0.f=pW-HX=tڽqOBy`涮 0`VkhБM>'tl6W o1-la]?tk, Za'%11,V/!,14/;ठ|WGk +i+g7Qӹnlc`U/bHUrr\B$ +{ ",vhy- +c S0Ç @{`Qgn3KƯj& +mZyЉRvcۡMVUb$y|xn5/Ó +2$/KV &[v()`,ox'I$RyN2v0eG#8/cQOn-;6S'k +S:$ޛ0+[uȺ;fZn#lMJ~CԿGt \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9b/c0bcad408ed8f1fa6fc12bc52fbaed680d3d42 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9b/c0bcad408ed8f1fa6fc12bc52fbaed680d3d42 new file mode 100644 index 00000000..8ed0feb5 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9b/c0bcad408ed8f1fa6fc12bc52fbaed680d3d42 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9c/85da12a9100132bd494cbe1fed1934ccc5422b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9c/85da12a9100132bd494cbe1fed1934ccc5422b new file mode 100644 index 00000000..505f2ef2 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9c/85da12a9100132bd494cbe1fed1934ccc5422b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9c/b22d7a522a04e3239172aeb569f750aa0c4f4d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9c/b22d7a522a04e3239172aeb569f750aa0c4f4d new file mode 100644 index 00000000..82f890c7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9c/b22d7a522a04e3239172aeb569f750aa0c4f4d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9d/8d733710e970183203be6bc3ae34510c9a34a6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9d/8d733710e970183203be6bc3ae34510c9a34a6 new file mode 100644 index 00000000..efac6498 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9d/8d733710e970183203be6bc3ae34510c9a34a6 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9e/51bf00b38833fa2b182f6e3324d93268ce40e2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9e/51bf00b38833fa2b182f6e3324d93268ce40e2 new file mode 100644 index 00000000..271cb234 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9e/51bf00b38833fa2b182f6e3324d93268ce40e2 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9f/2f2e37b98bbdbf2faf51e847e61eb29efc118c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9f/2f2e37b98bbdbf2faf51e847e61eb29efc118c new file mode 100644 index 00000000..0b24e71f Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9f/2f2e37b98bbdbf2faf51e847e61eb29efc118c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9f/c5324712ea9c35d397fa203d2fd8551a77b497 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9f/c5324712ea9c35d397fa203d2fd8551a77b497 new file mode 100644 index 00000000..b5aa380c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/9f/c5324712ea9c35d397fa203d2fd8551a77b497 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a0/064974a7c69115398893127a889872994a56a8 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a0/064974a7c69115398893127a889872994a56a8 new file mode 100644 index 00000000..d46ff691 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a0/064974a7c69115398893127a889872994a56a8 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a1/ccc3ce6aa4096fce42db4b3352952bf83a267e b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a1/ccc3ce6aa4096fce42db4b3352952bf83a267e new file mode 100644 index 00000000..bbe5ab08 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a1/ccc3ce6aa4096fce42db4b3352952bf83a267e differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a3/31ef4c182a2cdf6a745de93d5a234f4e7875b7 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a3/31ef4c182a2cdf6a745de93d5a234f4e7875b7 new file mode 100644 index 00000000..eb9c0ca0 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a3/31ef4c182a2cdf6a745de93d5a234f4e7875b7 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a4/3d2bcbe2e864fb30c83699ee968849465cb34b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a4/3d2bcbe2e864fb30c83699ee968849465cb34b new file mode 100644 index 00000000..b7b19248 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a4/3d2bcbe2e864fb30c83699ee968849465cb34b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a4/ad0f65d4db2a74a5bdb3fc5b8f07fa839b90bd b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a4/ad0f65d4db2a74a5bdb3fc5b8f07fa839b90bd new file mode 100644 index 00000000..b8537dbe Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a4/ad0f65d4db2a74a5bdb3fc5b8f07fa839b90bd differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/ac1c719e7614c28dde318ce62430e694b22751 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/ac1c719e7614c28dde318ce62430e694b22751 new file mode 100644 index 00000000..3fa4588d Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/ac1c719e7614c28dde318ce62430e694b22751 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/c926ec56c65e2d30b099ddddd57303dd198b17 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/c926ec56c65e2d30b099ddddd57303dd198b17 new file mode 100644 index 00000000..b283ab95 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/c926ec56c65e2d30b099ddddd57303dd198b17 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/daf87df6e6aa5a53bd88c9d56583b70fcced54 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/daf87df6e6aa5a53bd88c9d56583b70fcced54 new file mode 100644 index 00000000..df26d4d7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a5/daf87df6e6aa5a53bd88c9d56583b70fcced54 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a6/0e73bd141ad8591226cf168eb4d84d13bbddee b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a6/0e73bd141ad8591226cf168eb4d84d13bbddee new file mode 100644 index 00000000..d311961a Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a6/0e73bd141ad8591226cf168eb4d84d13bbddee differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a6/9bf094940276a0e53b474bf36ea6389c4a9a50 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a6/9bf094940276a0e53b474bf36ea6389c4a9a50 new file mode 100644 index 00000000..adb55615 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a6/9bf094940276a0e53b474bf36ea6389c4a9a50 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a7/d8ad7a1164e0474028918a07d61595e46c2b46 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a7/d8ad7a1164e0474028918a07d61595e46c2b46 new file mode 100644 index 00000000..72f8a4ea Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a7/d8ad7a1164e0474028918a07d61595e46c2b46 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/1395dbf48e66c0a4eec03d46a0281eff7e9e23 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/1395dbf48e66c0a4eec03d46a0281eff7e9e23 new file mode 100644 index 00000000..d1d6c52a Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/1395dbf48e66c0a4eec03d46a0281eff7e9e23 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/738d3b86996dd4bb4cea3092c8a4119150ec3f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/738d3b86996dd4bb4cea3092c8a4119150ec3f new file mode 100644 index 00000000..064aa268 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/738d3b86996dd4bb4cea3092c8a4119150ec3f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/f7edcff2c8117b7a66cd6fb3f62a494df56e4d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/f7edcff2c8117b7a66cd6fb3f62a494df56e4d new file mode 100644 index 00000000..bb0eef22 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a8/f7edcff2c8117b7a66cd6fb3f62a494df56e4d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/144c26b6f2216ceacef51a7866e36ed4a5434b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/144c26b6f2216ceacef51a7866e36ed4a5434b new file mode 100644 index 00000000..eac6cefb --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/144c26b6f2216ceacef51a7866e36ed4a5434b @@ -0,0 +1 @@ +x1N0ajbh=Yk;Pp$bcI=g"ɅZ1Wnt@Qd0s`K@œh)q¬osmMڮm~{>'Y -thzOg_ǜozyy̫lp׶벙oWN \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/301d32e8e7ac3df77e707c603e407c3d786eda b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/301d32e8e7ac3df77e707c603e407c3d786eda new file mode 100644 index 00000000..751e10bb Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/301d32e8e7ac3df77e707c603e407c3d786eda differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/5e5198cdbe758cf219aa62a6c9ee09a28b1c0c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/5e5198cdbe758cf219aa62a6c9ee09a28b1c0c new file mode 100644 index 00000000..8b206f9b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/a9/5e5198cdbe758cf219aa62a6c9ee09a28b1c0c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/aa/1e839014bf7bbe627f620e438410cc7c57816e b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/aa/1e839014bf7bbe627f620e438410cc7c57816e new file mode 100644 index 00000000..8dede2e0 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/aa/1e839014bf7bbe627f620e438410cc7c57816e differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/aa/33294e96817a1720f181e49688004a455f989b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/aa/33294e96817a1720f181e49688004a455f989b new file mode 100644 index 00000000..9a5f663c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/aa/33294e96817a1720f181e49688004a455f989b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ab/0b96de9544bb28b1000707145343fdf031d208 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ab/0b96de9544bb28b1000707145343fdf031d208 new file mode 100644 index 00000000..cbcc752d Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ab/0b96de9544bb28b1000707145343fdf031d208 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ac/cf3c1e77679f6400d576650883802959e08b65 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ac/cf3c1e77679f6400d576650883802959e08b65 new file mode 100644 index 00000000..f35a4ac3 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ac/cf3c1e77679f6400d576650883802959e08b65 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ae/b4e2a6d8b22c3f12929480872fe7ef0f1334bb b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ae/b4e2a6d8b22c3f12929480872fe7ef0f1334bb new file mode 100644 index 00000000..ef501c3b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ae/b4e2a6d8b22c3f12929480872fe7ef0f1334bb differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/284375e28ceda87c1dd30a34c9ea536af86c6c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/284375e28ceda87c1dd30a34c9ea536af86c6c new file mode 100644 index 00000000..37f8615e Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/284375e28ceda87c1dd30a34c9ea536af86c6c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/2bee231c8e50a79df6266dcc6fa0dfd0b41399 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/2bee231c8e50a79df6266dcc6fa0dfd0b41399 new file mode 100644 index 00000000..dbf2ecd0 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/2bee231c8e50a79df6266dcc6fa0dfd0b41399 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/9e16cbbf88dcc88ab59f53fe75a885edd2b4b6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/9e16cbbf88dcc88ab59f53fe75a885edd2b4b6 new file mode 100644 index 00000000..ab246cc1 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/9e16cbbf88dcc88ab59f53fe75a885edd2b4b6 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/afef3a0377c15cd83e352910fe28707cf07ace b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/afef3a0377c15cd83e352910fe28707cf07ace new file mode 100644 index 00000000..7f66d496 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/af/afef3a0377c15cd83e352910fe28707cf07ace differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/52975ff176d47f47a52ec605d979de0de6ecf1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/52975ff176d47f47a52ec605d979de0de6ecf1 new file mode 100644 index 00000000..638dc28e Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/52975ff176d47f47a52ec605d979de0de6ecf1 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/54c823af20e9f13ccb7f3daffe9bd905a4a49b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/54c823af20e9f13ccb7f3daffe9bd905a4a49b new file mode 100644 index 00000000..982a141c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/54c823af20e9f13ccb7f3daffe9bd905a4a49b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/7fe74308271677eed33471035fc18c4db5b64f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/7fe74308271677eed33471035fc18c4db5b64f new file mode 100644 index 00000000..f52c8e87 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/7fe74308271677eed33471035fc18c4db5b64f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/fc42faa6a6101acdafa956c2a4d4f25ce9ead1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/fc42faa6a6101acdafa956c2a4d4f25ce9ead1 new file mode 100644 index 00000000..58cca6ac --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b0/fc42faa6a6101acdafa956c2a4d4f25ce9ead1 @@ -0,0 +1 @@ +x]j0S=P+A%7+4nG 73:ozلY!Erр>'*ALRX8$`6Xց(E֖-`̱D1gڷ&kcig_e^"TtW|0BuՇ|>1<[ꗥmo#P: \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b2/5a88b78e87ac7ca10cebd4162907a03b139e7d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b2/5a88b78e87ac7ca10cebd4162907a03b139e7d new file mode 100644 index 00000000..2201d2a9 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b2/5a88b78e87ac7ca10cebd4162907a03b139e7d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b2/f262ea260f538db8061589c417778d1972e7f4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b2/f262ea260f538db8061589c417778d1972e7f4 new file mode 100644 index 00000000..a625fca0 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b2/f262ea260f538db8061589c417778d1972e7f4 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b3/3bc0fee82299dcc4e0c8dbece42c3badb13855 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b3/3bc0fee82299dcc4e0c8dbece42c3badb13855 new file mode 100644 index 00000000..852d2cb3 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b3/3bc0fee82299dcc4e0c8dbece42c3badb13855 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b3/6c155e4e8cc917a35e010c34885c255a93d4be b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b3/6c155e4e8cc917a35e010c34885c255a93d4be new file mode 100644 index 00000000..558cb794 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b3/6c155e4e8cc917a35e010c34885c255a93d4be differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b4/b22111a26174beb18226c8b994c38a4f9e6acb b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b4/b22111a26174beb18226c8b994c38a4f9e6acb new file mode 100644 index 00000000..96589ffb Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b4/b22111a26174beb18226c8b994c38a4f9e6acb differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b4/fae30aad27daf0904edef6e8c439a510a399a5 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b4/fae30aad27daf0904edef6e8c439a510a399a5 new file mode 100644 index 00000000..b896dbe2 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b4/fae30aad27daf0904edef6e8c439a510a399a5 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b5/9d7b2f083e1e7da12749e16c4efcf63e66a8f9 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b5/9d7b2f083e1e7da12749e16c4efcf63e66a8f9 new file mode 100644 index 00000000..349f7e08 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b5/9d7b2f083e1e7da12749e16c4efcf63e66a8f9 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b7/21a53ac9d8ac7be8d67be340564d64c875b284 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b7/21a53ac9d8ac7be8d67be340564d64c875b284 new file mode 100644 index 00000000..8de5bc79 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b7/21a53ac9d8ac7be8d67be340564d64c875b284 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b7/e7e284090324d7f4d327031086c37970318542 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b7/e7e284090324d7f4d327031086c37970318542 new file mode 100644 index 00000000..10ffee57 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b7/e7e284090324d7f4d327031086c37970318542 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b8/077386549993096e1565044bb97e4c00924f2a b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b8/077386549993096e1565044bb97e4c00924f2a new file mode 100644 index 00000000..27adf9c1 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b8/077386549993096e1565044bb97e4c00924f2a @@ -0,0 +1,2 @@ +xSKr0 :ĐvI:YF&О>&Uzzzi| @E}sSs@}[)s茮;!EC?M +c3T\A@Mă擊j׉/,U uTaX?)@px:])6"s`0.VlJpW.f颃Uz?qkO)(S%Ƭ!ˆn'bta9R٭u'5E1R"s}^>+ \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b8/8de90d7545c2ce618e57b0b54bd977feee279b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b8/8de90d7545c2ce618e57b0b54bd977feee279b new file mode 100644 index 00000000..2e71efd6 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b8/8de90d7545c2ce618e57b0b54bd977feee279b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b9/208bf7848f745876e2da897edf7985bdcafc42 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b9/208bf7848f745876e2da897edf7985bdcafc42 new file mode 100644 index 00000000..1341cc52 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b9/208bf7848f745876e2da897edf7985bdcafc42 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b9/90e8a9919a6d165020990a2b76918e0ede602c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b9/90e8a9919a6d165020990a2b76918e0ede602c new file mode 100644 index 00000000..12a439d4 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/b9/90e8a9919a6d165020990a2b76918e0ede602c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ba/13ad86ffca972a9bb7b6f51d8da0303356f769 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ba/13ad86ffca972a9bb7b6f51d8da0303356f769 new file mode 100644 index 00000000..d9a2bb26 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ba/13ad86ffca972a9bb7b6f51d8da0303356f769 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ba/de068e01b6f744224ba6bad6aa5718b735d859 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ba/de068e01b6f744224ba6bad6aa5718b735d859 new file mode 100644 index 00000000..3f17f63a Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ba/de068e01b6f744224ba6bad6aa5718b735d859 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bb/c8eabaa68a0351a2368c5b426b0a01eb9a25db b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bb/c8eabaa68a0351a2368c5b426b0a01eb9a25db new file mode 100644 index 00000000..5ec7248a Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bb/c8eabaa68a0351a2368c5b426b0a01eb9a25db differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bc/15f7c4e1d9294c7198d8bb349e060d2c7857f9 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bc/15f7c4e1d9294c7198d8bb349e060d2c7857f9 new file mode 100644 index 00000000..c32a7c1c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bc/15f7c4e1d9294c7198d8bb349e060d2c7857f9 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bd/fd3dcf272315ba6efec1609ce2e2e1930e3a0e b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bd/fd3dcf272315ba6efec1609ce2e2e1930e3a0e new file mode 100644 index 00000000..1cf069c7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bd/fd3dcf272315ba6efec1609ce2e2e1930e3a0e differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/be/4bb56d712d1c67ba4bd4d68596cf6ca83efdae b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/be/4bb56d712d1c67ba4bd4d68596cf6ca83efdae new file mode 100644 index 00000000..29211dd6 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/be/4bb56d712d1c67ba4bd4d68596cf6ca83efdae differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/be/89d15cf9be21a199d65aef436087e2dcfe1906 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/be/89d15cf9be21a199d65aef436087e2dcfe1906 new file mode 100644 index 00000000..fbe56460 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/be/89d15cf9be21a199d65aef436087e2dcfe1906 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bf/1cf4ab4843de5837b48ae7f6cbdccd069c0d3a b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bf/1cf4ab4843de5837b48ae7f6cbdccd069c0d3a new file mode 100644 index 00000000..56859711 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bf/1cf4ab4843de5837b48ae7f6cbdccd069c0d3a @@ -0,0 +1 @@ +xj0EW>HcY%&GrYAUW~@=)ЪZb˃'AIyrɪ2Z=z$#+TH{ԑ.> Yj{ K.Be+t[tosze%6^FV[= ^d'קL-s:W \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bf/6a31e18360729ae69a141b50a4760745b46eb1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bf/6a31e18360729ae69a141b50a4760745b46eb1 new file mode 100644 index 00000000..75324ed4 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/bf/6a31e18360729ae69a141b50a4760745b46eb1 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c1/fe291ef80357c956b4eb1a0d768fba3874a937 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c1/fe291ef80357c956b4eb1a0d768fba3874a937 new file mode 100644 index 00000000..24ae7b78 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c1/fe291ef80357c956b4eb1a0d768fba3874a937 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/098c1794d00c9604d31c544163e51b28cecf2f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/098c1794d00c9604d31c544163e51b28cecf2f new file mode 100644 index 00000000..a438b231 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/098c1794d00c9604d31c544163e51b28cecf2f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/31b8ec013fd69b1e351c46ef9ec0c33bafa9fb b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/31b8ec013fd69b1e351c46ef9ec0c33bafa9fb new file mode 100644 index 00000000..0f3d5942 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/31b8ec013fd69b1e351c46ef9ec0c33bafa9fb differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/82b4c8abea3afc7c3558a60873c9038b40b692 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/82b4c8abea3afc7c3558a60873c9038b40b692 new file mode 100644 index 00000000..17abd2cf Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/82b4c8abea3afc7c3558a60873c9038b40b692 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/8f8dc5764394c4316c577ce3d6bcbc03428c90 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/8f8dc5764394c4316c577ce3d6bcbc03428c90 new file mode 100644 index 00000000..b14d72a7 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/8f8dc5764394c4316c577ce3d6bcbc03428c90 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/a5a7a7247b066ef9ae1b92b91cc5edb23b170d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/a5a7a7247b066ef9ae1b92b91cc5edb23b170d new file mode 100644 index 00000000..e2578337 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/a5a7a7247b066ef9ae1b92b91cc5edb23b170d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/bc96d0cf44075b7b6c2da70866b80c7e7af8d2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/bc96d0cf44075b7b6c2da70866b80c7e7af8d2 new file mode 100644 index 00000000..83976e90 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c2/bc96d0cf44075b7b6c2da70866b80c7e7af8d2 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c4/43c1348ce50eaad63101e7dac87a8c41fd1fe6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c4/43c1348ce50eaad63101e7dac87a8c41fd1fe6 new file mode 100644 index 00000000..dadf58a4 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c4/43c1348ce50eaad63101e7dac87a8c41fd1fe6 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c4/7e93917665007465891f87aba0770c4a2e185d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c4/7e93917665007465891f87aba0770c4a2e185d new file mode 100644 index 00000000..dab3c1b4 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c4/7e93917665007465891f87aba0770c4a2e185d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c7/97f2b6ccb11d537e90aa6755eec3b8dc90a408 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c7/97f2b6ccb11d537e90aa6755eec3b8dc90a408 new file mode 100644 index 00000000..28e1f869 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c7/97f2b6ccb11d537e90aa6755eec3b8dc90a408 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c7/ed8a406530e2bf76d7a62350deae41afd597dc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c7/ed8a406530e2bf76d7a62350deae41afd597dc new file mode 100644 index 00000000..44037efc Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c7/ed8a406530e2bf76d7a62350deae41afd597dc differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/4a1fb5a949334db79f46096fef43bcab24c3da b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/4a1fb5a949334db79f46096fef43bcab24c3da new file mode 100644 index 00000000..e8538b27 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/4a1fb5a949334db79f46096fef43bcab24c3da differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/bd8d06c54f2ff4cfc92d5ce93aae9bf0bc25fb b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/bd8d06c54f2ff4cfc92d5ce93aae9bf0bc25fb new file mode 100644 index 00000000..c4f0c1c0 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/bd8d06c54f2ff4cfc92d5ce93aae9bf0bc25fb differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/d668fbad94d18ce873b7a5633693e53cbfe62d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/d668fbad94d18ce873b7a5633693e53cbfe62d new file mode 100644 index 00000000..85e22187 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/c8/d668fbad94d18ce873b7a5633693e53cbfe62d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/4b5f25f4b0ffcb392b1281b58e521c9075dc8c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/4b5f25f4b0ffcb392b1281b58e521c9075dc8c new file mode 100644 index 00000000..3f3fd610 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/4b5f25f4b0ffcb392b1281b58e521c9075dc8c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/70c6884e6a7135ccdd5f9894816bf1d274deec b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/70c6884e6a7135ccdd5f9894816bf1d274deec new file mode 100644 index 00000000..46f82712 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/70c6884e6a7135ccdd5f9894816bf1d274deec differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/e1d45cabbf462743f5857fedc8a15606a5057f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/e1d45cabbf462743f5857fedc8a15606a5057f new file mode 100644 index 00000000..105badb1 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ca/e1d45cabbf462743f5857fedc8a15606a5057f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cc/8680247077ae6b331aade8020f679f1affe342 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cc/8680247077ae6b331aade8020f679f1affe342 new file mode 100644 index 00000000..d573f6e8 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cc/8680247077ae6b331aade8020f679f1affe342 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cc/8d3aa70f3109cfbdcfd2bd51d3f4f1af9b1b7b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cc/8d3aa70f3109cfbdcfd2bd51d3f4f1af9b1b7b new file mode 100644 index 00000000..8d57ff00 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cc/8d3aa70f3109cfbdcfd2bd51d3f4f1af9b1b7b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cd/29d45b9f096ff8a3fcd6687ca70da5aac43982 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cd/29d45b9f096ff8a3fcd6687ca70da5aac43982 new file mode 100644 index 00000000..38108a57 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cd/29d45b9f096ff8a3fcd6687ca70da5aac43982 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ce/2a346f2cebcf4814a3bb9874d1c59d606f6c00 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ce/2a346f2cebcf4814a3bb9874d1c59d606f6c00 new file mode 100644 index 00000000..ff603eec Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ce/2a346f2cebcf4814a3bb9874d1c59d606f6c00 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ce/d3ce494d0896380875ec08442d1a516cdb7472 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ce/d3ce494d0896380875ec08442d1a516cdb7472 new file mode 100644 index 00000000..35caea06 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ce/d3ce494d0896380875ec08442d1a516cdb7472 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cf/0e3d80dc8cfb464f5e2c4a874aa43b515acc37 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cf/0e3d80dc8cfb464f5e2c4a874aa43b515acc37 new file mode 100644 index 00000000..d7c47c56 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cf/0e3d80dc8cfb464f5e2c4a874aa43b515acc37 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cf/950edf293172256a0fa560f76406ace7083732 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cf/950edf293172256a0fa560f76406ace7083732 new file mode 100644 index 00000000..0f9e647e Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/cf/950edf293172256a0fa560f76406ace7083732 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/d0/66a330de747f83c2848a675cf122c80f415ec0 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/d0/66a330de747f83c2848a675cf122c80f415ec0 new file mode 100644 index 00000000..5a743f17 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/d0/66a330de747f83c2848a675cf122c80f415ec0 @@ -0,0 +1,2 @@ +xM ]s +&('1xxkf +擛XDR,WRb3.g +7);SnL,-a@n"NۡyWn˶}R=&u͵`\oYZ:%Ci ds{^ӴC~bz]bo`6zW?%^P"ůKS diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f1/a4d83cabefe000be8a14b5d1e936e99cd50511 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f1/a4d83cabefe000be8a14b5d1e936e99cd50511 new file mode 100644 index 00000000..eccd9eac Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f1/a4d83cabefe000be8a14b5d1e936e99cd50511 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f1/b4f746ef3b39220c9521e07f9482cb27946f1b b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f1/b4f746ef3b39220c9521e07f9482cb27946f1b new file mode 100644 index 00000000..ab6ff272 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f1/b4f746ef3b39220c9521e07f9482cb27946f1b differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f2/c2c586472523b65a37c5b3d06f4e1b672310c8 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f2/c2c586472523b65a37c5b3d06f4e1b672310c8 new file mode 100644 index 00000000..79709f99 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f2/c2c586472523b65a37c5b3d06f4e1b672310c8 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f3/3c68be8fe8c6756ad3c45866457177ad762fb6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f3/3c68be8fe8c6756ad3c45866457177ad762fb6 new file mode 100644 index 00000000..bd2abc27 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f3/3c68be8fe8c6756ad3c45866457177ad762fb6 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f3/bbcd67b88fe452d5ec7bc839c845298a6fbd20 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f3/bbcd67b88fe452d5ec7bc839c845298a6fbd20 new file mode 100644 index 00000000..561d2710 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f3/bbcd67b88fe452d5ec7bc839c845298a6fbd20 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/4e4b98484ab21df0a1ce447eb6ef169526863c b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/4e4b98484ab21df0a1ce447eb6ef169526863c new file mode 100644 index 00000000..750ead5c Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/4e4b98484ab21df0a1ce447eb6ef169526863c differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/a9b3e3770f0782f489835108ece8f98a276e6d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/a9b3e3770f0782f489835108ece8f98a276e6d new file mode 100644 index 00000000..59c46b1b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/a9b3e3770f0782f489835108ece8f98a276e6d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/c210e36ce3de492b4f397aae216b56e64aecd2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/c210e36ce3de492b4f397aae216b56e64aecd2 new file mode 100644 index 00000000..b10f1cf8 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/c210e36ce3de492b4f397aae216b56e64aecd2 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/d36a276eff7af6bbf437d3206cf08a3eddb31f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/d36a276eff7af6bbf437d3206cf08a3eddb31f new file mode 100644 index 00000000..47e61c68 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f4/d36a276eff7af6bbf437d3206cf08a3eddb31f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f6/f389d417a567a509338029e903e97d216fb458 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f6/f389d417a567a509338029e903e97d216fb458 new file mode 100644 index 00000000..0ba333e2 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f6/f389d417a567a509338029e903e97d216fb458 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f7/1054c99f8bf11b63a1096aa2b9773c9b3157af b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f7/1054c99f8bf11b63a1096aa2b9773c9b3157af new file mode 100644 index 00000000..87c8916d Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f7/1054c99f8bf11b63a1096aa2b9773c9b3157af differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f7/6ba18a2313e088e6b37cb23c8fa8d72f0578a8 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f7/6ba18a2313e088e6b37cb23c8fa8d72f0578a8 new file mode 100644 index 00000000..18ff4a15 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f7/6ba18a2313e088e6b37cb23c8fa8d72f0578a8 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f8/31be9fd8e54af19bce7a805fbea752fcf19804 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f8/31be9fd8e54af19bce7a805fbea752fcf19804 new file mode 100644 index 00000000..948c6e9e Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f8/31be9fd8e54af19bce7a805fbea752fcf19804 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f8/59441044ad8fa076bb9a73ae6fdcb38388e367 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f8/59441044ad8fa076bb9a73ae6fdcb38388e367 new file mode 100644 index 00000000..31856a02 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f8/59441044ad8fa076bb9a73ae6fdcb38388e367 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f9/916a35c4611597c89ee7417faa36984a66b81f b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f9/916a35c4611597c89ee7417faa36984a66b81f new file mode 100644 index 00000000..ba40ae3d Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f9/916a35c4611597c89ee7417faa36984a66b81f differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f9/e1c899b17559f271c20d6ab377cd010ecc9b53 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f9/e1c899b17559f271c20d6ab377cd010ecc9b53 new file mode 100644 index 00000000..31fd8e6b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/f9/e1c899b17559f271c20d6ab377cd010ecc9b53 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fb/49fe74d6f81682aa48d13c0bd491903d80d315 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fb/49fe74d6f81682aa48d13c0bd491903d80d315 new file mode 100644 index 00000000..68716b0b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fb/49fe74d6f81682aa48d13c0bd491903d80d315 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fc/b88e67849b00619250058691c7a93f5862c13d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fc/b88e67849b00619250058691c7a93f5862c13d new file mode 100644 index 00000000..3d9d0412 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fc/b88e67849b00619250058691c7a93f5862c13d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fd/373f49891e9c23a37c881ccf6a73c5a7d7dbcc b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fd/373f49891e9c23a37c881ccf6a73c5a7d7dbcc new file mode 100644 index 00000000..a490cefe Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fd/373f49891e9c23a37c881ccf6a73c5a7d7dbcc differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fd/885ca86eeb9786a4e7506f96db4076eff86ab8 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fd/885ca86eeb9786a4e7506f96db4076eff86ab8 new file mode 100644 index 00000000..99b1242e Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fd/885ca86eeb9786a4e7506f96db4076eff86ab8 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/0ce871a161e51609c73f71b06173cf7fa52a13 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/0ce871a161e51609c73f71b06173cf7fa52a13 new file mode 100644 index 00000000..95ddd2f6 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/0ce871a161e51609c73f71b06173cf7fa52a13 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/2d898fa77a64bb4c91fa054d473c2c2bfcf387 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/2d898fa77a64bb4c91fa054d473c2c2bfcf387 new file mode 100644 index 00000000..f9080aa2 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/2d898fa77a64bb4c91fa054d473c2c2bfcf387 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/7214ebdc45d7075d70258ed7fc916e08ad99e5 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/7214ebdc45d7075d70258ed7fc916e08ad99e5 new file mode 100644 index 00000000..b140354b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/7214ebdc45d7075d70258ed7fc916e08ad99e5 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/77b17a8d62553e45817b30e88740e4de67504d b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/77b17a8d62553e45817b30e88740e4de67504d new file mode 100644 index 00000000..32f14362 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/77b17a8d62553e45817b30e88740e4de67504d differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/b7ebe515ae45ae55b3eed853827f802d805add b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/b7ebe515ae45ae55b3eed853827f802d805add new file mode 100644 index 00000000..4c8d8ed6 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/fe/b7ebe515ae45ae55b3eed853827f802d805add differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/80772642dd2c1cde7bec23498ecf0194935284 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/80772642dd2c1cde7bec23498ecf0194935284 new file mode 100644 index 00000000..6bb8dcab Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/80772642dd2c1cde7bec23498ecf0194935284 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/a05afbd94d16473dea9623ab1bcb68bd6221ef b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/a05afbd94d16473dea9623ab1bcb68bd6221ef new file mode 100644 index 00000000..711a53aa Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/a05afbd94d16473dea9623ab1bcb68bd6221ef differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/d474221a252203252afced8a0c2b92fbbf6e19 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/d474221a252203252afced8a0c2b92fbbf6e19 new file mode 100644 index 00000000..a7001394 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/ff/d474221a252203252afced8a0c2b92fbbf6e19 differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-863003fdabad534888e69a720057d00f7c0be9e7.idx b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-863003fdabad534888e69a720057d00f7c0be9e7.idx new file mode 100644 index 00000000..a93e4c0b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-863003fdabad534888e69a720057d00f7c0be9e7.idx differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-863003fdabad534888e69a720057d00f7c0be9e7.pack b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-863003fdabad534888e69a720057d00f7c0be9e7.pack new file mode 100644 index 00000000..cab04cc6 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-863003fdabad534888e69a720057d00f7c0be9e7.pack differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-8a8b7c8f795ad5708395d2fbf834651739f0b8b9.idx b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-8a8b7c8f795ad5708395d2fbf834651739f0b8b9.idx new file mode 100644 index 00000000..5ffefe0d Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-8a8b7c8f795ad5708395d2fbf834651739f0b8b9.idx differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-8a8b7c8f795ad5708395d2fbf834651739f0b8b9.pack b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-8a8b7c8f795ad5708395d2fbf834651739f0b8b9.pack new file mode 100644 index 00000000..60fe53ae Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-8a8b7c8f795ad5708395d2fbf834651739f0b8b9.pack differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-a85dca36ac0ad9358e9a448149163b246689fd70.idx b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-a85dca36ac0ad9358e9a448149163b246689fd70.idx new file mode 100644 index 00000000..6e339b45 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-a85dca36ac0ad9358e9a448149163b246689fd70.idx differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-a85dca36ac0ad9358e9a448149163b246689fd70.pack b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-a85dca36ac0ad9358e9a448149163b246689fd70.pack new file mode 100644 index 00000000..2250a579 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-a85dca36ac0ad9358e9a448149163b246689fd70.pack differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-caae46ead89923afa12773c1a5910fb978fdc931.idx b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-caae46ead89923afa12773c1a5910fb978fdc931.idx new file mode 100644 index 00000000..0f1ced4b Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-caae46ead89923afa12773c1a5910fb978fdc931.idx differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-caae46ead89923afa12773c1a5910fb978fdc931.pack b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-caae46ead89923afa12773c1a5910fb978fdc931.pack new file mode 100644 index 00000000..af9cc1e8 Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-caae46ead89923afa12773c1a5910fb978fdc931.pack differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-e0d8624d22c71a72b3f3381ab3e7bb3f1c9eb55a.idx b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-e0d8624d22c71a72b3f3381ab3e7bb3f1c9eb55a.idx new file mode 100644 index 00000000..e711275f Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-e0d8624d22c71a72b3f3381ab3e7bb3f1c9eb55a.idx differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-e0d8624d22c71a72b3f3381ab3e7bb3f1c9eb55a.pack b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-e0d8624d22c71a72b3f3381ab3e7bb3f1c9eb55a.pack new file mode 100644 index 00000000..cd91f4ca Binary files /dev/null and b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/objects/pack/pack-e0d8624d22c71a72b3f3381ab3e7bb3f1c9eb55a.pack differ diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/packed-refs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/packed-refs new file mode 100644 index 00000000..e65b0c09 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/packed-refs @@ -0,0 +1,175 @@ +# pack-refs with: peeled fully-peeled sorted +fb730db9b3999e45c350015c6cf83be35910a159 refs/remotes/origin/1.0.0.M2 +474b03693496665434ab2615d6500bbb0b575a5b refs/remotes/origin/1.0.0.M3 +7fdc875cb2b1620e8bc87ef8a27da2858eef7cd1 refs/remotes/origin/1.0.0.RC1 +75d0bc7cc0995ac76b6cfad962ea54d05262a664 refs/remotes/origin/1.0.0.RELEASE +8e8a2d41b4beb8985919bc5a2bca2aa66374bdbb refs/remotes/origin/1.0.1.RELEASE +59414747ee8c095753a0b8c5641b328f80d47d33 refs/remotes/origin/1.0.2.RELEASE +73ec179d7ce96d5a98c2acd5697cd81c49dfd7d5 refs/remotes/origin/1.0.x +aa85bcc817b537ba5f4de9bff793bfde66746bab refs/remotes/origin/2020.0.x +08c95747e807212c605d758bbb360f6d671b2932 refs/remotes/origin/Angel.SR3 +793378513959416478453f7fbd789302348290d1 refs/remotes/origin/Brixton +7745834b138ffe1f647b14dd3c7d4d71eee8aac3 refs/remotes/origin/Brixton.M1 +f2036f13515dc6aa997cc15827919acec634eaae refs/remotes/origin/Brixton.M2 +6fa5d0230b513ecb2e796baf7a778b68c7b90e89 refs/remotes/origin/Camden +b2477bb56130e85244813d1fe1ff6fc3835d44d9 refs/remotes/origin/Camden.RC1 +e112ef52996d7b564d90e9436b50e6d1bd2af740 refs/remotes/origin/Dalston +df9f8dd8313f3b5d9a2a75ffb737bf328c6ca00d refs/remotes/origin/Edgware +d939787f38d3c3a08f8c8e31e17d142aeffbe426 refs/remotes/origin/Edgware.SR5 +f3fa9e830bcf486accf364eb3fb874dd663f2b49 refs/remotes/origin/Finchley +cbbe80df445961eb193635e63394a3998243281b refs/remotes/origin/Greenwich +77315dbd9adb166b299e4c3ed336d53a62931a15 refs/remotes/origin/Hoxton +911fb79b2526a750d60c857d758dfbb834d3860a refs/remotes/origin/dependabot/maven/commons-io-commons-io-2.8.0 +6d60e974c9f0e454e6c11da99a61bd4cdcfcdea9 refs/remotes/origin/doc-as-pom +4b562d1f115d48170198e75d0bd592579d267a2c refs/remotes/origin/forHoxton.SR5 +515f6e98638779b1b1c55d4f732242f4834cd3a1 refs/remotes/origin/functionForStreamRelease +3dc7bc208faf65ac6eb29031d8d01439f4e08511 refs/remotes/origin/functionForStreamRelease_3.0.x +5f745590cb3f5ed43e9505515760a50075b4a61e refs/remotes/origin/gh-pages +da4cbaea1a027d0b55fff8f7d798e4012e547cdd refs/remotes/origin/jenkins-releaser-config +5e59b54c95305b5e402f19666f37a91e120810b6 refs/remotes/origin/main +8d9248d5a509a1df16f15074a73a2022697128e6 refs/remotes/origin/release/e-scc1355 +fbf3b6368c26bc96b9958036156f37055f69ebf3 refs/remotes/origin/release/f-scc1355 +787d6414e5a3a574b5928d2041668c96f6b903c7 refs/remotes/origin/release/g-scc1355 +72d23f1d5fb5778921b2a9b31bff41d3148c271f refs/remotes/origin/release/sca-0-1-2 +467683cd796c15b79cf55da47ab88ee9e6352d36 refs/remotes/origin/release/sca-0-2-2 +156792a985a3a1227d79c62be957e6f86a3e2787 refs/remotes/origin/release/sca-0-9-0 +962c8772485240a19429740e929ce4ce5f833435 refs/remotes/origin/release/scbuild-3-0-0-M3 +74e070c7815baddd4d0fbd058f91ec4255aa0abe refs/remotes/origin/release/scbuild-Hoxton.SR7 +00cc7687ea4d7589ce6cc5face7f5c35ee53dc39 refs/remotes/origin/release/scnetflix-2.1.6.RELEASE +5da0e1458e208283eac360832a9121775b822608 refs/remotes/origin/releaser-config-hoxton_sr3 +7e67958f4620556fe05e2f6e19f1e40e97a90576 refs/remotes/origin/render_train_docs +8aa3cb92a11adedbc5acfb300e721e0c7c7cd875 refs/remotes/origin/scBuild214 +da994d5600c15389f7fc7aa15f0414660d5343e1 refs/remotes/origin/springCloudBuildRelease +7278841be008eb08c59ed0b5ae0b47ee33630ddd refs/tags/1.0.0.M1 +75d0bc7cc0995ac76b6cfad962ea54d05262a664 refs/tags/Angel.RELEASE +8e8a2d41b4beb8985919bc5a2bca2aa66374bdbb refs/tags/Angel.SR1 +59414747ee8c095753a0b8c5641b328f80d47d33 refs/tags/Angel.SR2 +474b03693496665434ab2615d6500bbb0b575a5b refs/tags/v1.0.0.M3 +7fdc875cb2b1620e8bc87ef8a27da2858eef7cd1 refs/tags/v1.0.0.RC1 +e16c0781559188ef795c75614698966a6b62c6aa refs/tags/v1.0.0.RC2 +34bdaee14455d0a8f2162722ac9c35fd2c8cea92 refs/tags/v1.0.0.RC3 +93e1d3d5aec56a9b3294bb25785a415a56c4d3d2 refs/tags/v1.0.0.RELEASE +a55246b152357b7324198132afb7dc74f1d3d60f refs/tags/v1.0.1.RELEASE +775bfa22bf2f8ae8b190296480ee03404d396806 refs/tags/v2020-1.M1 +85bffac1fbfe973fb224f0d9c99f6d136b3b86c9 refs/tags/v2020.0.0 +6fc7a5081038157dbddad28a402ee3adccb8b7ee refs/tags/v2020.0.0-M1 +bd7042dd6b7cae4832710d748752a9ca3294593e refs/tags/v2020.0.0-M2 +55e25c0918a4f65058745fcb4e5dbff88b43e0df refs/tags/v2020.0.0-M3 +c943d3ebefa65353b08298162ba5d23676edc91c refs/tags/v2020.0.0-M4 +9fa16eadf4568b0ade2730abb73a7c5f29d6e578 refs/tags/v2020.0.0-M5 +4f8c09dbb3eaa7f82a04b480c2fe3e50efc37ddc refs/tags/v2020.0.0-M6 +de14b4b65f78385ddc847c974497cc7f178da139 refs/tags/v2020.0.0-RC1 +79a4c065b325360e8c0c0179a42e0568b522e161 refs/tags/v2020.0.1 +6cb755eac8f0ed7c4c2c7fb52de290b28caa2277 refs/tags/v2020.0.2 +e84ca0a1399ed15ca2de9c075ab33c8e58159ad1 refs/tags/v2020.0.3 +35b210704485e35bc1ea85a3c90bd5cdc13d36bf refs/tags/v2020.0.4 +26c3e2d3254abd6ccf975755e92f11cb850afce0 refs/tags/v2021.0.0 +9e009b01137d7d772383f034e1e69fd2433b924a refs/tags/v2021.0.0-M1 +237f6a32bd48db9a0c066ccf08323e8cfb7e1db3 refs/tags/v2021.0.0-M2 +0cc0f42444deb346a2381d47adba8eb17ba73689 refs/tags/v2021.0.0-M3 +c60612cbfc980a1d8351056ad8a09ce0f36176a2 refs/tags/v2021.0.0-RC1 +05d773f74867550d7b1c5770b228c1378c297bd4 refs/tags/vAngel.SR4 +7745834b138ffe1f647b14dd3c7d4d71eee8aac3 refs/tags/vBrixton.M1 +f2036f13515dc6aa997cc15827919acec634eaae refs/tags/vBrixton.M2 +94fdb6fb3cb94883ce1b2796bf2044499673dd7d refs/tags/vBrixton.M3 +f5b63c2ba2b12ea301b1232346fbb9810e26544a refs/tags/vBrixton.M4 +3ef5b554341221fee3d1758935c9dafac265a76c refs/tags/vBrixton.M5 +52840c26d7c3e663b1f748000289869eebe59101 refs/tags/vBrixton.RC1 +1aad0152d972955b2c26e1b25fb118eeed70bbdf refs/tags/vBrixton.RC2 +bfa1f6c5d21e3fd7fdd6880d5e41629a7f036f88 refs/tags/vBrixton.RELEASE +7fe8e4aed951277365ec54ea14af11e2a3ede8c3 refs/tags/vBrixton.SR1 +10aca045c80852cfca5afa77aef7e1621f348824 refs/tags/vBrixton.SR2 +675b5d53b1237a72e3dcf49ad5f6d1f307789978 refs/tags/vBrixton.SR3 +36ec6d4e210cc1e5305886d672911959ca702494 refs/tags/vBrixton.SR4 +fdbc861e71699a05d05b9cdbb6928a2ed988dc33 refs/tags/vBrixton.SR5 +4ee1ed35291c1d9b7299cf8c058a28c544043ed4 refs/tags/vBrixton.SR6 +8f9ad50dc04f35ae142eebe094bbfaa3848cc7ed refs/tags/vBrixton.SR7 +^477433a25999d04f00bed5a71e026016bb62f107 +e4d44f5a1a67429e37edbb57d3da96bb6717266c refs/tags/vCamden.M1 +928e0d8389dcee60189d6c0eb737ab9376e87f54 refs/tags/vCamden.RC1 +1ab978f42299811efa4953b98a923699c95f6776 refs/tags/vCamden.RELEASE +b54f47595dd9b364b3d8d7ccaf4ffb6d3fd353f1 refs/tags/vCamden.SR1 +fda0b282f276c42d6bf04dde69bb47cf6f0d4f96 refs/tags/vCamden.SR2 +7bf12cda44a386e0c1ad70f40a8fec47037b0a0b refs/tags/vCamden.SR3 +^dd05da06f317a22d8f86911830737b57ca3add5c +08c6cb159e999b062425f21d3ff241ff8716eeee refs/tags/vCamden.SR4 +^461fe2b2571a3edba6f37a4c6f0ea82e25da0c57 +25af4f2162cdf0642c78ea8e63c1744158b6ad1b refs/tags/vCamden.SR5 +0443185eb0d287a8e642a0ed2d4fd1263df6e782 refs/tags/vCamden.SR6 +^73dba9e0f8451117473e54fb10e5d820de7d286d +741fa0d5cc50cdd9439cecba8cd9f87b06528a0a refs/tags/vCamden.SR7 +^7e1f6c6f402132f24442ac939fe8ded5ccff0447 +91881ba86e2f7c9cb12ec883c063e391c7e025d2 refs/tags/vDalston.M1 +ad7898f794ef7c2b9e4b3ffaee3250a02b5094ad refs/tags/vDalston.RC1 +027dbba822fa198e3c4d8d07bbe0d3e0d11ab6c5 refs/tags/vDalston.RELEASE +553f82f0982991a59de5a10ae7bb0322784c380b refs/tags/vDalston.SR1 +cc8d59ad3e5b7ffc9c06a19c93c3aaca524e189e refs/tags/vDalston.SR2 +3e74ae6bce8931cde1e5a2e5ba06e457ad9cc5ae refs/tags/vDalston.SR3 +^e6ce101f44c36bc00921763df74a90dda4e39cfe +71115c00886054ed731164a68f49c6937f0b1dae refs/tags/vDalston.SR4 +^28c14699695a76843a6d1c347b1f21055d83ca62 +3be630f96e4535098b263729a47ca6505e9d7903 refs/tags/vDalston.SR5 +^d989c6b96590a8bafef5c0352908fcd4673836db +f2c00218670f22694068633a84df99eb2b13ad82 refs/tags/vEdgware.M1 +^5fce865896095137266c788a84ba9843f6781882 +e39b986ec68d0a7b8b4a56281adfb9de096def53 refs/tags/vEdgware.RELEASE +a0948c3942961c77634b8b74c44cfbb9f0141b1c refs/tags/vEdgware.SR1 +^35e48e2fd1740ff7ae821fc3e61337c215737bb8 +991b5be3c03921b6790ac7f820ed16ba4c4b7d4b refs/tags/vEdgware.SR2 +^759413db879f79656ed9350e04b26dbc7a133992 +d73bff46e3a9cdd8a6df2d7c25186b74c20ae826 refs/tags/vEdgware.SR3 +^c20a51ae0f0066ea221597b5e86b5b55dca1a2af +8a05a2f6b796777671c88b83526b8af79a1f59e1 refs/tags/vEdgware.SR4 +d60127db27a61ac1b475f207c3e5e3f7d604eb3d refs/tags/vEdgware.SR5 +^e913188e3ad1f2eaff7789d2738c5c27a8d81393 +3a55043d86d982c2ac1f86df7dd6945fa6c41058 refs/tags/vEdgware.SR6 +af82b2d3ba2213dedd431f69e733923fbd81d11e refs/tags/vFinchley.M1 +569b5eb64c4eea9c30dbfd2e8ad1217c70ac9e43 refs/tags/vFinchley.M2 +^fbac1e822c91cf2acfc542a01d2aae758e9143e8 +e7362196ec5a5d9761a2668e4ef91a3ea3345a61 refs/tags/vFinchley.M3 +20bc914bd086d094f19c18cd38101861192a7936 refs/tags/vFinchley.M5 +^2be145fa2dc7a8afe5f379920300b029b439ffeb +3fbd9d7086627a1453c61e92e79259a2f3c3c8c1 refs/tags/vFinchley.M6 +18701f5581a26752c4c8a036efab2037af394228 refs/tags/vFinchley.M7 +^2377cfd5386bc985d6d13bf3d9605249d66538e4 +eecc0e960b8b7e2bfd4c67138d4b88df43f9b7b6 refs/tags/vFinchley.M8 +2ed336bd8719ef2096390d4cb905c1b779046f0c refs/tags/vFinchley.M9 +54ea18c4aee39654dbc4ffdf1808fb79654ec035 refs/tags/vFinchley.RC1 +5a7bacd3db7e16c8cdb58e6ce3b096cb94cd662a refs/tags/vFinchley.RC2 +^04dbea43b6f9b42b8b4b68a04b698df56b99b438 +f7c64759e431b583d5da11422b7b67a2a323c5c8 refs/tags/vFinchley.RELEASE +b3e3ab5f0e3badeaf4fab0d432c8881327c00a16 refs/tags/vFinchley.SR1 +34ea6d4e2e751159589113d25f4a6510e4ed374b refs/tags/vFinchley.SR2 +ce81fa120aef0d00a8c95664b373377eca8de3d7 refs/tags/vFinchley.SR3 +d5671f3c6a9f50d93c41de06915b047d84dc792a refs/tags/vFinchley.SR4 +864aad4350d7c07a3b975d0522cb9f0a3442eec0 refs/tags/vGreenwich.M1 +28ba483beb02b874013eb29a3cdeb09c1394998a refs/tags/vGreenwich.M2 +96ff83431ace468e48b5dfa3215d05b25c83e009 refs/tags/vGreenwich.M3 +c0f6f9acd93dc50051c880568c934a01c70a2092 refs/tags/vGreenwich.RC1 +b5a008184bf4bbacab18c6ac3e6f762fe557dbec refs/tags/vGreenwich.RC2 +b14ede22cb5de30c31cd50aa240cb321197ef8ef refs/tags/vGreenwich.RELEASE +a9c903373dbfe70bf20410d242c026d700886678 refs/tags/vGreenwich.SR1 +36b1fc71be5c290679009dda8873c960632816d7 refs/tags/vGreenwich.SR2 +0933247b6719486fb199a22e3afb0e09302d0dc6 refs/tags/vGreenwich.SR3 +0baa53fc8ef3c193d061c110221e2211510a502f refs/tags/vGreenwich.SR4 +b3e342a9bb0aaacef63c0245b47231056b919576 refs/tags/vGreenwich.SR5 +a70d26e6797ed198408f75d8cd80e8dbbcdb173e refs/tags/vGreenwich.SR6 +12614e25bcbb7732232f83d9afe26c0fcd505fe5 refs/tags/vHoxton.M1 +d0bd817358b8ff6a72bf3a75e089bc9114a24534 refs/tags/vHoxton.M2 +ad327213dd6461725e3c4070a817acd0ed1f7e41 refs/tags/vHoxton.M3 +ca2413e24342112a99b56ef8f80c29fb9c5b7d8a refs/tags/vHoxton.RC1 +f552ac1190c404581ea970f5e921fe68546abd61 refs/tags/vHoxton.RC2 +a4ee4f3fc483f5e85581e88371d5d10165c1c3ff refs/tags/vHoxton.RELEASE +^36bb942336c8d1be411a49380e7545d86d81ded0 +1f1967a496e61b9c9956819185849acd1aaa8972 refs/tags/vHoxton.SR1 +54e7b19339548b47abeec2c5cfcf961887c070b4 refs/tags/vHoxton.SR10 +695b7f2218e0bd449acd7e5672fed1ac573a158e refs/tags/vHoxton.SR11 +cbffd61c43f8cc0857fdd9e8df9e17971d6e321d refs/tags/vHoxton.SR12 +39a07f457cd4413e4018ce0d90ffd261ccc165dd refs/tags/vHoxton.SR2 +94ee5aa3f15bd926f2c0a6a568812165818e5b4d refs/tags/vHoxton.SR3 +2d19dd1179b32aea0bfc2401e235573010493624 refs/tags/vHoxton.SR4 +c687e1a8f48be5bf4d13ebc67590ee6cea6af974 refs/tags/vHoxton.SR5 +79bdd888aaed320f45a5694661e08134eeaad035 refs/tags/vHoxton.SR6 +19dd46f650cec1a16ab26869b627393ab1da84d5 refs/tags/vHoxton.SR7 +8db24efe4b54ed1c56bc6c43bf7f8bfb2a8dca8e refs/tags/vHoxton.SR8 +2c91c04d3d296e237ec48f7cb99c1eaf5589b58a refs/tags/vHoxton.SR9 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/2021.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/2021.0.x new file mode 100644 index 00000000..2a02dbba --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/2021.0.x @@ -0,0 +1 @@ +dd371879d6786a9ce4b85c23e1f7564fe251e499 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/2022.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/2022.0.x new file mode 100644 index 00000000..e09fe659 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/2022.0.x @@ -0,0 +1 @@ +6e3fe942d6d8e2bedc298097b06f944ff8613fa3 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/main b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/main new file mode 100644 index 00000000..43938ffd --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/main @@ -0,0 +1 @@ +0686dad89dadf285c219841468fdfec6e6dc67ba diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/unzipping b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/unzipping new file mode 100644 index 00000000..1d9df376 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/heads/unzipping @@ -0,0 +1 @@ +eedb764786313401e1058a8eda4e653d7eb89e01 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2020.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2020.0.x new file mode 100644 index 00000000..0f1dfcda --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2020.0.x @@ -0,0 +1 @@ +9f0690abd67176c5307abd28542ddd7a07354518 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2021.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2021.0.x new file mode 100644 index 00000000..93692ab6 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2021.0.x @@ -0,0 +1 @@ +36f2070ea645c75fbf26bc660245b29cdc863e25 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2022.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2022.0.x new file mode 100644 index 00000000..e09fe659 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/2022.0.x @@ -0,0 +1 @@ +6e3fe942d6d8e2bedc298097b06f944ff8613fa3 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/HEAD b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/HEAD new file mode 100644 index 00000000..4b0a8759 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +ref: refs/remotes/origin/main diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/Jenkins b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/Jenkins new file mode 100644 index 00000000..b3bbb22f --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/Jenkins @@ -0,0 +1 @@ +2b7f449fa7d0e04a786ff097c6b1bfe3f322a28d diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/fix-pom b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/fix-pom new file mode 100644 index 00000000..92d89439 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/fix-pom @@ -0,0 +1 @@ +3d7d639afa258af09c5c08fd70322d43c95e4f03 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/functionForStreamRelease b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/functionForStreamRelease new file mode 100644 index 00000000..127570bd --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/functionForStreamRelease @@ -0,0 +1 @@ +1d3ec9b883f8b6c894ff0631d061e7df8f704e5f diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/functionForStreamRelease_4.0.x b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/functionForStreamRelease_4.0.x new file mode 100644 index 00000000..bddb3e0a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/functionForStreamRelease_4.0.x @@ -0,0 +1 @@ +3b1a1270cc2a01012f663519fb7d4a1c7a26d394 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/jenkins-releaser-config b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/jenkins-releaser-config new file mode 100644 index 00000000..69c3f422 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/jenkins-releaser-config @@ -0,0 +1 @@ +c3deede8ccf0d1f58e84159c7e8d0748db104669 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/main b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/main new file mode 100644 index 00000000..fbe1186b --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/main @@ -0,0 +1 @@ +217e46bc4aa6df83f3a131c344d53bf02dd28a9c diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/netflix4-eureka2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/netflix4-eureka2 new file mode 100644 index 00000000..56cf07b4 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/netflix4-eureka2 @@ -0,0 +1 @@ +b603d412da7e68611e6701926be8a37694e43bd3 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/unzipping b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/unzipping new file mode 100644 index 00000000..1d9df376 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/remotes/origin/unzipping @@ -0,0 +1 @@ +eedb764786313401e1058a8eda4e653d7eb89e01 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/stash b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/stash new file mode 100644 index 00000000..1209f57b --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/stash @@ -0,0 +1 @@ +4e030063b617d966e604e13d608fff1bf9170cdb diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2020.0.5 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2020.0.5 new file mode 100644 index 00000000..c5131d99 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2020.0.5 @@ -0,0 +1 @@ +315807aa84952c0a1f6fd9f1b2cd5512169adec4 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2020.0.6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2020.0.6 new file mode 100644 index 00000000..602a3699 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2020.0.6 @@ -0,0 +1 @@ +136024fcd361e908e59f3e151a147abab466a251 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.1 new file mode 100644 index 00000000..ed0e6572 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.1 @@ -0,0 +1 @@ +5ee3029e444fe46245c41d5aaf598aa8ea74e9bd diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.2 new file mode 100644 index 00000000..5739135e --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.2 @@ -0,0 +1 @@ +ac2d3d88234950b4c7307664b0957352dc3383fc diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.3 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.3 new file mode 100644 index 00000000..9c877cee --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.3 @@ -0,0 +1 @@ +a331ef4c182a2cdf6a745de93d5a234f4e7875b7 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.4 new file mode 100644 index 00000000..96271050 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.4 @@ -0,0 +1 @@ +b02302fb4b2aa185620d75af0c5093ff0db02470 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.5 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.5 new file mode 100644 index 00000000..6e8fb281 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.5 @@ -0,0 +1 @@ +0e57818ec79894d338c3936459fb7834eeea5f50 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.6 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.6 new file mode 100644 index 00000000..334d0014 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.6 @@ -0,0 +1 @@ +648cf0f44997e77513904a3dacc435e37067c43d diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.7 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.7 new file mode 100644 index 00000000..2b691e19 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2021.0.7 @@ -0,0 +1 @@ +def7358d6ebba59908a4af32647d3e6e9d74df48 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0 new file mode 100644 index 00000000..e5c8a4fe --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0 @@ -0,0 +1 @@ +336f61b222f62626f0a36fa3115da5ee2ee8e49e diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M1 new file mode 100644 index 00000000..c2caa171 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M1 @@ -0,0 +1 @@ +4b25ebb80080e3f17d28e822e995be515ec3857e diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M2 new file mode 100644 index 00000000..c183c4ad --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M2 @@ -0,0 +1 @@ +e417b9146d78949970c4be0afa1269042733bde6 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M3 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M3 new file mode 100644 index 00000000..3cd0317a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M3 @@ -0,0 +1 @@ +2a63757edc2373882ccf9d4489d51d4375800dea diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M4 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M4 new file mode 100644 index 00000000..eb4d2cd6 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M4 @@ -0,0 +1 @@ +ce2a346f2cebcf4814a3bb9874d1c59d606f6c00 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M5 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M5 new file mode 100644 index 00000000..c8273f7c --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-M5 @@ -0,0 +1 @@ +4a9fc2bca92ba43121cd5fa2c24c2771d0df8b1a diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC1 new file mode 100644 index 00000000..e0b30ee9 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC1 @@ -0,0 +1 @@ +e9f45c74bea3bb2d4e6a1fb445f401ed8d3c571d diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC2 new file mode 100644 index 00000000..2c0fda38 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC2 @@ -0,0 +1 @@ +1760909f49131f6a1e65ba6faa5d98a7416c5417 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC3 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC3 new file mode 100644 index 00000000..b26f9ee3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.0-RC3 @@ -0,0 +1 @@ +7f965d3758db4a11c4fedd247e01275690449bbf diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.1 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.1 new file mode 100644 index 00000000..a884996c --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.1 @@ -0,0 +1 @@ +a74639743d950e09f536efda5fdbcbb6f75fa179 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.2 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.2 new file mode 100644 index 00000000..058d8251 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.2 @@ -0,0 +1 @@ +99fd230b4ec2bc771e461228bf72b40ab2f2f4ea diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.3 b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.3 new file mode 100644 index 00000000..63009091 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/git/refs/tags/v2022.0.3 @@ -0,0 +1 @@ +d3d2bbe2be4d578e9ac20c0273c2f4f22fc0ce99 diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/mvnw b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/mvnw new file mode 100755 index 00000000..41c0f0c2 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/mvnw.cmd b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/mvnw.cmd new file mode 100644 index 00000000..86115719 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/pom.xml b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/pom.xml new file mode 100644 index 00000000..1f25f7c3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/pom.xml @@ -0,0 +1,183 @@ + + + 4.0.0 + spring-cloud-starter-build + pom + Spring Cloud Starter Build + Spring Cloud Starter Build + 2023.0.0-SNAPSHOT + + org.springframework.cloud + spring-cloud-build + 4.1.0-SNAPSHOT + + + + + https://github.com/spring-cloud/spring-cloud-release + scm:git:git://github.com/spring-cloud/spring-cloud-release.git + scm:git:ssh://git@github.com/spring-cloud/spring-cloud-release.git + HEAD + + + + starters + + + + spring-cloud-dependencies + spring-cloud-starter-parent + docs + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-rules + + enforce + + + + + + commons-logging:*:* + + true + + + + true + + + + + + io.spring.javaformat + spring-javaformat-maven-plugin + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + org.codehaus.mojo + flatten-maven-plugin + true + + + + flatten + process-resources + + flatten + + + true + oss + + expand + remove + remove + + + + + + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + + + + + all + + spring-cloud-dependencies + spring-cloud-starter-parent + docs + train-docs + + + + train-docs + + train-docs + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/libs-release-local + + false + + + + + + + diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-dependencies/pom.xml b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-dependencies/pom.xml new file mode 100644 index 00000000..41d067c7 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-dependencies/pom.xml @@ -0,0 +1,243 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-dependencies-parent + 4.1.0-SNAPSHOT + + + spring-cloud-dependencies + 2023.0.0-SNAPSHOT + spring-cloud-dependencies + Spring Cloud Dependencies + https://spring.io/projects/spring-cloud + pom + + ${basedir}/../.. + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 3.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.0.7-SNAPSHOT + 3.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 3.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + 4.1.0-SNAPSHOT + + + scm:git:git://github.com/spring-cloud/spring-cloud-release.git/spring-cloud-dependencies + scm:git:ssh://git@github.com/spring-cloud/spring-cloud-release.git/spring-cloud-dependencies + https://github.com/spring-cloud/spring-cloud-release/spring-cloud-dependencies + + + + spring-docs + https://docs.spring.io/spring-cloud/docs/${pom.version}/reference/html/ + + https://github.com/spring-cloud/spring-cloud-release + + + + + + org.springframework.cloud + spring-cloud-commons-dependencies + ${spring-cloud-commons.version} + pom + import + + + org.springframework.cloud + spring-cloud-netflix-dependencies + ${spring-cloud-netflix.version} + pom + import + + + org.springframework.cloud + spring-cloud-stream-dependencies + ${spring-cloud-stream.version} + pom + import + + + org.springframework.cloud + spring-cloud-task-dependencies + ${spring-cloud-task.version} + pom + import + + + org.springframework.cloud + spring-cloud-circuitbreaker-dependencies + ${spring-cloud-circuitbreaker.version} + pom + import + + + org.springframework.cloud + spring-cloud-config-dependencies + ${spring-cloud-config.version} + pom + import + + + org.springframework.cloud + spring-cloud-function-dependencies + ${spring-cloud-function.version} + pom + import + + + org.springframework.cloud + spring-cloud-gateway-dependencies + ${spring-cloud-gateway.version} + pom + import + + + org.springframework.cloud + spring-cloud-consul-dependencies + ${spring-cloud-consul.version} + pom + import + + + org.springframework.cloud + spring-cloud-vault-dependencies + ${spring-cloud-vault.version} + pom + import + + + org.springframework.cloud + spring-cloud-zookeeper-dependencies + ${spring-cloud-zookeeper.version} + pom + import + + + org.springframework.cloud + spring-cloud-bus-dependencies + ${spring-cloud-bus.version} + pom + import + + + org.springframework.cloud + spring-cloud-contract-dependencies + ${spring-cloud-contract.version} + pom + import + + + org.springframework.cloud + spring-cloud-openfeign-dependencies + ${spring-cloud-openfeign.version} + pom + import + + + org.springframework.cloud + spring-cloud-kubernetes-dependencies + ${spring-cloud-kubernetes.version} + pom + import + + + + + + + org.codehaus.mojo + flatten-maven-plugin + false + + + + flatten + process-resources + + flatten + + + true + bom + + expand + keep + keep + remove + + + + + flatten-clean + clean + + clean + + + + + + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + + + diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-dependencies/src/main/resources/META-INF/spring.provides b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-dependencies/src/main/resources/META-INF/spring.provides new file mode 100644 index 00000000..3628be6e --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-dependencies/src/main/resources/META-INF/spring.provides @@ -0,0 +1 @@ +provides: spring-cloud-config-client \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-starter-parent/pom.xml b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-starter-parent/pom.xml new file mode 100644 index 00000000..d538e5b6 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-starter-parent/pom.xml @@ -0,0 +1,157 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.0-SNAPSHOT + + + org.springframework.cloud + spring-cloud-starter-parent + 2023.0.0-SNAPSHOT + spring-cloud-starter-parent + Spring Cloud Starter Parent + pom + https://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + https://www.spring.io + + + ${basedir}/../.. + 2023.0.0-SNAPSHOT + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + https://github.com/spring-cloud + + spring-docs + + scp://static.springframework.org/var/www/domains/springframework.org/static/htdocs/spring-cloud/docs/${project.artifactId}/${project.version} + + + + repo.spring.io + Spring Release Repository + https://repo.spring.io/libs-release-local + + + repo.spring.io + Spring Snapshot Repository + https://repo.spring.io/libs-snapshot-local + + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + + + milestone + + + repo.spring.io + Spring Milestone Repository + https://repo.spring.io/libs-milestone-local + + + + + bintray + + + bintray + Jcenter Repository + https://api.bintray.com/maven/spring/jars/org.springframework.cloud:${bintray.package} + + + + + central + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots/ + + + sonatype-nexus-staging + Nexus Release Repository + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-starter-parent/src/main/resources/META-INF/spring.provides b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-starter-parent/src/main/resources/META-INF/spring.provides new file mode 100644 index 00000000..3628be6e --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/spring-cloud-starter-parent/src/main/resources/META-INF/spring.provides @@ -0,0 +1 @@ +provides: spring-cloud-config-client \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/pom.xml b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/pom.xml new file mode 100644 index 00000000..23a6aa26 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/pom.xml @@ -0,0 +1,130 @@ + + + 4.0.0 + spring-cloud-docs + + org.springframework.cloud + spring-cloud-starter-build + 2023.0.0-SNAPSHOT + + jar + Spring Cloud Release Train Docs + Spring Cloud Release Train Docs + + spring-cloud + ${basedir}/.. + deploy + + 3.8.5 + 4.3.0 + 2.5.3 + 2.11.0 + + none + none + + + + org.springframework + spring-core + + + org.apache.maven + maven-model + ${maven.version} + + + com.github.jknack + handlebars + ${handlebars.version} + + + commons-io + commons-io + ${commons-io.version} + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + docs + + + + org.apache.maven.plugins + maven-surefire-plugin + + + ${maven.multiModuleProjectDirectory}/spring-cloud-dependencies/pom.xml + ${maven.multiModuleProjectDirectory}/spring-cloud-starter-parent/pom.xml + ${maven-deploy-plugin.deployZipUrl} + ${project.build.directory}/unpacked-docs/ + ${project.build.directory}/train-docs/ + + + + + pl.project13.maven + git-commit-id-plugin + + + maven-dependency-plugin + + + maven-resources-plugin + + + org.codehaus.mojo + exec-maven-plugin + + + run-template-generation + prepare-package + + java + + + true + org.springframework.cloud.internal.GenerateReleaseTrainDocs + + ${maven.multiModuleProjectDirectory}/spring-cloud-dependencies/pom.xml + ${maven.multiModuleProjectDirectory}/spring-cloud-starter-parent/pom.xml + https://github.com/spring-cloud/ + ${project.build.directory}/unpacked-docs/ + ${project.build.directory}/train-docs/ + + + + + + + org.asciidoctor + asciidoctor-maven-plugin + + ${project.build.directory}/train-docs/ + + ${project.build.directory}/unpacked-docs + true + + + + + maven-antrun-plugin + + + maven-deploy-plugin + + deploy-file + + + + + + + diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ArtifactFetcher.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ArtifactFetcher.java new file mode 100644 index 00000000..1b3a6e4c --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ArtifactFetcher.java @@ -0,0 +1,141 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.LinkedList; +import java.util.List; + +import org.apache.commons.io.FileUtils; + +import org.springframework.util.FileSystemUtils; + +import static org.springframework.cloud.internal.Logger.error; +import static org.springframework.cloud.internal.Logger.info; + +class ArtifactFetcher { + + private static final int CONNECT_TIMEOUT = 5000; + + private static final int READ_TIMEOUT = 5000; + + private final File outputFolder; + + private final String repoUrl; + + ArtifactFetcher(File outputFolder, String repoUrl) { + this.outputFolder = outputFolder; + this.repoUrl = repoUrl; + } + + File unpackedDocs(Project project) { + String projectName = project.name; + String version = project.version; + List urls = urls(projectName, version); + final File downloadedZipsFolder = new File(outputFolder, "downloaded-zips"); + downloadedZipsFolder.mkdirs(); + File outputZip = new File(downloadedZipsFolder, projectName + ".zip"); + for (String url : urls) { + try { + info(projectName + ": Fetching sources from [" + url + "]. Please wait..."); + FileUtils.copyURLToFile(new URL(url), outputZip, CONNECT_TIMEOUT, READ_TIMEOUT); + info(projectName + ": Successfully fetched a zip from [" + url + "] to [" + outputZip + "]"); + break; + } + catch (IOException ex) { + error(projectName + ": Failed to fetch a zip from [" + url + "]"); + } + } + if (!outputZip.exists()) { + error(projectName + ": Exception occurred while trying to download an artifact with name [" + projectName + + "] and version [" + version + "]"); + return null; + } + return unpackDocs(projectName, outputZip); + } + + private File unpackDocs(String projectName, File outputZip) { + File unpackedDoc = unpackDoc(projectName, outputZip); + info(projectName + ": Unpacked file to [" + unpackedDoc.getAbsolutePath() + "]"); + if (unpackedDoc.isDirectory()) { + String[] subfolders = unpackedDoc.list(); + if (subfolders == null || subfolders.length != 1) { + return unpackedDoc; + } + moveOneFolderUp(unpackedDoc, subfolders[0]); + } + return unpackedDoc; + } + + private void moveOneFolderUp(File unpackedDoc, String subfolder) { + File onlySubfolder = new File(unpackedDoc, subfolder); + try { + FileSystemUtils.copyRecursively(onlySubfolder, unpackedDoc); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + FileSystemUtils.deleteRecursively(onlySubfolder); + } + + private List urls(String projectName, String version) { + ReleaseType releaseType = ReleaseType.fromVersion(version); + String sourcesUrl = this.repoUrl + projectName + "/archive/"; + List sourcesUrls = new LinkedList<>(); + if (releaseType == ReleaseType.SNAPSHOT) { + // 2.0.0-SNAPSHOT or 2.0.0-BUILD-SNAPSHOT -> 2.0.x + String[] splitVersion = version.split("\\."); + sourcesUrls.add(sourcesUrl + splitVersion[0] + "." + splitVersion[1] + ".x.zip"); + // fallback + sourcesUrls.add(sourcesUrl + "main.zip"); + sourcesUrls.add(sourcesUrl + "master.zip"); + } + else { + sourcesUrls.add(sourcesUrl + "v" + version + ".zip"); + sourcesUrls.add(sourcesUrl + version + ".zip"); + } + return sourcesUrls; + } + + private File unpackDoc(String artifactName, File zip) { + File unzippedDocs = new File(outputFolder, artifactName); + unzippedDocs.mkdirs(); + info(artifactName + ": Unpacking from [" + zip + "]"); + ZipCategory.unzipTo(zip, unzippedDocs); + return unzippedDocs; + } + +} + +enum ReleaseType { + + SNAPSHOT, NON_SNAPSHOT; + + static ReleaseType fromVersion(String version) { + if (isSnapshot(version)) { + return ReleaseType.SNAPSHOT; + } + return ReleaseType.NON_SNAPSHOT; + } + + private static boolean isSnapshot(String version) { + return version.contains("SNAPSHOT"); + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ConfigurationPropertiesAggregator.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ConfigurationPropertiesAggregator.java new file mode 100644 index 00000000..8a2ff145 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ConfigurationPropertiesAggregator.java @@ -0,0 +1,63 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.util.StringUtils; + +class ConfigurationPropertiesAggregator { + + private static final List wordsToIgnore = Arrays.asList("|===", "|Name | Default | Description"); + + List mergedConfigurationProperties(Path unpackedDocs) { + try { + return Files.walk(unpackedDocs).filter(path -> path.endsWith("_configprops.adoc")).flatMap(path -> { + try { + return Files.readAllLines(path).stream() + .filter(s -> !StringUtils.isEmpty(s) && !wordsToIgnore.contains(s)).map(s -> { + // |foo|bar|baz -> foo|bar|baz -> split -> + // foo,bar,baz + String[] strings = s.substring(1).split("\\|"); + if (strings.length == 3) { + return new ConfigurationProperty(strings[0].trim(), + strings[1].trim().replace("`", ""), strings[2].trim()); + } + else if (strings.length == 2) { + return new ConfigurationProperty(strings[0].trim(), + strings[1].trim().replace("`", ""), ""); + } + return new ConfigurationProperty(strings[0].trim(), "", ""); + }); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + }).sorted(Comparator.comparing(o -> o.name)).collect(Collectors.toList()); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ConfigurationProperty.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ConfigurationProperty.java new file mode 100644 index 00000000..14934f1e --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ConfigurationProperty.java @@ -0,0 +1,65 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.util.Objects; + +class ConfigurationProperty { + + final String name; + + final String defaultValue; + + final String description; + + ConfigurationProperty(String name, String defaultValue, String description) { + this.name = name; + this.defaultValue = defaultValue; + this.description = description; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ConfigurationProperty that = (ConfigurationProperty) o; + return Objects.equals(name, that.name) && Objects.equals(description, that.description) + && Objects.equals(defaultValue, that.defaultValue); + } + + @Override + public int hashCode() { + return Objects.hash(name, description, defaultValue); + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public String getDefaultValue() { + return defaultValue; + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/GenerateReleaseTrainDocs.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/GenerateReleaseTrainDocs.java new file mode 100644 index 00000000..cf8642ad --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/GenerateReleaseTrainDocs.java @@ -0,0 +1,111 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.File; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; +import java.util.Properties; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import org.apache.maven.model.Model; + +import static org.springframework.cloud.internal.Logger.info; + +public class GenerateReleaseTrainDocs { + + final ExecutorService service; + + public static void main(String... args) { + File bomPath = new File(args[0]); + File starterParentPath = new File(args[1]); + String repoUrl = args[2]; + File unzippedDocs = new File(args[3]); + File generatedTrainDocs = new File(args[4]); + new GenerateReleaseTrainDocs().generate(bomPath, starterParentPath, repoUrl, unzippedDocs, generatedTrainDocs); + } + + GenerateReleaseTrainDocs() { + this.service = Executors.newFixedThreadPool(4); + } + + void generate(File bomPath, File starterParentPath, String repoUrl, File unzippedDocs, File generatedTrainDocs) { + List projects = mavenPropertiesToDocsProjects(bomPath); + info("Found the following projects [" + projects + "]"); + List outputFolders = downloadSources(unzippedDocs, projects, repoUrl); + projects.add(springBootVersion(starterParentPath)); + projects.sort(Comparator.comparing(o -> o.name)); + List configurationProperties = mergeConfigurationProperties(unzippedDocs); + File file = renderAsciidocTemplates(generatedTrainDocs, projects, configurationProperties); + info("Rendered docs templates to [" + file + "]"); + new ResourcesCopier().copy(outputFolders, file); + } + + List mavenPropertiesToDocsProjects(File file) { + Model model = PomReader.readPom(file); + Properties properties = model.getProperties(); + return properties.entrySet().stream().filter(e -> e.getKey().toString().endsWith(".version")) + .map(e -> new Project(e.getKey().toString().replace(".version", ""), e.getValue().toString())) + .collect(Collectors.toCollection(LinkedList::new)); + } + + Project springBootVersion(File file) { + Model model = PomReader.readPom(file); + return new Project("spring-boot", model.getParent().getVersion()); + } + + List downloadSources(File outputFolder, List projects, String repoUrl) { + ArtifactFetcher fetcher = new ArtifactFetcher(outputFolder, repoUrl); + try { + List> futures = new LinkedList<>(); + for (Project project : projects) { + futures.add(service.submit(() -> fetcher.unpackedDocs(project))); + } + List files = futures.stream().map(future -> { + try { + return future.get(5, TimeUnit.MINUTES); + } + catch (Exception e) { + throw new IllegalStateException(e); + } + }).filter(Objects::nonNull).collect(Collectors.toList()); + info("Unpacked docs modules to the following directories [" + files + "]"); + return files; + } + finally { + service.shutdown(); + } + } + + List mergeConfigurationProperties(File outputFolderWithDocs) { + ConfigurationPropertiesAggregator aggregator = new ConfigurationPropertiesAggregator(); + return aggregator.mergedConfigurationProperties(outputFolderWithDocs.toPath()); + } + + File renderAsciidocTemplates(File generatedTrainDocs, List projects, + List configurationProperties) { + TemplateGenerator templateGenerator = new TemplateGenerator(generatedTrainDocs); + return templateGenerator.generate(projects, configurationProperties); + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/HandlebarsHelper.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/HandlebarsHelper.java new file mode 100644 index 00000000..093c88a8 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/HandlebarsHelper.java @@ -0,0 +1,47 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.IOException; + +import com.github.jknack.handlebars.Handlebars; +import com.github.jknack.handlebars.Template; +import com.github.jknack.handlebars.helper.StringHelpers; +import com.github.jknack.handlebars.io.ClassPathTemplateLoader; + +/** + * @author Marcin Grzejszczak + */ +final class HandlebarsHelper { + + private HandlebarsHelper() { + throw new IllegalStateException("Can't instantiate a utility class"); + } + + public static Template template(String templateName) { + try { + Handlebars handlebars = new Handlebars(new ClassPathTemplateLoader("/templates/spring-cloud/")); + handlebars.registerHelper("replace", StringHelpers.replace); + handlebars.registerHelper("capitalizeFirst", StringHelpers.capitalizeFirst); + return handlebars.compile(templateName); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/Logger.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/Logger.java new file mode 100644 index 00000000..41cde9be --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/Logger.java @@ -0,0 +1,33 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +final class Logger { + + private Logger() { + + } + + static void info(String text) { + System.out.println(text); + } + + static void error(String text) { + System.err.println(text); + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/PomReader.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/PomReader.java new file mode 100644 index 00000000..57eb4492 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/PomReader.java @@ -0,0 +1,65 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; +import java.nio.file.Files; + +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; + +/** + * Class that reads poms as {@link Model}. + * + * @author Marcin Grzejszczak + */ +final class PomReader { + + private PomReader() { + throw new IllegalStateException("Shouldn't instantiate a utility class"); + } + + /** + * Returns a parsed POM. + * @param pom location to the pom + * @return parsed model + */ + public static Model readPom(File pom) { + if (!pom.exists()) { + throw new IllegalStateException("File [" + pom.getAbsolutePath() + "] not found"); + } + String fileText = ""; + try (Reader reader = new FileReader(pom)) { + if (pom.isFile()) { + fileText = new String(Files.readAllBytes(pom.toPath())); + } + MavenXpp3Reader xpp3Reader = new MavenXpp3Reader(); + return xpp3Reader.read(reader); + } + catch (XmlPullParserException | IOException e) { + if (pom.isFile() && fileText.length() == 0) { + throw new IllegalStateException("File [" + pom.getAbsolutePath() + "] is empty", e); + } + throw new IllegalStateException("Failed to read file: " + pom.getAbsolutePath(), e); + } + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/Project.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/Project.java new file mode 100644 index 00000000..d6c01cb3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/Project.java @@ -0,0 +1,62 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.util.Objects; + +class Project { + + final String name; + + final String version; + + Project(String name, String version) { + this.name = name; + this.version = version; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Project project = (Project) o; + return Objects.equals(name, project.name) && Objects.equals(version, project.version); + } + + @Override + public int hashCode() { + return Objects.hash(name, version); + } + + public String getName() { + return name; + } + + public String getVersion() { + return version; + } + + @Override + public String toString() { + return "Project{" + "name='" + this.name + '\'' + ", version='" + this.version + '\'' + '}'; + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ResourcesCopier.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ResourcesCopier.java new file mode 100644 index 00000000..e45681bb --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ResourcesCopier.java @@ -0,0 +1,44 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.springframework.util.FileSystemUtils; + +final class ResourcesCopier { + + void copy(List baseDirs, File output) { + File images = new File(output, "images"); + baseDirs.forEach(input -> { + try { + File inputImages = new File(input, "images"); + if (!inputImages.exists()) { + return; + } + Logger.info("Will copy [" + inputImages + "] files to [" + images + "]"); + FileSystemUtils.copyRecursively(inputImages, images); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + }); + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/TemplateGenerator.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/TemplateGenerator.java new file mode 100644 index 00000000..f59f0289 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/TemplateGenerator.java @@ -0,0 +1,93 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import com.github.jknack.handlebars.Template; + +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; + +import static org.springframework.cloud.internal.Logger.info; + +/** + * @author Marcin Grzejszczak + */ +class TemplateGenerator { + + final File outputFolder; + + TemplateGenerator(File outputFolder) { + this.outputFolder = outputFolder; + this.outputFolder.mkdirs(); + } + + File generate(List projects, List configurationProperties) { + PathMatchingResourcePatternResolver resourceLoader = new PathMatchingResourcePatternResolver(); + try { + Resource[] resources = resourceLoader.getResources("templates/spring-cloud/*.hbs"); + List templateProjects = templateProjects(projects); + for (Resource resource : resources) { + File templateFile = resource.getFile(); + File outputFile = new File(outputFolder, renameTemplate(templateFile)); + Template template = template(templateFile.getName().replace(".hbs", "")); + Map map = new HashMap<>(); + map.put("projects", projects); + map.put("springCloudProjects", templateProjects); + map.put("properties", configurationProperties); + String applied = template.apply(map); + Files.write(outputFile.toPath(), applied.getBytes()); + info("Successfully rendered [" + outputFile.getAbsolutePath() + "]"); + } + } + catch (IOException e) { + throw new IllegalStateException(e); + } + return outputFolder; + } + + private List templateProjects(List projects) { + return projects.stream().filter(project -> project.name.startsWith("spring-cloud-")).map(project -> { + return new TemplateProject(project.name, project.version, + "{basedir}/" + project.name + "/docs/src/main/asciidoc/" + project.name + ".adoc[leveloffset=+1]"); + }).collect(Collectors.toCollection(LinkedList::new)); + } + + private String renameTemplate(File templateFile) { + String templateName = templateFile.getName(); + if (templateName.endsWith("-pdf.hbs")) { + return templateName.replace("-pdf.hbs", ".pdfadoc"); + } + else if (templateName.endsWith("-single.hbs")) { + return templateName.replace("-single.hbs", ".htmlsingleadoc"); + } + return templateName.replace(".hbs", ".adoc"); + } + + private Template template(String template) { + return HandlebarsHelper.template(template); + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/TemplateProject.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/TemplateProject.java new file mode 100644 index 00000000..26112d5a --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/TemplateProject.java @@ -0,0 +1,65 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.util.Objects; + +class TemplateProject { + + final String name; + + final String version; + + final String include; + + TemplateProject(String name, String version, String include) { + this.name = name; + this.version = version; + this.include = include; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemplateProject that = (TemplateProject) o; + return Objects.equals(name, that.name) && Objects.equals(version, that.version) + && Objects.equals(include, that.include); + } + + @Override + public int hashCode() { + return Objects.hash(name, version, include); + } + + public String getName() { + return name; + } + + public String getVersion() { + return version; + } + + public String getInclude() { + return include; + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ZipCategory.java b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ZipCategory.java new file mode 100644 index 00000000..7d6444e3 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/java/org/springframework/cloud/internal/ZipCategory.java @@ -0,0 +1,107 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.internal; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipException; +import java.util.zip.ZipInputStream; + +import org.springframework.util.StreamUtils; + +/** + * Based on + * https://github.com/ + * timyates/groovy-common-extensions. + * + * Category for {@link File} that adds a method that allows you to unzip a given file to a + * specified location + * + * @author Marcin Grzejszczak + */ +final class ZipCategory { + + private ZipCategory() { + throw new IllegalStateException("Can't instantiate a utility class"); + } + + /** + * Unzips this file. If the destination directory is not provided, it will + * fall back to this file's parent directory. + * @param self file + * @param destination (optional), the destination directory where this file's content + * will be unzipped to. + * @return a {@link Collection} of unzipped {@link File} objects. + */ + public static Collection unzipTo(File self, File destination) { + checkUnzipDestination(destination); + // if destination directory is not given, we'll fall back to the parent directory + // of 'self' + if (destination == null) { + destination = new File(self.getParent()); + } + List unzippedFiles = new ArrayList<>(); + try (InputStream fileInputStream = Files.newInputStream(self.toPath())) { + try (ZipInputStream zipInput = new ZipInputStream(fileInputStream)) { + for (ZipEntry entry = zipInput.getNextEntry(); entry != null; entry = zipInput.getNextEntry()) { + if (!entry.isDirectory()) { + final File destinationFile = new File(destination, entry.getName()); + /* + * If we see the relative traversal string of ".." we need to make + * sure that the outputdir + name doesn't leave the outputdir. + */ + String zipEntryName = entry.getName(); + if (!destinationFile.toPath().normalize().startsWith(destination.toPath())) { + throw new ZipException("The file " + zipEntryName + + " is trying to leave the target output directory of " + destination); + } + if (destinationFile.getParentFile() != null) { + destinationFile.getParentFile().mkdirs(); + } + try (OutputStream output = Files.newOutputStream(destinationFile.toPath())) { + StreamUtils.copy(zipInput, output); + } + unzippedFiles.add(destinationFile); + } + else { + final File dir = new File(destination, entry.getName()); + dir.mkdirs(); + unzippedFiles.add(dir); + } + } + } + } + catch (IOException e) { + throw new IllegalStateException("Cannot unzip archive", e); + } + return unzippedFiles; + } + + private static void checkUnzipDestination(File file) { + if (file != null && !file.isDirectory()) { + throw new IllegalArgumentException("'destination' has to be a directory."); + } + } + +} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_attributes.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_attributes.hbs new file mode 100644 index 00000000..443fd1e1 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_attributes.hbs @@ -0,0 +1,16 @@ +:doctype: book +:idprefix: +:idseparator: - +:toc: left +:toclevels: 4 +:tabsize: 4 +:numbered: +:sectanchors: +:sectnums: +:icons: font +:hide-uri-scheme: +:docinfo: shared,private +:train-docs: true + +:project-full-name: Spring Cloud +:project-name: spring-cloud \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-attributes.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-attributes.hbs new file mode 100644 index 00000000..787cf159 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-attributes.hbs @@ -0,0 +1,2 @@ +{{#each projects}}:{{name}}-version: {{version}} +{{/each}} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-links.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-links.hbs new file mode 100644 index 00000000..4be4b68b --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-links.hbs @@ -0,0 +1,2 @@ +{{#each springCloudProjects}} https://docs.spring.io/{{name}}/docs/{{version}}/reference/html/[{{name}}] :: {{name}} Reference Documentation, version {{version}} +{{/each}} diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-versions.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-versions.hbs new file mode 100644 index 00000000..6ae15ac5 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/_spring-cloud-versions.hbs @@ -0,0 +1,2 @@ +{{#each projects}} |{{name}}|{{version}} +{{/each}} \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/configprops.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/configprops.hbs new file mode 100644 index 00000000..c292132d --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/configprops.hbs @@ -0,0 +1,7 @@ +|=== +|Name | Default | Description + +{{#each properties}} |{{name}} | `{{defaultValue}}` | {{description}} +{{/each}} + +|=== \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/documentation-overview.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/documentation-overview.hbs new file mode 100644 index 00000000..76543bff --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/documentation-overview.hbs @@ -0,0 +1,38 @@ +[[documentation]] += Spring Cloud Documentation +include::_attributes.adoc[] + +:docs-url: https://docs.spring.io/spring-cloud/docs/{spring-cloud-version} + +This section provides a brief overview of Spring Cloud reference documentation. It serves +as a map for the rest of the document. + + + +[[documentation-about]] +== About the Documentation + +The {project-full-name} reference guide is available as + +* {docs-url}/reference/html[Multi-page HTML] +* {docs-url}/reference/htmlsingle[Single-page HTML] +* {docs-url}/reference/pdf/{project-name}.pdf[PDF] + +Copies of this document may be made for your own use and for distribution to others, +provided that you do not charge any fee for such copies and further provided that each +copy contains this Copyright Notice, whether distributed in print or electronically. + + + +[[documentation-getting-help]] +== Getting Help +If you have trouble with {project-full-name}, we would like to help. + +* Learn the {project-full-name} basics. If you are +starting out with {project-full-name}, try one of the https://spring.io/guides[guides]. +* Ask a question. We monitor https://stackoverflow.com[stackoverflow.com] for questions +tagged with https://stackoverflow.com/tags/spring-cloud[`spring-cloud`]. +* Chat with us at https://gitter.im/spring-cloud/spring-cloud[{project-full-name} Gitter] + +NOTE: All of {project-full-name} is open source, including the documentation. If you find +problems with the docs or if you want to improve them, please get involved. \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/index-single.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/index-single.hbs new file mode 100644 index 00000000..4057ff57 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/index-single.hbs @@ -0,0 +1 @@ +include::spring-cloud.htmlsingleadoc[] diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/index.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/index.hbs new file mode 100644 index 00000000..f642e5a7 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/index.hbs @@ -0,0 +1 @@ +include::spring-cloud.adoc[] diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/legal.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/legal.hbs new file mode 100644 index 00000000..048c5ada --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/legal.hbs @@ -0,0 +1,11 @@ +[legal] += Legal + +{spring-cloud-version} + +Copyright © 2012-2020 + +Copies of this document may be made for your own use and for distribution to +others, provided that you do not charge any fee for such copies and further +provided that each copy contains this Copyright Notice, whether distributed in +print or electronically. \ No newline at end of file diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud-pdf.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud-pdf.hbs new file mode 100644 index 00000000..18449358 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud-pdf.hbs @@ -0,0 +1,57 @@ += Spring Cloud + +include::_attributes.adoc[] +include::_spring-cloud-attributes.adoc[] + +:basedir: {project-root} +:project-full-name: Spring Cloud +:project-name: spring-cloud + +Spring Cloud provides tools for developers to quickly build some of +the common patterns in distributed systems (e.g. configuration +management, service discovery, circuit breakers, intelligent routing, +micro-proxy, control bus). Coordination of +distributed systems leads to boiler plate patterns, and using Spring +Cloud developers can quickly stand up services and applications that +implement those patterns. They will work well in any distributed +environment, including the developer's own laptop, bare metal data +centres, and managed platforms such as Cloud Foundry. + +Release Train Version: *{spring-cloud-version}* + +Supported Boot Version: *{spring-boot-version}* + +== Features + +Spring Cloud focuses on providing good out of box experience for typical use cases +and extensibility mechanism to cover others. + +* Distributed/versioned configuration +* Service registration and discovery +* Routing +* Service-to-service calls +* Load balancing +* Circuit Breakers +* Distributed messaging + +[[cloud-documentation-versions]] +== Release Train Versions + +.Release Train Project Versions +|=== +|Project Name| Project Version + +include::_spring-cloud-versions.adoc[] +|=== + +{{=<% %>=}} +<%#each springCloudProjects%> +:project-root: {basedir}/<%name%> +:project-version: {<%name%>-version} +include::<%include%> +<%/each%> +<%={{ }}=%> + += Appendix: Compendium of Configuration Properties + +include::configprops.adoc[leveloffset=+1] diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud-single.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud-single.hbs new file mode 100644 index 00000000..18449358 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud-single.hbs @@ -0,0 +1,57 @@ += Spring Cloud + +include::_attributes.adoc[] +include::_spring-cloud-attributes.adoc[] + +:basedir: {project-root} +:project-full-name: Spring Cloud +:project-name: spring-cloud + +Spring Cloud provides tools for developers to quickly build some of +the common patterns in distributed systems (e.g. configuration +management, service discovery, circuit breakers, intelligent routing, +micro-proxy, control bus). Coordination of +distributed systems leads to boiler plate patterns, and using Spring +Cloud developers can quickly stand up services and applications that +implement those patterns. They will work well in any distributed +environment, including the developer's own laptop, bare metal data +centres, and managed platforms such as Cloud Foundry. + +Release Train Version: *{spring-cloud-version}* + +Supported Boot Version: *{spring-boot-version}* + +== Features + +Spring Cloud focuses on providing good out of box experience for typical use cases +and extensibility mechanism to cover others. + +* Distributed/versioned configuration +* Service registration and discovery +* Routing +* Service-to-service calls +* Load balancing +* Circuit Breakers +* Distributed messaging + +[[cloud-documentation-versions]] +== Release Train Versions + +.Release Train Project Versions +|=== +|Project Name| Project Version + +include::_spring-cloud-versions.adoc[] +|=== + +{{=<% %>=}} +<%#each springCloudProjects%> +:project-root: {basedir}/<%name%> +:project-version: {<%name%>-version} +include::<%include%> +<%/each%> +<%={{ }}=%> + += Appendix: Compendium of Configuration Properties + +include::configprops.adoc[leveloffset=+1] diff --git a/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud.hbs b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud.hbs new file mode 100644 index 00000000..531a3ed4 --- /dev/null +++ b/projects/spring-cloud/src/test/resources/projects/spring-cloud-release-commercial/train-docs/src/main/resources/templates/spring-cloud/spring-cloud.hbs @@ -0,0 +1,44 @@ += Spring Cloud + +include::_attributes.adoc[] +include::_spring-cloud-attributes.adoc[] + +:basedir: {project-root} + +Spring Cloud provides tools for developers to quickly build some of +the common patterns in distributed systems (e.g. configuration +management, service discovery, circuit breakers, intelligent routing, +micro-proxy, control bus). Coordination of +distributed systems leads to boiler plate patterns, and using Spring +Cloud developers can quickly stand up services and applications that +implement those patterns. They will work well in any distributed +environment, including the developer's own laptop, bare metal data +centres, and managed platforms such as Cloud Foundry. + +Release Train Version: *{spring-cloud-version}* + +Supported Boot Version: *{spring-boot-version}* + +== Features + +Spring Cloud focuses on providing good out of box experience for typical use cases +and extensibility mechanism to cover others. + +* Distributed/versioned configuration +* Service registration and discovery +* Routing +* Service-to-service calls +* Load balancing +* Circuit Breakers +* Distributed messaging + +The reference documentation consists of the following sections: + +[horizontal] +<> :: Legal information. +<> :: About the Documentation, Getting Help, First Steps, and more. +include::_spring-cloud-links.adoc[] + += Appendix: Compendium of Configuration Properties + +link:configprops.html[Spring Cloud configuration properties] diff --git a/releaser-core/src/main/java/releaser/internal/Releaser.java b/releaser-core/src/main/java/releaser/internal/Releaser.java index fe8ba8a7..3dadae76 100644 --- a/releaser-core/src/main/java/releaser/internal/Releaser.java +++ b/releaser-core/src/main/java/releaser/internal/Releaser.java @@ -18,11 +18,13 @@ package releaser.internal; import java.io.File; import java.util.List; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import releaser.internal.buildsystem.GradleUpdater; import releaser.internal.buildsystem.ProjectPomUpdater; +import releaser.internal.commercial.ReleaseBundleCreator; import releaser.internal.docs.DocumentationUpdater; import releaser.internal.git.ProjectGitHandler; import releaser.internal.github.ProjectGitHubHandler; @@ -38,6 +40,8 @@ import releaser.internal.template.TemplateGenerator; import org.springframework.util.Assert; +import static releaser.internal.commercial.ReleaseBundleCreator.createReleaseBundleName; + /** * @author Marcin Grzejszczak */ @@ -69,11 +73,13 @@ public class Releaser { private ReleaserProperties releaserProperties; + private ReleaseBundleCreator releaseBundleCreator; + public Releaser(ReleaserProperties releaserProperties, ProjectPomUpdater projectPomUpdater, ProjectCommandExecutor projectCommandExecutor, ProjectGitHandler projectGitHandler, ProjectGitHubHandler projectGitHubHandler, TemplateGenerator templateGenerator, GradleUpdater gradleUpdater, - SaganUpdater saganUpdater, DocumentationUpdater documentationUpdater, - PostReleaseActions postReleaseActions) { + SaganUpdater saganUpdater, DocumentationUpdater documentationUpdater, PostReleaseActions postReleaseActions, + ReleaseBundleCreator releaseBundleCreator) { this.releaserProperties = releaserProperties; this.projectPomUpdater = projectPomUpdater; this.projectCommandExecutor = projectCommandExecutor; @@ -84,6 +90,7 @@ public class Releaser { this.saganUpdater = saganUpdater; this.documentationUpdater = documentationUpdater; this.postReleaseActions = postReleaseActions; + this.releaseBundleCreator = releaseBundleCreator; } public File clonedProjectFromOrg(String projectName) { @@ -377,4 +384,106 @@ public class Releaser { return ExecutionResult.skipped(); } + public ExecutionResult createReleaseBundle(boolean commercial, ProjectVersion versionFromBom, Boolean dryRun, + Map> commercialRepos, String projectName) { + if (!shouldCreateReleaseBundle(dryRun, versionFromBom.isSnapshot(), commercial)) { + return ExecutionResult.skipped(); + } + log.info("\nCreating a release bundle"); + if (!commercialRepos.containsKey(projectName)) { + log.warn("No commercial repos configured for project [{}], double check releaser.bundles.repos", + projectName); + } + List repos = commercialRepos.get(projectName); + log.info("Creating release bundles for project [{}] in repos [{}]", projectName, repos); + try { + if (this.releaseBundleCreator.createReleaseBundle(repos, versionFromBom.version, + createReleaseBundleName(projectName))) { + log.info("\nSuccessfully created a release bundle"); + return ExecutionResult.success(); + } + } + catch (Exception ex) { + log.error("Failed to create a release bundle", ex); + } + return ExecutionResult.unstable(new BuildUnstableException("Failed to create a release bundle")); + } + + private boolean shouldCreateReleaseBundle(boolean dryRun, boolean isSnapshot, boolean commercial) { + if (!dryRun && !isSnapshot && commercial) { + return true; + } + if (dryRun) { + log.info("\nWon't create a release bundle for a dry run"); + } + if (isSnapshot) { + log.info("\nWon't create a release bundle for a SNAPSHOT version"); + } + if (!commercial) { + log.info("\nWon't create a release bundle for a non commercial project"); + } + return false; + } + + public ExecutionResult createReleaseTrainSourceBundle(List projectsWithNewRelease, + boolean isCommercial, boolean dryRun, ProjectVersion projectVersion) { + if (!shouldCreateReleaseBundle(dryRun, projectVersion.isSnapshot(), isCommercial)) { + return ExecutionResult.skipped(); + } + try { + if (this.releaseBundleCreator.createReleaseTrainSourceBundle(projectsWithNewRelease, + projectVersion.version)) { + log.info("\nSuccessfully created a release train source bundle"); + return ExecutionResult.success(); + } + } + catch (Exception ex) { + log.error("Failed to create a release train source bundle", ex); + } + return ExecutionResult.unstable(new BuildUnstableException("Failed to create a release train source bundle")); + } + + public ExecutionResult distributeProjectReleaseBundle(boolean isCommercial, boolean dryRun, + ProjectVersion projectVersion, boolean isMetaRelease) { + if (isMetaRelease) { + log.warn( + "Even though the property to distribute a project release bundle is enabled we are skipping this task because this is a meta-release. " + + "When doing a meta-release the DistributeReleaseTrainSourceBundleTask will take care of distributing individual project release bundles."); + return ExecutionResult.skipped(); + } + if (!shouldCreateReleaseBundle(dryRun, projectVersion.isSnapshot(), isCommercial)) { + return ExecutionResult.skipped(); + } + try { + if (this.releaseBundleCreator.distributeProjectReleaseBundle( + createReleaseBundleName(projectVersion.projectName), projectVersion.version)) { + log.info("\nSuccessfully distributed a project release bundle"); + return ExecutionResult.success(); + } + } + catch (Exception ex) { + log.error("Failed to distribute a project release bundle", ex); + } + return ExecutionResult.unstable(new BuildUnstableException("Failed to distribute a project release bundle")); + } + + public ExecutionResult distributeReleaseTrainSourceBundle(boolean isCommercial, boolean dryRun, + ProjectVersion projectVersion) { + if (!shouldCreateReleaseBundle(dryRun, projectVersion.isSnapshot(), isCommercial)) { + return ExecutionResult.skipped(); + } + try { + if (this.releaseBundleCreator.distributeReleaseTrainSourceBundle(projectVersion.version)) { + log.info("\nSuccessfully distributed a release train source bundle"); + return ExecutionResult.success(); + } + } + catch (Exception ex) { + log.error("Failed to distribute a release train source bundle", ex); + + } + return ExecutionResult + .unstable(new BuildUnstableException("Failed to distribute a release train source bundle")); + } + } diff --git a/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java b/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java index 5176229f..aff6b89f 100644 --- a/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java +++ b/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java @@ -80,6 +80,8 @@ public class ReleaserProperties implements Serializable { private boolean commercial = false; + private Bundles bundles = new Bundles(); + /** * Project name to its version - overrides all versions retrieved from a release train * repository like Spring Cloud Release. @@ -208,12 +210,21 @@ public class ReleaserProperties implements Serializable { this.commercial = commercial; } + public Bundles getBundles() { + return bundles; + } + + public void setBundles(Bundles bundles) { + this.bundles = bundles; + } + @Override public String toString() { return "ReleaserProperties{" + "workingDir='" + this.workingDir + '\'' + ", git=" + this.git + ", pom=" + this.pom + ", maven=" + this.maven + ", gradle=" + this.gradle + ", sagan=" + this.sagan + ", fixedVersions=" + this.fixedVersions + ", metaRelease=" + this.metaRelease + ", template=" - + this.template + ", versions=" + this.versions + ", commercial=" + this.commercial + '}'; + + this.template + ", versions=" + this.versions + ", commercial=" + this.commercial + ", bundles=" + + this.bundles + '}'; } public ReleaserProperties copy() { @@ -1563,4 +1574,98 @@ public class ReleaserProperties implements Serializable { } + public static class Bundles implements Serializable { + + private boolean createProjectReleaseBundle = false; + + private boolean createReleaseTrainReleaseBundle = false; + + private boolean distributeReleaseTrainSourceBundle = false; + + private boolean distributeProjectReleaseBundle = false; + + private String repoUrl = "https://usw1.packages.broadcom.com"; + + private String repoUsername; + + private String repoAccessToken; + + private Map> repos; + + public boolean isCreateProjectReleaseBundle() { + return createProjectReleaseBundle; + } + + public void setCreateProjectReleaseBundle(boolean createProjectReleaseBundle) { + this.createProjectReleaseBundle = createProjectReleaseBundle; + } + + public boolean isCreateReleaseTrainReleaseBundle() { + return createReleaseTrainReleaseBundle; + } + + public void setCreateReleaseTrainReleaseBundle(boolean createReleaseTrainReleaseBundle) { + this.createReleaseTrainReleaseBundle = createReleaseTrainReleaseBundle; + } + + public boolean isDistributeReleaseTrainSourceBundle() { + return distributeReleaseTrainSourceBundle; + } + + public void setDistributeReleaseTrainSourceBundle(boolean distributeReleaseTrainSourceBundle) { + this.distributeReleaseTrainSourceBundle = distributeReleaseTrainSourceBundle; + } + + public boolean isDistributeProjectReleaseBundle() { + return distributeProjectReleaseBundle; + } + + public void setDistributeProjectReleaseBundle(boolean distributeProjectReleaseBundle) { + this.distributeProjectReleaseBundle = distributeProjectReleaseBundle; + } + + public Map> getRepos() { + return repos; + } + + public void setRepos(Map> repos) { + this.repos = repos; + } + + public String getRepoUrl() { + return repoUrl; + } + + public void setRepoUrl(String repoUrl) { + this.repoUrl = repoUrl; + } + + public String getRepoUsername() { + return repoUsername; + } + + public void setRepoUsername(String repoUsername) { + this.repoUsername = repoUsername; + } + + public String getRepoAccessToken() { + return repoAccessToken; + } + + public void setRepoAccessToken(String repoAccessToken) { + this.repoAccessToken = repoAccessToken; + } + + @Override + public String toString() { + return "Bundles{" + "createProjectReleaseBundle=" + createProjectReleaseBundle + + ", createReleaseTrainReleaseBundle=" + createReleaseTrainReleaseBundle + + ", distributeReleaseTrainSourceBundle=" + distributeReleaseTrainSourceBundle + + ", distributeProjectReleaseBundle=" + distributeProjectReleaseBundle + ", repoUrl='" + repoUrl + + '\'' + ", repoUsername='" + repoUsername + '\'' + ", repoAccessToken='" + repoAccessToken + '\'' + + ", repos=" + repos + '}'; + } + + } + } diff --git a/releaser-core/src/main/java/releaser/internal/buildsystem/CustomBomParser.java b/releaser-core/src/main/java/releaser/internal/buildsystem/CustomBomParser.java index ae9daf03..c2d95cec 100644 --- a/releaser-core/src/main/java/releaser/internal/buildsystem/CustomBomParser.java +++ b/releaser-core/src/main/java/releaser/internal/buildsystem/CustomBomParser.java @@ -28,6 +28,9 @@ import releaser.internal.project.Project; */ public interface CustomBomParser { + /** + * No-op parser. + */ CustomBomParser NO_OP = (thisProjectRoot, properties) -> VersionsFromBom.EMPTY_VERSION; /** diff --git a/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBom.java b/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBom.java index 7fbce8c9..14373e6c 100644 --- a/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBom.java +++ b/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBom.java @@ -37,6 +37,9 @@ import releaser.internal.project.Projects; */ public class VersionsFromBom { + /** + * Empty version. + */ public static final VersionsFromBom EMPTY_VERSION = new VersionsFromBom(); Set projects = new HashSet<>(); diff --git a/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBomBuilder.java b/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBomBuilder.java index 731d2615..af764ad7 100644 --- a/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBomBuilder.java +++ b/releaser-core/src/main/java/releaser/internal/buildsystem/VersionsFromBomBuilder.java @@ -104,4 +104,4 @@ public class VersionsFromBomBuilder { .orElse(VersionsFromBom.EMPTY_VERSION); } -} \ No newline at end of file +} diff --git a/releaser-core/src/main/java/releaser/internal/commercial/ReleaseBundleCreator.java b/releaser-core/src/main/java/releaser/internal/commercial/ReleaseBundleCreator.java new file mode 100644 index 00000000..8ccc99dc --- /dev/null +++ b/releaser-core/src/main/java/releaser/internal/commercial/ReleaseBundleCreator.java @@ -0,0 +1,179 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.commercial; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.jfrog.artifactory.client.Artifactory; +import org.jfrog.artifactory.client.ArtifactoryClientBuilder; +import org.jfrog.artifactory.client.ArtifactoryRequest; +import org.jfrog.artifactory.client.ArtifactoryResponse; +import org.jfrog.artifactory.client.aql.AqlItem; +import org.jfrog.artifactory.client.aql.AqlQueryBuilder; +import org.jfrog.artifactory.client.impl.ArtifactoryRequestImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import releaser.internal.ReleaserProperties; +import releaser.internal.project.ProjectVersion; + +/** + * @author Ryan Baxter + */ +public class ReleaseBundleCreator { + + private static final Logger log = LoggerFactory.getLogger(ReleaseBundleCreator.class); + + public static final String RELEASE_TRAIN_BUNDLE_NAME = "TNZ-spring-cloud-commercial-release"; + + private final Artifactory artifactory; + + private final ObjectMapper objectMapper; + + public ReleaseBundleCreator(ReleaserProperties properties) { + log.info("Creating Artifactory client with URL [{}]", properties.getBundles().getRepoUrl()); + log.info("Creating Artifactory client with username [{}]", properties.getBundles().getRepoUsername()); + log.info("Creating Artifactory client with access token [{}]", properties.getBundles().getRepoAccessToken()); + this.artifactory = ArtifactoryClientBuilder.create().setUrl(properties.getBundles().getRepoUrl()) + .setUsername(properties.getBundles().getRepoUsername()) + .setAccessToken(properties.getBundles().getRepoAccessToken()).build(); + this.objectMapper = new ObjectMapper(); + } + + public boolean createReleaseBundle(List repos, String version, String releaseBundleName) + throws IOException { + Map json = new HashMap<>(); + json.put("release_bundle_name", releaseBundleName); + json.put("release_bundle_version", version); + json.put("source_type", "aql"); + json.put("source", createAqlMap(repos, version)); + return createReleaseBundle(objectMapper.writeValueAsString(json)); + } + + private Map createAqlMap(List repos, String version) { + String aql = createAql(repos, version); + Map aqlObject = new HashMap<>(); + aqlObject.put("aql", aql); + return aqlObject; + } + + private String createAql(List repos, String version) { + AqlQueryBuilder builder = new AqlQueryBuilder() + .item(AqlItem.aqlItem("repo", AqlItem.aqlItem("$eq", "spring-enterprise-maven-prod-local"))); + + AqlItem[] items = new AqlItem[repos.size()]; + for (String repo : repos) { + items[repos.indexOf(repo)] = AqlItem.match("path", repo + "/" + version); + } + return builder.or(items).asc("path", "name").build(); + } + + public boolean createReleaseBundle(String json) throws IOException { + log.info("Creating release bundle with JSON [{}]", json); + + ArtifactoryRequest aqlRequest = new ArtifactoryRequestImpl().method(ArtifactoryRequest.Method.POST) + .apiUrl("lifecycle/api/v2/release_bundle").addQueryParam("project", "spring") + .addHeader("X-JFrog-Signing-Key-Name", "packagesKey").requestType(ArtifactoryRequest.ContentType.JSON) + .responseType(ArtifactoryRequest.ContentType.JSON).requestBody(json); + return makeArtifactoryRequest(aqlRequest); + } + + public boolean createReleaseTrainSourceBundle(List projectsReleased, String version) + throws IOException { + log.info("Creating release train source bundle for projects {}", projectsReleased); + Map json = new HashMap<>(); + json.put("release_bundle_name", RELEASE_TRAIN_BUNDLE_NAME); + json.put("release_bundle_version", version); + json.put("skip_docker_manifest_resolution", false); + json.put("source_type", "release_bundles"); + json.put("source", createReleaseBundlesJson(projectsReleased)); + return createReleaseBundle(objectMapper.writeValueAsString(json)); + } + + private Map createReleaseBundlesJson(List projectsReleased) { + Map json = new HashMap<>(); + List> releaseBundles = new ArrayList<>(); + projectsReleased.forEach(project -> releaseBundles.add(createReleaseBundleJson(project))); + json.put("release_bundles", releaseBundles); + return json; + } + + private Map createReleaseBundleJson(ProjectVersion project) { + Map json = new HashMap<>(); + json.put("project_key", "spring"); + json.put("repository_key", "spring-release-bundles-v2"); + json.put("release_bundle_name", createReleaseBundleName(project.projectName)); + json.put("release_bundle_version", project.version); + return json; + } + + public static String createReleaseBundleName(String projectName) { + return "TNZ-" + projectName + "-commercial"; + } + + public boolean distributeReleaseTrainSourceBundle(String version) throws IOException { + return distributeReleaseBundle(RELEASE_TRAIN_BUNDLE_NAME, version, + objectMapper.writeValueAsString(createDistributionJson())); + } + + public boolean distributeReleaseBundle(String releaseBundleName, String version, String json) throws IOException { + log.info("Distributing release bundle with name [{}] and version[{}] and JSON data [{}]", releaseBundleName, + version, json); + ArtifactoryRequest request = new ArtifactoryRequestImpl().method(ArtifactoryRequest.Method.POST) + .apiUrl("lifecycle/api/v2/distribution/distribute/" + releaseBundleName + "/" + version) + .addQueryParam("project", "spring").requestType(ArtifactoryRequest.ContentType.JSON) + .responseType(ArtifactoryRequest.ContentType.JSON).requestBody(json); + return makeArtifactoryRequest(request); + } + + private boolean makeArtifactoryRequest(ArtifactoryRequest request) throws IOException { + ArtifactoryResponse response = artifactory.restCall(request); + if (!response.isSuccessResponse()) { + log.warn("Artifactory request {} failed {}", request, response.getRawBody()); + } + else { + log.info("Artifactory request succeeded {}", response.getRawBody()); + } + return response.isSuccessResponse(); + } + + private Map createDistributionJson() { + Map json = new HashMap<>(); + json.put("auto_create_missing_repositories", "false"); + json.put("distribution_rules", List.of(Collections.singletonMap("site_name", "JP-SaaS"))); + json.put("modifications", createMappings()); + return json; + } + + private Map createMappings() { + Map mappings = new HashMap<>(); + mappings.put("input", "spring-enterprise-maven-prod-local/(.*)"); + mappings.put("output", "spring-enterprise/$1"); + List> mappingsArray = List.of(mappings); + return Collections.singletonMap("mappings", mappingsArray); + } + + public boolean distributeProjectReleaseBundle(String projectName, String version) throws IOException { + return distributeReleaseBundle(projectName, version, objectMapper.writeValueAsString(createDistributionJson())); + } + +} diff --git a/releaser-core/src/main/java/releaser/internal/github/GithubMilestones.java b/releaser-core/src/main/java/releaser/internal/github/GithubMilestones.java index 9ebd3760..ed9167fd 100644 --- a/releaser-core/src/main/java/releaser/internal/github/GithubMilestones.java +++ b/releaser-core/src/main/java/releaser/internal/github/GithubMilestones.java @@ -113,10 +113,7 @@ class GithubMilestones { boolean notPreviouslyDownloaded = DOWNLOADED_GITHUB_CHANGELOG.compareAndSet(null, Files.createTempFile("releaser-changelog-generator", ".jar")); if (notPreviouslyDownloaded) { - try (ReadableByteChannel readableByteChannel = Channels.newChannel( - new URL(this.properties.getGit().getGithubChangelogGeneratorUrl()).openStream())) { - downloadFatJarIfNotPresent(readableByteChannel); - } + downloadChangeLog(); } contents = readChangelogFromGeneratorOutput(version); } @@ -127,6 +124,16 @@ class GithubMilestones { createGithubMilestoneReleaseNotes(version, contents); } + void downloadChangeLog() { + try (ReadableByteChannel readableByteChannel = Channels + .newChannel(new URL(this.properties.getGit().getGithubChangelogGeneratorUrl()).openStream())) { + downloadFatJarIfNotPresent(readableByteChannel); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + String readChangelogFromGeneratorOutput(ProjectVersion version) throws IOException { Path path = DOWNLOADED_GITHUB_CHANGELOG.get(); Path workDir = path.getParent(); diff --git a/releaser-core/src/test/java/releaser/SpringCloudReleaserProperties.java b/releaser-core/src/test/java/releaser/SpringCloudReleaserProperties.java index 32548dde..66be3bfe 100644 --- a/releaser-core/src/test/java/releaser/SpringCloudReleaserProperties.java +++ b/releaser-core/src/test/java/releaser/SpringCloudReleaserProperties.java @@ -28,7 +28,10 @@ import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.context.properties.source.MapConfigurationPropertySource; import org.springframework.core.io.FileSystemResource; -public class SpringCloudReleaserProperties { +public final class SpringCloudReleaserProperties { + + private SpringCloudReleaserProperties() { + } public static ReleaserProperties get() { try { diff --git a/releaser-core/src/test/java/releaser/internal/buildsystem/GradleBomParserTests.java b/releaser-core/src/test/java/releaser/internal/buildsystem/GradleBomParserTests.java index c2de2d3d..813d435a 100644 --- a/releaser-core/src/test/java/releaser/internal/buildsystem/GradleBomParserTests.java +++ b/releaser-core/src/test/java/releaser/internal/buildsystem/GradleBomParserTests.java @@ -112,4 +112,4 @@ class GradleBomParserTests { BDDAssertions.then(versionsFromBom).isSameAs(VersionsFromBom.EMPTY_VERSION); } -} \ No newline at end of file +} diff --git a/releaser-core/src/test/java/releaser/internal/buildsystem/MavenBomParserAccessor.java b/releaser-core/src/test/java/releaser/internal/buildsystem/MavenBomParserAccessor.java index 47a5591d..66acef7f 100644 --- a/releaser-core/src/test/java/releaser/internal/buildsystem/MavenBomParserAccessor.java +++ b/releaser-core/src/test/java/releaser/internal/buildsystem/MavenBomParserAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2019 the original author or authors. + * Copyright 2013-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,10 @@ import java.util.Collections; import releaser.internal.ReleaserProperties; -public class MavenBomParserAccessor { +public final class MavenBomParserAccessor { + + private MavenBomParserAccessor() { + } public static BomParser maven(ReleaserProperties properties) { return new MavenBomParser(properties, Collections.emptyList()); diff --git a/releaser-core/src/test/java/releaser/internal/commercial/ReleaseBundleCreatorTests.java b/releaser-core/src/test/java/releaser/internal/commercial/ReleaseBundleCreatorTests.java new file mode 100644 index 00000000..01cda3b1 --- /dev/null +++ b/releaser-core/src/test/java/releaser/internal/commercial/ReleaseBundleCreatorTests.java @@ -0,0 +1,87 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.commercial; + +import java.util.Collections; +import java.util.List; + +import com.github.tomakehurst.wiremock.junit5.WireMockExtension; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import releaser.internal.ReleaserProperties; +import releaser.internal.project.ProjectVersion; + +import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Ryan Baxter + */ +class ReleaseBundleCreatorTests { + + @RegisterExtension + static WireMockExtension wiremockArtifactory = WireMockExtension.newInstance() + .options(wireMockConfig().dynamicPort()).build(); + + private static ReleaserProperties properties = new ReleaserProperties(); + + @BeforeAll + static void beforeAll() { + + properties.getBundles().setRepoUrl("http://localhost:" + wiremockArtifactory.getRuntimeInfo().getHttpPort()); + properties.getBundles().setRepoUsername("admin"); + properties.getBundles().setRepoAccessToken("password"); + properties.getBundles() + .setRepos(Collections.singletonMap("spring-cloud-build", + List.of("org/springframework/cloud/spring-cloud-build*", + "org/springframework/cloud/spring-cloud-starter-build*", + "org/springframework/cloud/spring-cloud-dependencies-parent*"))); + } + + @Test + void testDistributeProjectReleaseBundle() throws Exception { + ReleaseBundleCreator releaseBundleCreator = new ReleaseBundleCreator(properties); + assertThat(releaseBundleCreator.distributeProjectReleaseBundle("TNZ-spring-cloud-contract-commercial", "4.0.7")) + .isTrue(); + } + + @Test + void testDistributeReleaseTrainBundle() throws Exception { + ReleaseBundleCreator releaseBundleCreator = new ReleaseBundleCreator(properties); + assertThat(releaseBundleCreator.distributeReleaseTrainSourceBundle("2022.0.7")).isTrue(); + } + + @Test + void testCreateReleaseTrainBundle() throws Exception { + ReleaseBundleCreator releaseBundleCreator = new ReleaseBundleCreator(properties); + + List repos = List.of(new ProjectVersion("spring-cloud-build", "4.0.8"), + new ProjectVersion("spring-cloud-starter", "2022.0.7"), + new ProjectVersion("spring-cloud-config", "4.0.7"), new ProjectVersion("spring-cloud-vault", "4.0.7")); + assertThat(releaseBundleCreator.createReleaseTrainSourceBundle(repos, "2022.0.7")).isTrue(); + } + + @Test + void testCreateProjectReleaseBundle() throws Exception { + ReleaseBundleCreator releaseBundleCreator = new ReleaseBundleCreator(properties); + assertThat( + releaseBundleCreator.createReleaseBundle(properties.getBundles().getRepos().get("spring-cloud-build"), + "4.0.7", "TNZ-spring-cloud-build-commercial")).isTrue(); + } + +} diff --git a/releaser-core/src/test/java/releaser/internal/github/GithubMilestonesTests.java b/releaser-core/src/test/java/releaser/internal/github/GithubMilestonesTests.java index 8ce4fc47..419587f9 100644 --- a/releaser-core/src/test/java/releaser/internal/github/GithubMilestonesTests.java +++ b/releaser-core/src/test/java/releaser/internal/github/GithubMilestonesTests.java @@ -198,6 +198,11 @@ class GithubMilestonesTests { String readChangelogFromGeneratorOutput(ProjectVersion version) throws IOException { return "FOOOO"; } + + @Override + void downloadChangeLog() { + + } }; milestones.createReleaseNotesForMilestone(gaContractVersion()); diff --git a/releaser-core/src/test/resources/mappings/commercial/create_porject_release_bundle.json b/releaser-core/src/test/resources/mappings/commercial/create_porject_release_bundle.json new file mode 100644 index 00000000..8dd63fce --- /dev/null +++ b/releaser-core/src/test/resources/mappings/commercial/create_porject_release_bundle.json @@ -0,0 +1,20 @@ +{ + "id" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "name" : "create_project_release_bundle_mapping", + "request" : { + "url" : "/lifecycle/api/v2/release_bundle?project=spring", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"release_bundle_version\":\"4.0.7\",\"release_bundle_name\":\"TNZ-spring-cloud-build-commercial\",\"source_type\":\"aql\",\"source\":{\"aql\":\"items.find({\\\"repo\\\":{\\\"$eq\\\":\\\"spring-enterprise-maven-prod-local\\\"},\\\"$or\\\":[{\\\"path\\\":{\\\"$match\\\":\\\"org/springframework/cloud/spring-cloud-build*/4.0.7\\\"}},{\\\"path\\\":{\\\"$match\\\":\\\"org/springframework/cloud/spring-cloud-starter-build*/4.0.7\\\"}},{\\\"path\\\":{\\\"$match\\\":\\\"org/springframework/cloud/spring-cloud-dependencies-parent*/4.0.7\\\"}}]}).sort({\\\"$asc\\\":[\\\"path\\\",\\\"name\\\"]})\"}}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "body" : "{\"id\":851479176549519360,\"sites\":[{\"name\":\"JP-SaaS\",\"service_id\":\"jfrt@01ep83qv31crz00x6f6zyf04z6\",\"type\":\"artifactory\"}]}" + }, + "uuid" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "persistent" : true, + "insertionIndex" : 63 +} diff --git a/releaser-core/src/test/resources/mappings/commercial/create_release_train_source_bundle.json b/releaser-core/src/test/resources/mappings/commercial/create_release_train_source_bundle.json new file mode 100644 index 00000000..397907f7 --- /dev/null +++ b/releaser-core/src/test/resources/mappings/commercial/create_release_train_source_bundle.json @@ -0,0 +1,20 @@ +{ + "id" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "name" : "create_release_train_source_bundle_mapping", + "request" : { + "url" : "/lifecycle/api/v2/release_bundle?project=spring", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"release_bundle_name\": \"TNZ-spring-cloud-commercial-release\",\"release_bundle_version\": \"2022.0.7\",\"skip_docker_manifest_resolution\": false,\"source_type\": \"release_bundles\",\"source\": {\"release_bundles\": [{\"project_key\": \"spring\",\"repository_key\": \"spring-release-bundles-v2\",\"release_bundle_name\": \"TNZ-spring-cloud-build-commercial\",\"release_bundle_version\": \"4.0.8\"},{\"project_key\": \"spring\",\"repository_key\": \"spring-release-bundles-v2\",\"release_bundle_name\": \"TNZ-spring-cloud-config-commercial\",\"release_bundle_version\": \"4.0.7\"},{\"project_key\": \"spring\",\"repository_key\": \"spring-release-bundles-v2\",\"release_bundle_name\": \"TNZ-spring-cloud-starter-commercial\",\"release_bundle_version\": \"2022.0.7\"},{\"project_key\": \"spring\",\"repository_key\": \"spring-release-bundles-v2\",\"release_bundle_name\": \"TNZ-spring-cloud-vault-commercial\",\"release_bundle_version\": \"4.0.7\"}]}}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "body" : "{\"id\":851479176549519360,\"sites\":[{\"name\":\"JP-SaaS\",\"service_id\":\"jfrt@01ep83qv31crz00x6f6zyf04z6\",\"type\":\"artifactory\"}]}" + }, + "uuid" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "persistent" : true, + "insertionIndex" : 63 +} diff --git a/releaser-core/src/test/resources/mappings/commercial/distribute-project-mapping.json b/releaser-core/src/test/resources/mappings/commercial/distribute-project-mapping.json new file mode 100644 index 00000000..2da7fc82 --- /dev/null +++ b/releaser-core/src/test/resources/mappings/commercial/distribute-project-mapping.json @@ -0,0 +1,20 @@ +{ + "id" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "name" : "distribute_project_mapping", + "request" : { + "url" : "/lifecycle/api/v2/distribution/distribute/TNZ-spring-cloud-contract-commercial/4.0.7?project=spring", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"distribution_rules\":[{\"site_name\":\"JP-SaaS\"}],\"auto_create_missing_repositories\":\"false\",\"modifications\":{\"mappings\":[{\"output\":\"spring-enterprise/$1\",\"input\":\"spring-enterprise-maven-prod-local/(.*)\"}]}}]", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "body" : "{\"id\":851479176549519360,\"sites\":[{\"name\":\"JP-SaaS\",\"service_id\":\"jfrt@01ep83qv31crz00x6f6zyf04z6\",\"type\":\"artifactory\"}]}" + }, + "uuid" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "persistent" : true, + "insertionIndex" : 63 +} diff --git a/releaser-core/src/test/resources/mappings/commercial/distribute-release-train-mapping.json b/releaser-core/src/test/resources/mappings/commercial/distribute-release-train-mapping.json new file mode 100644 index 00000000..2120f96e --- /dev/null +++ b/releaser-core/src/test/resources/mappings/commercial/distribute-release-train-mapping.json @@ -0,0 +1,20 @@ +{ + "id" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "name" : "distribute_release_train_mapping", + "request" : { + "url" : "/lifecycle/api/v2/distribution/distribute/TNZ-spring-cloud-commercial-release/2022.0.7?project=spring", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"distribution_rules\":[{\"site_name\":\"JP-SaaS\"}],\"auto_create_missing_repositories\":\"false\",\"modifications\":{\"mappings\":[{\"output\":\"spring-enterprise/$1\",\"input\":\"spring-enterprise-maven-prod-local/(.*)\"}]}}]", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "body" : "{\"id\":851479176549519360,\"sites\":[{\"name\":\"JP-SaaS\",\"service_id\":\"jfrt@01ep83qv31crz00x6f6zyf04z6\",\"type\":\"artifactory\"}]}" + }, + "uuid" : "0b389dc6-1b73-487d-8122-41f1c974647f", + "persistent" : true, + "insertionIndex" : 63 +} diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateProjectReleaseBundlePostReleaseTask.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateProjectReleaseBundlePostReleaseTask.java new file mode 100644 index 00000000..005d6b58 --- /dev/null +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateProjectReleaseBundlePostReleaseTask.java @@ -0,0 +1,74 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.tasks.postrelease; + +import releaser.internal.Releaser; +import releaser.internal.project.ProjectVersion; +import releaser.internal.spring.Arguments; +import releaser.internal.tasks.ProjectPostReleaseReleaserTask; +import releaser.internal.tech.BuildUnstableException; +import releaser.internal.tech.ExecutionResult; + +/** + * @author Ryan Baxter + */ +public class CreateProjectReleaseBundlePostReleaseTask implements ProjectPostReleaseReleaserTask { + + /** + * Order of this task. The higher value, the lower order. + */ + public static final int ORDER = 60; + + private final Releaser releaser; + + public CreateProjectReleaseBundlePostReleaseTask(Releaser releaser) { + this.releaser = releaser; + } + + @Override + public String name() { + return "createReleaseBundle"; + } + + @Override + public String shortName() { + return "b"; + } + + @Override + public String header() { + return "CREATING RELEASE BUNDLE"; + } + + @Override + public String description() { + return "Creates a release bundle for the project"; + } + + @Override + public ExecutionResult runTask(Arguments args) throws BuildUnstableException { + return this.releaser.createReleaseBundle(args.properties.isCommercial(), args.versionFromBom, + args.options.dryRun, args.properties.getBundles().getRepos(), + new ProjectVersion(args.project).projectName); + } + + @Override + public int getOrder() { + return ORDER; + } + +} diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateReleaseTrainReleaseBundlePostReleaseTask.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateReleaseTrainReleaseBundlePostReleaseTask.java new file mode 100644 index 00000000..05748d5f --- /dev/null +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/CreateReleaseTrainReleaseBundlePostReleaseTask.java @@ -0,0 +1,83 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.tasks.postrelease; + +import java.util.LinkedList; +import java.util.List; + +import releaser.internal.Releaser; +import releaser.internal.project.ProjectVersion; +import releaser.internal.spring.Arguments; +import releaser.internal.tasks.TrainPostReleaseReleaserTask; +import releaser.internal.tech.BuildUnstableException; +import releaser.internal.tech.ExecutionResult; + +/** + * @author Ryan Baxter + */ +public class CreateReleaseTrainReleaseBundlePostReleaseTask implements TrainPostReleaseReleaserTask { + + /** + * Order of this task. The higher value, the lower order. + */ + public static final int ORDER = 160; + + private final Releaser releaser; + + public CreateReleaseTrainReleaseBundlePostReleaseTask(Releaser releaser) { + this.releaser = releaser; + } + + @Override + public String name() { + return "createReleaseTrainReleaseBundlePostReleaseTask"; + } + + @Override + public String shortName() { + return "rtb"; + } + + @Override + public String header() { + return "CREATE RELEASE TRAIN RELEASE BUNDLE"; + } + + @Override + public String description() { + return "Creates a release train release bundle"; + } + + @Override + public ExecutionResult runTask(Arguments args) throws BuildUnstableException { + List releasedProjects = new LinkedList<>(); + args.projects.forEach(projectVersion -> { + if (args.properties.getMetaRelease().getProjectsToSkip().stream() + .noneMatch(projectVersion.projectName::startsWith)) { + releasedProjects.add(projectVersion); + } + }); + return releaser.createReleaseTrainSourceBundle(releasedProjects, args.properties.isCommercial(), + args.options.dryRun, args.versionFromBom); + } + + @Override + public int getOrder() { + return ORDER; + } + +} diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/DistributeProjectReleaseBundleTask.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/DistributeProjectReleaseBundleTask.java new file mode 100644 index 00000000..8101dc2b --- /dev/null +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/DistributeProjectReleaseBundleTask.java @@ -0,0 +1,69 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.tasks.postrelease; + +import releaser.internal.Releaser; +import releaser.internal.spring.Arguments; +import releaser.internal.tasks.ProjectPostReleaseReleaserTask; +import releaser.internal.tech.BuildUnstableException; +import releaser.internal.tech.ExecutionResult; + +/** + * @author Ryan Baxter + */ +public class DistributeProjectReleaseBundleTask implements ProjectPostReleaseReleaserTask { + + public int ORDER = CreateProjectReleaseBundlePostReleaseTask.ORDER + 10; + + private Releaser releaser; + + public DistributeProjectReleaseBundleTask(Releaser releaser) { + this.releaser = releaser; + } + + @Override + public String name() { + return "distributeProjectReleaseBundleTask"; + } + + @Override + public String shortName() { + return "dprbt"; + } + + @Override + public String header() { + return "DISTRIBUTE PROJECT RELEASE BUNDLE TASK"; + } + + @Override + public String description() { + return "Distributes a release bundle for an individual project."; + } + + @Override + public ExecutionResult runTask(Arguments args) throws BuildUnstableException { + return releaser.distributeProjectReleaseBundle(args.properties.isCommercial(), args.options.dryRun, + args.versionFromBom, args.options.metaRelease); + } + + @Override + public int getOrder() { + return ORDER; + } + +} diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/DistributeReleaseTrainSourceBundleTask.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/DistributeReleaseTrainSourceBundleTask.java new file mode 100644 index 00000000..25c0179f --- /dev/null +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/DistributeReleaseTrainSourceBundleTask.java @@ -0,0 +1,72 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package releaser.internal.tasks.postrelease; + +import releaser.internal.Releaser; +import releaser.internal.spring.Arguments; +import releaser.internal.tasks.TrainPostReleaseReleaserTask; +import releaser.internal.tech.BuildUnstableException; +import releaser.internal.tech.ExecutionResult; + +/** + * @author Ryan Baxter + */ +public class DistributeReleaseTrainSourceBundleTask implements TrainPostReleaseReleaserTask { + + /** + * Order of this task. The higher value, the lower order. + */ + public static final int ORDER = CreateReleaseTrainReleaseBundlePostReleaseTask.ORDER + 10; + + private final Releaser releaser; + + public DistributeReleaseTrainSourceBundleTask(Releaser releaser) { + this.releaser = releaser; + } + + @Override + public String name() { + return "distributeReleaseBundleTask"; + } + + @Override + public String shortName() { + return "drb"; + } + + @Override + public String header() { + return "DISTRIBUTING RELEASE BUNDLE"; + } + + @Override + public String description() { + return "Distributes the release bundle to the edge repository."; + } + + @Override + public ExecutionResult runTask(Arguments args) throws BuildUnstableException { + return releaser.distributeReleaseTrainSourceBundle(args.properties.isCommercial(), args.options.dryRun, + args.versionFromBom); + } + + @Override + public int getOrder() { + return ORDER; + } + +} diff --git a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java index ce824c13..6275cac3 100644 --- a/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java +++ b/releaser-spring/src/main/java/releaser/internal/tasks/postrelease/PostReleaseTasksConfiguration.java @@ -92,4 +92,32 @@ class PostReleaseTasksConfiguration { return new UpdateStartSpringIoTrainPostReleaseTask(releaser); } + @Bean + @ConditionalOnMissingBean + @ConditionalOnProperty("releaser.bundles.create-release-train-release-bundle") + CreateReleaseTrainReleaseBundlePostReleaseTask createReleaseTrainReleaseBundlePostReleaseTask(Releaser releaser) { + return new CreateReleaseTrainReleaseBundlePostReleaseTask(releaser); + } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnProperty("releaser.bundles.create-project-release-bundle") + CreateProjectReleaseBundlePostReleaseTask createProjectReleaseBundlePostReleaseTask(Releaser releaser) { + return new CreateProjectReleaseBundlePostReleaseTask(releaser); + } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnProperty("releaser.bundles.distribute-release-train-source-bundle") + DistributeReleaseTrainSourceBundleTask distributeReleaseBundleTask(Releaser releaser) { + return new DistributeReleaseTrainSourceBundleTask(releaser); + } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnProperty("releaser.bundles.distribute-project-release-bundle") + DistributeProjectReleaseBundleTask distributeProjectReleaseBundleTask(Releaser releaser) { + return new DistributeProjectReleaseBundleTask(releaser); + } + } diff --git a/releaser-test/src/main/java/releaser/internal/buildsystem/MavenBomParserAccessor.java b/releaser-test/src/main/java/releaser/internal/buildsystem/MavenBomParserAccessor.java index beb0a776..64735f6d 100644 --- a/releaser-test/src/main/java/releaser/internal/buildsystem/MavenBomParserAccessor.java +++ b/releaser-test/src/main/java/releaser/internal/buildsystem/MavenBomParserAccessor.java @@ -1,11 +1,11 @@ /* - * Copyright 2013-2019 the original author or authors. + * Copyright 2013-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -20,7 +20,10 @@ import java.util.Collections; import releaser.internal.ReleaserProperties; -public class MavenBomParserAccessor { +public final class MavenBomParserAccessor { + + private MavenBomParserAccessor() { + } public static BomParser bomParser(ReleaserProperties properties, CustomBomParser parser) { return new MavenBomParser(properties, Collections.singletonList(parser)); diff --git a/releaser-test/src/main/java/releaser/internal/buildsystem/TestUtils.java b/releaser-test/src/main/java/releaser/internal/buildsystem/TestUtils.java index e1a66c5f..519601cd 100644 --- a/releaser-test/src/main/java/releaser/internal/buildsystem/TestUtils.java +++ b/releaser-test/src/main/java/releaser/internal/buildsystem/TestUtils.java @@ -31,8 +31,10 @@ public final class TestUtils { prepareLocalRepo("target/test-classes/projects/", "spring-cloud"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-wiki"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-release"); + prepareLocalRepo("target/test-classes/projects/", "spring-cloud-release-commercial"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-release-with-snapshot"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-consul"); + prepareLocalRepo("target/test-classes/projects/", "spring-cloud-consul-commercial"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-build"); prepareLocalRepo("target/test-classes/projects/", "spring-cloud-static-angel"); } diff --git a/releaser-test/src/main/java/releaser/internal/spring/AbstractSpringAcceptanceTests.java b/releaser-test/src/main/java/releaser/internal/spring/AbstractSpringAcceptanceTests.java index 62cc121f..05454ac2 100644 --- a/releaser-test/src/main/java/releaser/internal/spring/AbstractSpringAcceptanceTests.java +++ b/releaser-test/src/main/java/releaser/internal/spring/AbstractSpringAcceptanceTests.java @@ -67,9 +67,15 @@ import static org.assertj.core.api.BDDAssertions.then; */ public abstract class AbstractSpringAcceptanceTests { + /** + * Temporary folder. + */ @TempDir public File temporaryFolder; + /** + * Test POM Reader. + */ public TestPomReader testPomReader = new TestPomReader(); public static Project newProject() { @@ -249,6 +255,9 @@ public abstract class AbstractSpringAcceptanceTests { private final Consumer docsConsumer; + /** + * Cloned projects. + */ public Set clonedProjects = new HashSet<>(); public NonAssertingTestProjectGitHandler(ReleaserProperties properties, Consumer docsConsumer) { @@ -296,8 +305,14 @@ public abstract class AbstractSpringAcceptanceTests { public static class TestExecutionResultHandler extends SpringBatchExecutionResultHandler { + /** + * Exited with success or unstable. + */ public boolean exitedSuccessOrUnstable; + /** + * Exited with exception. + */ public boolean exitedWithException; public TestExecutionResultHandler(BuildReportHandler buildReportHandler, diff --git a/releaser-test/src/main/java/releaser/internal/spring/ArgsBuilder.java b/releaser-test/src/main/java/releaser/internal/spring/ArgsBuilder.java index 2ed756dd..c0a2c89d 100644 --- a/releaser-test/src/main/java/releaser/internal/spring/ArgsBuilder.java +++ b/releaser-test/src/main/java/releaser/internal/spring/ArgsBuilder.java @@ -194,6 +194,36 @@ public class ArgsBuilder { return this; } + public ArgsBuilder commercial(boolean commercial) { + removeIfPresent("releaser.commercial"); + this.args.add("releaser.commercial=" + commercial); + return this; + } + + public ArgsBuilder projectReleaseBundle(boolean enable) { + removeIfPresent("releaser.bundles.create-project-release-bundle"); + this.args.add("releaser.bundles.create-project-release-bundle=" + enable); + return this; + } + + public ArgsBuilder distributeProjectReleaseBundle(boolean enable) { + removeIfPresent("releaser.bundles.distribute-project-release-bundle"); + this.args.add("releaser.bundles.distribute-project-release-bundle=" + enable); + return this; + } + + public ArgsBuilder releaseTrainSourceReleaseBundle(boolean enable) { + removeIfPresent("releaser.bundles.create-release-train-release-bundle"); + this.args.add("releaser.bundles.create-release-train-release-bundle=" + enable); + return this; + } + + public ArgsBuilder distributeReleaseTrainSourceReleaseBundle(boolean enable) { + removeIfPresent("releaser.bundles.distribute-release-train-source-bundle"); + this.args.add("releaser.bundles.distribute-release-train-source-bundle=" + enable); + return this; + } + public String[] build() { return args.toArray(new String[0]); }