From 66e4188a93db8e2b5880e1d884210e3104ee520e Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 16 Apr 2020 14:08:00 -0400 Subject: [PATCH] Add support for releaser.git.release-train-branch This avoids guessing the branch --- .../releaser/internal/ReleaserProperties.java | 15 +++++++++++++++ .../releaser/internal/git/ProjectGitHandler.java | 12 ++++++++++++ .../internal/buildsystem/ProjectVersionTests.java | 6 +++--- .../internal/git/ProjectGitHandlerTests.java | 13 +++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java b/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java index b6945c53..143fd9b2 100644 --- a/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java +++ b/releaser-core/src/main/java/releaser/internal/ReleaserProperties.java @@ -479,6 +479,7 @@ public class ReleaserProperties implements Serializable { /** * Branch to check out for the release train project. */ + // TODO: seems to only be for gh-docs? we guess when we could use this? private String springProjectBranch; /** @@ -486,6 +487,11 @@ public class ReleaserProperties implements Serializable { */ private String testSamplesBranch; + /** + * Branch to check out for the release train. + */ + private String releaseTrainBranch; + /** * Branch to check out for the release train docs. */ @@ -736,6 +742,14 @@ public class ReleaserProperties implements Serializable { this.updateSpringProject = updateSpringProject; } + public String getReleaseTrainBranch() { + return this.releaseTrainBranch; + } + + public void setReleaseTrainBranch(String releaseTrainBranch) { + this.releaseTrainBranch = releaseTrainBranch; + } + public String getReleaseTrainDocsUrl() { return this.releaseTrainDocsUrl; } @@ -813,6 +827,7 @@ public class ReleaserProperties implements Serializable { return "Git{" + "releaseTrainBomUrl='" + this.releaseTrainBomUrl + '\'' + ", documentationUrl='" + this.documentationUrl + '\'' + ", documentationBranch='" + this.documentationBranch + '\'' + + ", releaseTrainBranch='" + this.releaseTrainBranch + '\'' + ", releaseTrainWikiUrl='" + this.releaseTrainWikiUrl + '\'' + ", updateDocumentationRepo=" + this.updateDocumentationRepo + ", springProjectUrl=" + this.springProjectUrl diff --git a/releaser-core/src/main/java/releaser/internal/git/ProjectGitHandler.java b/releaser-core/src/main/java/releaser/internal/git/ProjectGitHandler.java index a3fb97bf..3ae8a1c8 100644 --- a/releaser-core/src/main/java/releaser/internal/git/ProjectGitHandler.java +++ b/releaser-core/src/main/java/releaser/internal/git/ProjectGitHandler.java @@ -152,6 +152,18 @@ public class ProjectGitHandler implements Closeable { if (log.isDebugEnabled()) { log.debug("Successfully cloned the project to [{}]", clonedProject); } + String releaseTrainBranch = this.properties.getGit().getReleaseTrainBranch(); + if (!StringUtils.isEmpty(releaseTrainBranch)) { + if (log.isDebugEnabled()) { + log.debug("Checking out configured release train branch {}", + releaseTrainBranch); + } + if (gitRepo(clonedProject).hasBranch(releaseTrainBranch)) { + log.info("Branch [{}] exists. Will check it out", releaseTrainBranch); + checkout(clonedProject, releaseTrainBranch); + } + return clonedProject; + } String version = this.properties.getFixedVersions().get(projectName); if (StringUtils.isEmpty(version)) { throw new IllegalStateException( diff --git a/releaser-core/src/test/java/releaser/internal/buildsystem/ProjectVersionTests.java b/releaser-core/src/test/java/releaser/internal/buildsystem/ProjectVersionTests.java index 066251d0..4075e8b5 100644 --- a/releaser-core/src/test/java/releaser/internal/buildsystem/ProjectVersionTests.java +++ b/releaser-core/src/test/java/releaser/internal/buildsystem/ProjectVersionTests.java @@ -152,7 +152,7 @@ public class ProjectVersionTests { then(projectVersion("2.0.1.RC1").major()).isEqualTo("2"); then(projectVersion("Finchley.SR1").major()).isEqualTo("Finchley"); then(projectVersion("2020.0.0.M1").major()).isEqualTo("2020"); - //then(projectVersion("2020.0.0").major()).isEqualTo("2020"); + // then(projectVersion("2020.0.0").major()).isEqualTo("2020"); } @Test @@ -315,8 +315,8 @@ public class ProjectVersionTests { public void should_return_true_when_checking_ga_version_against_ga() { then(projectVersion("1.0.1.RELEASE").isReleaseOrServiceRelease()).isTrue(); then(projectVersion("1.0.1.SR1").isReleaseOrServiceRelease()).isTrue(); - //then(projectVersion("1.0.0").isReleaseOrServiceRelease()).isTrue(); - //then(projectVersion("1.0.1").isReleaseOrServiceRelease()).isTrue(); + // then(projectVersion("1.0.0").isReleaseOrServiceRelease()).isTrue(); + // then(projectVersion("1.0.1").isReleaseOrServiceRelease()).isTrue(); } @Test diff --git a/releaser-core/src/test/java/releaser/internal/git/ProjectGitHandlerTests.java b/releaser-core/src/test/java/releaser/internal/git/ProjectGitHandlerTests.java index 4907095d..78b8dda4 100644 --- a/releaser-core/src/test/java/releaser/internal/git/ProjectGitHandlerTests.java +++ b/releaser-core/src/test/java/releaser/internal/git/ProjectGitHandlerTests.java @@ -184,6 +184,19 @@ public class ProjectGitHandlerTests { then(this.gitRepo).should().checkout("Finchley"); } + @Test + public void should_check_out_a_branch_if_it_exists_when_cloning_from_org_and_its_a_release_train_version_with_release_train_branch_set() { + this.properties.getGit().setReleaseTrainBranch("2020.0.x"); + this.properties.getFixedVersions().put("spring-cloud-release", "2020.0.0-M1"); + given(this.gitRepo.hasBranch(anyString())).willReturn(false); + given(this.gitRepo.hasBranch("2020.0.x")).willReturn(true); + + this.updater.cloneProjectFromOrg("spring-cloud-release"); + + then(this.gitRepo).should().checkout("2020.0.x"); + this.properties.getGit().setReleaseTrainBranch(null); + } + @Test public void should_not_check_out_a_branch_if_it_does_not_exist_when_cloning_and_guessing_branch() { given(this.gitRepo.hasBranch(anyString())).willReturn(true);