This commit is contained in:
Marcin Grzejszczak
2019-08-20 18:57:28 +02:00
parent d863dfc904
commit f9e2835bf2
621 changed files with 961 additions and 335 deletions

View File

@@ -39,7 +39,7 @@ import org.springframework.util.Assert;
/**
* @author Marcin Grzejszczak
*/
public class Releaser {
public class Releaser implements ReleaserPropertiesAware {
private static final Logger log = LoggerFactory.getLogger(Releaser.class);
@@ -47,6 +47,8 @@ public class Releaser {
private static boolean SKIP_SNAPSHOT_ASSERTION = false;
private ReleaserProperties releaserProperties;
private final ProjectPomUpdater projectPomUpdater;
private final ProjectBuilder projectBuilder;
@@ -63,11 +65,13 @@ public class Releaser {
private final PostReleaseActions postReleaseActions;
public Releaser(ProjectPomUpdater projectPomUpdater, ProjectBuilder projectBuilder,
public Releaser(ReleaserProperties releaserProperties,
ProjectPomUpdater projectPomUpdater, ProjectBuilder projectBuilder,
ProjectGitHandler projectGitHandler, TemplateGenerator templateGenerator,
GradleUpdater gradleUpdater, SaganUpdater saganUpdater,
DocumentationUpdater documentationUpdater,
PostReleaseActions postReleaseActions) {
this.releaserProperties = releaserProperties;
this.projectPomUpdater = projectPomUpdater;
this.projectBuilder = projectBuilder;
this.projectGitHandler = projectGitHandler;
@@ -136,10 +140,11 @@ public class Releaser {
log.info("Original project version is [{}]", originalVersion);
if ((scReleaseVersion.isRelease() || scReleaseVersion.isServiceRelease())
&& originalVersion.isSnapshot()) {
Projects newProjects = Projects.forRollback(projects, originalVersion);
Projects newProjects = Projects.forRollback(releaserProperties, projects);
updateProjectFromBom(project, newProjects, originalVersion,
SKIP_SNAPSHOT_ASSERTION);
this.projectGitHandler.commitAfterBumpingVersions(project, originalVersion);
ProjectVersion bumpedProject = bumpProject(originalVersion, newProjects);
this.projectGitHandler.commitAfterBumpingVersions(project, bumpedProject);
log.info("\nSuccessfully reverted the commit and bumped snapshot versions");
}
else {
@@ -148,6 +153,13 @@ public class Releaser {
}
}
private ProjectVersion bumpProject(ProjectVersion originalVersion,
Projects newProjects) {
return newProjects.containsProject(originalVersion.projectName)
? newProjects.forName(originalVersion.projectName) : new ProjectVersion(
originalVersion.projectName, originalVersion.bumpedVersion());
}
ProjectVersion originalVersion(File project) {
return new ProjectVersion(project);
}
@@ -370,4 +382,9 @@ public class Releaser {
log.info("\nSuccessfully updated project wiki");
}
@Override
public void setReleaserProperties(ReleaserProperties properties) {
this.releaserProperties = properties;
}
}

View File

@@ -86,15 +86,14 @@ public class ProjectGitHandler implements ReleaserPropertiesAware {
}
}
public void commitAfterBumpingVersions(File project, ProjectVersion version) {
if (version.isSnapshot()) {
public void commitAfterBumpingVersions(File project, ProjectVersion bumpedVersion) {
if (bumpedVersion.isSnapshot()) {
log.info("Snapshot version [{}] found. Will only commit the changed poms",
version);
commit(project,
String.format(POST_RELEASE_BUMP_MSG, version.bumpedVersion()));
bumpedVersion);
commit(project, String.format(POST_RELEASE_BUMP_MSG, bumpedVersion));
}
else {
log.info("Non snapshot version [{}] found. Won't do anything", version);
log.info("Non snapshot version [{}] found. Won't do anything", bumpedVersion);
}
}

View File

@@ -42,6 +42,14 @@ public class ProjectVersion implements Comparable<ProjectVersion> {
private static final String RC_REGEX = "^.*[\\.|\\-]RC.*$";
private static final String RELEASE_REGEX = "^.*[\\.|\\-]RELEASE.*$";
private static final String SR_REGEX = "^.*[\\.|\\-]SR[0-9]+.*$";
private static final List<Pattern> VALID_PATTERNS = Arrays.asList(SNAPSHOT_PATTERN,
Pattern.compile(MILESTONE_REGEX), Pattern.compile(RC_REGEX),
Pattern.compile(RELEASE_REGEX), Pattern.compile(SR_REGEX));
/**
* Name of the project.
*/
@@ -92,30 +100,82 @@ public class ProjectVersion implements Comparable<ProjectVersion> {
}
public String bumpedVersion() {
return bumpedVersion(assertVersion());
return bumpedVersion(assertVersion()).print();
}
private String bumpedVersion(String[] splitVersion) {
if (splitVersion.length == 2 && !isNumeric(splitVersion[0])) {
return this.version;
private SplitVersion bumpedVersion(SplitVersion splitVersion) {
if (splitVersion.isReleaseTrain()) {
return splitVersion;
}
Integer incrementedPatch = Integer.valueOf(splitVersion[2]) + 1;
return String.format("%s.%s.%s.%s", splitVersion[0], splitVersion[1],
incrementedPatch, splitVersion[3]);
return splitVersion.fullVersionWithIncrementedPatch();
}
private String[] assertVersion() {
private SplitVersion assertVersion() {
if (this.version == null) {
throw new IllegalStateException("Version can't be null!");
}
// 1.0.0.BUILD-SNAPSHOT
String[] splitVersion = this.version.split("\\.");
if (splitVersion.length < 4 && isNumeric(splitVersion[0])
|| splitVersion.length == 1 && !isNumeric(splitVersion[0])) {
throw new IllegalStateException(
"Version is invalid. Should be of format [1.2.3.A]");
SplitVersion splitByHyphen = tryHyphenSeparatedVersion();
if (splitByHyphen != null) {
return splitByHyphen;
}
return splitVersion;
return dotSeparatedReleaseTrainsAndVersions();
}
private SplitVersion tryHyphenSeparatedVersion() {
// Check for hyphen separated BOMs versioning
// Dysprosium-BUILD-SNAPSHOT or Dysprosium-RELEASE
// 1.0.0-BUILD-SNAPSHOT or 1.0.0-RELEASE
String[] splitByHyphen = this.version.split("\\-");
int splitByHyphens = splitByHyphen.length;
int numberOfHyphens = splitByHyphens - 1;
int indexOfFirstHyphen = this.version.indexOf("-");
boolean buildSnapshot = this.version.endsWith("BUILD-SNAPSHOT");
if (numberOfHyphens == 1 && !buildSnapshot
|| (numberOfHyphens > 1 && buildSnapshot)) {
// Dysprosium or 1.0.0
String versionName = this.version.substring(0, indexOfFirstHyphen);
boolean hasDots = versionName.contains(".");
// BUILD-SNAPSHOT
String versionType = this.version.substring(indexOfFirstHyphen + 1);
// Dysprosium-BUILD-SNAPSHOT
if (splitByHyphens > 1 && !hasDots && validVersionType()) {
return SplitVersion.hyphen(versionName, versionType);
}
// Dysprosium-RELEASE
else if (splitByHyphens == 1 && !hasDots && validVersionType()) {
return SplitVersion.hyphen(splitByHyphen[0], splitByHyphen[1]);
}
// 1.0.0-RELEASE or 1.0.0-BUILD-SNAPSHOT
else if (splitByHyphens >= 1 && hasDots) {
String[] newArray = combinedArrays(versionName, versionType);
return SplitVersion.hyphen(newArray);
}
else {
throw new UnsupportedOperationException(
"Unknown version [" + this.version + "]");
}
}
return null;
}
private boolean validVersionType() {
return VALID_PATTERNS.stream().anyMatch(p -> p.matcher(this.version).matches());
}
private String[] combinedArrays(String versionName, String versionType) {
String[] split = versionName.split("\\.");
String[] newArray = new String[split.length + 1];
for (int i = 0; i < split.length; i++) {
newArray[i] = split[i];
}
newArray[split.length] = versionType;
return newArray;
}
private SplitVersion dotSeparatedReleaseTrainsAndVersions() {
// Hoxton.BUILD-SNAPSHOT or 1.0.0.BUILD-SNAPSHOT
String[] splitVersion = this.version.split("\\.");
return SplitVersion.dot(splitVersion);
}
/**
@@ -124,21 +184,11 @@ public class ProjectVersion implements Comparable<ProjectVersion> {
* @return the post release snapshot version
*/
public String postReleaseSnapshotVersion() {
String[] strings = assertVersion();
SplitVersion splitVersion = assertVersion();
if (isReleaseOrServiceRelease()) {
String bumpedVersion = bumpedVersion(strings);
return appendBuildSnapshot(bumpedVersion);
return bumpedVersion(splitVersion).withBuildSnapshot().print();
}
return appendBuildSnapshot(this.version);
}
private String appendBuildSnapshot(String bumpedVersion) {
int lastIndexOfDot = bumpedVersion.lastIndexOf(".");
return bumpedVersion.substring(0, lastIndexOfDot) + ".BUILD-SNAPSHOT";
}
private boolean isNumeric(String string) {
return string.matches("[0-9]+");
return splitVersion.withBuildSnapshot().print();
}
public String groupId() {
@@ -166,7 +216,7 @@ public class ProjectVersion implements Comparable<ProjectVersion> {
}
public String major() {
return this.assertVersion()[0];
return this.assertVersion().major;
}
public boolean isSnapshot() {
@@ -283,6 +333,143 @@ public class ProjectVersion implements Comparable<ProjectVersion> {
return this.version.compareTo(o.version);
}
private static final class SplitVersion {
private static final String DOT = ".";
private static final String HYPHEN = "-";
private static final String BUILD_SNAPSHOT_SUFFIX = "BUILD-SNAPSHOT";
final String major;
final String minor;
final String patch;
final String delimiter;
final String suffix;
// 1.0.0.RELEASE
// 1.0.0-RELEASE
private SplitVersion(String major, String minor, String patch, String delimiter,
String suffix) {
this.major = major;
this.minor = minor;
this.patch = patch;
this.delimiter = delimiter;
this.suffix = suffix;
assertIfValid();
}
private void assertIfValid() {
if (isInvalid()) {
throw new IllegalStateException(
"Version is invalid. Should be of format [1.2.3.A] / [1.2.3-A] or [A.B] / [A-B]");
}
}
// Hoxton.RELEASE
// Hoxton-RELEASE
private SplitVersion(String major, String delimiter, String suffix) {
this(major, "", "", delimiter, suffix);
}
private SplitVersion(String[] args, String delimiter) {
this.major = orDefault(args, 0);
this.minor = orDefault(args, 1);
this.patch = orDefault(args, 2);
this.delimiter = delimiter;
this.suffix = orDefault(args, 3);
assertIfValid();
}
private boolean isInvalid() {
return wrongReleaseTrainVersion() || wrongLibraryVersion() || wrongDelimiter()
|| noSuffix();
}
private boolean noSuffix() {
return StringUtils.isEmpty(suffix);
}
// Hoxton.BUILD-SNAPSHOT or Hoxton-BUILD-SNAPSHOT
private boolean isReleaseTrain() {
return !isNumeric(this.major);
}
private SplitVersion fullVersionWithIncrementedPatch() {
int incrementedPatch = Integer.parseInt(patch) + 1;
return new SplitVersion(major, minor, Integer.toString(incrementedPatch),
delimiter, suffix);
}
private String print() {
// Finchley.SR2
if (StringUtils.isEmpty(minor)) {
return String.format("%s%s%s", major, delimiter, suffix);
}
return String.format("%s.%s.%s%s%s", major, minor, patch, delimiter, suffix);
}
private boolean isNumeric(String string) {
return string.matches("[0-9]+");
}
private boolean wrongDelimiter() {
return !(DOT.equals(this.delimiter) || HYPHEN.equals(this.delimiter));
}
private boolean wrongLibraryVersion() {
// GOOD:
// 1.2.3.RELEASE, 1.2.3-RELEASE, Hoxton.BUILD-SNAPSHOT, Hoxton-RELEASE
// must have
// either major and suffix (release train)
// major, minor, patch and suffix
return isNumeric(major) && (StringUtils.isEmpty(minor)
|| StringUtils.isEmpty(patch) || StringUtils.isEmpty(suffix)
|| StringUtils.isEmpty(delimiter));
}
private boolean wrongReleaseTrainVersion() {
// BAD: 1.EXAMPLE, GOOD: Hoxton.RELEASE
return isNumeric(major) && StringUtils.isEmpty(suffix);
}
private SplitVersion withBuildSnapshot() {
return new SplitVersion(major, minor, patch, delimiter,
BUILD_SNAPSHOT_SUFFIX);
}
private static String orDefault(String[] args, int argIndex) {
return args.length > argIndex ? args[argIndex] : "";
}
static SplitVersion hyphen(String major, String suffix) {
return new SplitVersion(major, HYPHEN, suffix);
}
static SplitVersion hyphen(String[] args) {
return version(args, HYPHEN);
}
static SplitVersion dot(String[] args) {
return version(args, DOT);
}
private static SplitVersion version(String[] args, String delimiter) {
if (args.length == 2) {
return new SplitVersion(args[0], "", "", delimiter, args[1]);
}
else if (args.length == 3) {
return new SplitVersion(args[0], args[1], "", delimiter, args[2]);
}
return new SplitVersion(args, delimiter);
}
}
}
class TrainVersionNumber implements Comparable<TrainVersionNumber> {

View File

@@ -19,6 +19,7 @@ package org.springframework.cloud.release.internal.pom;
import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -43,13 +44,27 @@ public class Projects extends HashSet<ProjectVersion> {
.collect(Collectors.toList())));
}
public static Projects forRollback(Projects projects,
ProjectVersion originalVersion) {
Projects newProjects = new Projects();
newProjects.add(new ProjectVersion(originalVersion.projectName,
originalVersion.bumpedVersion()));
newProjects
.addAll(projects.forNameStartingWith(SpringCloudConstants.SPRING_BOOT));
public Projects(List<ProjectVersion> versions) {
addAll(versions.stream().filter(Objects::nonNull).collect(Collectors.toList()));
}
public static Projects forRollback(ReleaserProperties properties, Projects projects) {
List<ProjectVersion> foundProjectsToBump = new LinkedList<>();
List<ProjectVersion> foundProjectsToSkip = new LinkedList<>();
projects.forEach(projectVersion -> {
if (properties.getMetaRelease().getProjectsToSkip().stream()
.anyMatch(projectVersion.projectName::startsWith)) {
foundProjectsToSkip.add(projectVersion);
}
else {
foundProjectsToBump.add(projectVersion);
}
});
Projects newProjects = new Projects(foundProjectsToSkip);
foundProjectsToBump.forEach(projectVersion -> newProjects
.add(new ProjectVersion(projectVersion.projectName,
projectVersion.postReleaseSnapshotVersion())));
newProjects.addAll(foundProjectsToSkip);
return newProjects;
}

View File

@@ -88,9 +88,10 @@ public class ReleaserTests {
}
Releaser releaser(Supplier<ProjectVersion> originalVersionSupplier) {
return new Releaser(this.projectPomUpdater, this.projectBuilder,
this.projectGitHandler, this.templateGenerator, this.gradleUpdater,
this.saganUpdater, this.documentationUpdater, this.postReleaseActions) {
return new Releaser(new ReleaserProperties(), this.projectPomUpdater,
this.projectBuilder, this.projectGitHandler, this.templateGenerator,
this.gradleUpdater, this.saganUpdater, this.documentationUpdater,
this.postReleaseActions) {
@Override
ProjectVersion originalVersion(File project) {
return originalVersionSupplier.get();
@@ -99,9 +100,10 @@ public class ReleaserTests {
}
Releaser releaser() {
return new Releaser(this.projectPomUpdater, this.projectBuilder,
this.projectGitHandler, this.templateGenerator, this.gradleUpdater,
this.saganUpdater, this.documentationUpdater, this.postReleaseActions);
return new Releaser(new ReleaserProperties(), this.projectPomUpdater,
this.projectBuilder, this.projectGitHandler, this.templateGenerator,
this.gradleUpdater, this.saganUpdater, this.documentationUpdater,
this.postReleaseActions);
}
@Test

View File

@@ -78,8 +78,9 @@ public class ProjectGitHandlerTests {
@Test
public void should_commit_when_snapshot_version_is_present_with_post_release_msg() {
this.updater.commitAfterBumpingVersions(this.file,
projectVersion("1.0.0.BUILD-SNAPSHOT"));
ProjectVersion bumped = new ProjectVersion("name",
projectVersion("1.0.0.BUILD-SNAPSHOT").bumpedVersion());
this.updater.commitAfterBumpingVersions(this.file, bumped);
then(this.gitRepo).should()
.commit(eq("Bumping versions to 1.0.1.BUILD-SNAPSHOT after release"));

View File

@@ -167,6 +167,18 @@ public class ProjectVersionTests {
.isEqualTo("Finchley.BUILD-SNAPSHOT");
}
@Test
public void should_not_bump_version_by_patch_version_when_non_ga_or_sr_with_hyphen() {
then(projectVersion("1.0.1-BUILD-SNAPSHOT").postReleaseSnapshotVersion())
.isEqualTo("1.0.1-BUILD-SNAPSHOT");
then(projectVersion("1.0.1-M1").postReleaseSnapshotVersion())
.isEqualTo("1.0.1-BUILD-SNAPSHOT");
then(projectVersion("1.0.1-RC1").postReleaseSnapshotVersion())
.isEqualTo("1.0.1-BUILD-SNAPSHOT");
then(projectVersion("Finchley-SR1").postReleaseSnapshotVersion())
.isEqualTo("Finchley-BUILD-SNAPSHOT");
}
@Test
public void should_bump_version_by_patch_version_when_bumping_snapshots_for_ga() {
then(projectVersion("1.0.1.RELEASE").postReleaseSnapshotVersion())
@@ -181,6 +193,14 @@ public class ProjectVersionTests {
.isEqualTo("Edgware.BUILD-SNAPSHOT");
}
@Test
public void should_return_the_previous_version_for_hyphen_release_train_version_when_bumping_snapshots() {
String version = "Edgware-BUILD-SNAPSHOT";
then(projectVersion(version).postReleaseSnapshotVersion())
.isEqualTo("Edgware-BUILD-SNAPSHOT");
}
@Test
public void should_bump_version_by_patch_version_when_bumping_releases() {
String version = "1.0.1.RELEASE";
@@ -189,6 +209,14 @@ public class ProjectVersionTests {
.isEqualTo("1.0.2.BUILD-SNAPSHOT");
}
@Test
public void should_bump_version_by_patch_version_when_bumping_releases_with_hyphen() {
String version = "1.0.1-RELEASE";
then(projectVersion(version).postReleaseSnapshotVersion())
.isEqualTo("1.0.2-BUILD-SNAPSHOT");
}
@Test
public void should_return_the_previous_version_for_release_train_version_when_bumping_releases() {
String version = "Edgware.RELEASE";

View File

@@ -78,21 +78,26 @@ public class ProjectsTests {
Set<ProjectVersion> projectVersions = new HashSet<>();
ProjectVersion build = new ProjectVersion("spring-cloud-build", "1.0.0.RELEASE");
projectVersions.add(build);
ProjectVersion boot = new ProjectVersion("spring-boot-starter", "2.0.0");
ProjectVersion boot = new ProjectVersion("spring-boot-starter", "2.0.0.RELEASE");
projectVersions.add(boot);
ProjectVersion bootDeps = new ProjectVersion("spring-boot-dependencies", "2.0.0");
ProjectVersion bootDeps = new ProjectVersion("spring-boot-dependencies",
"2.0.0.RELEASE");
projectVersions.add(bootDeps);
ProjectVersion original = new ProjectVersion("spring-cloud-starter-foo",
"3.0.0.BUILD-SNAPSHOT");
projectVersions.add(original);
Projects projects = new Projects(projectVersions);
Projects forRollback = Projects.forRollback(projects, original);
Projects forRollback = Projects.forRollback(new ReleaserProperties(), projects);
then(forRollback.forName("spring-boot-starter").version).isEqualTo("2.0.0");
then(forRollback.forName("spring-boot-dependencies").version).isEqualTo("2.0.0");
then(forRollback.forName("spring-cloud-build").version)
.isEqualTo("1.0.1.BUILD-SNAPSHOT");
then(forRollback.forName("spring-boot-starter").version)
.isEqualTo("2.0.0.RELEASE");
then(forRollback.forName("spring-boot-dependencies").version)
.isEqualTo("2.0.0.RELEASE");
then(forRollback.forName("spring-cloud-starter-foo").version)
.isEqualTo("3.0.1.BUILD-SNAPSHOT");
.isEqualTo("3.0.0.BUILD-SNAPSHOT");
}
@Test

View File

@@ -111,10 +111,11 @@ class ReleaserConfiguration {
ProjectGitHandler projectGitHandler, TemplateGenerator templateGenerator,
GradleUpdater gradleUpdater, SaganUpdater saganUpdater,
DocumentationUpdater documentationUpdater,
PostReleaseActions postReleaseActions) {
return new Releaser(projectPomUpdater, projectBuilder, projectGitHandler,
templateGenerator, gradleUpdater, saganUpdater, documentationUpdater,
postReleaseActions);
PostReleaseActions postReleaseActions,
ReleaserProperties releaserProperties) {
return new Releaser(releaserProperties, projectPomUpdater, projectBuilder,
projectGitHandler, templateGenerator, gradleUpdater, saganUpdater,
documentationUpdater, postReleaseActions);
}
@Bean

View File

@@ -33,6 +33,7 @@ import java.util.Map;
import org.apache.maven.model.Model;
import org.assertj.core.api.BDDAssertions;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.ResetCommand;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.After;
@@ -193,6 +194,8 @@ public class AcceptanceTests {
@Test
public void should_perform_a_release_of_consul() throws Exception {
GitTestUtils.openGitProject(file("/projects/spring-cloud-release/")).checkout()
.setName("Greenwich").call();
File origin = GitTestUtils.clonedProject(this.tmp.newFolder(),
this.springCloudConsulProject);
pomVersionIsEqualTo(origin, "1.2.0.BUILD-SNAPSHOT");
@@ -200,48 +203,42 @@ public class AcceptanceTests {
File project = GitTestUtils.clonedProject(this.tmp.newFolder(),
tmpFile("spring-cloud-consul"));
GitTestUtils.setOriginOnProjectToTmp(origin, project);
SpringReleaser releaser = releaser(project, "spring-cloud-consul", "vCamden.SR5",
"1.1.2.RELEASE");
SpringReleaser releaser = releaser(project, "spring-cloud-consul",
"vGreenwich.SR2", "2.1.2.RELEASE");
releaser.release();
Iterable<RevCommit> commits = listOfCommits(project);
Iterator<RevCommit> iterator = commits.iterator();
tagIsPresentInOrigin(origin, "v1.1.2.RELEASE");
tagIsPresentInOrigin(origin, "v2.1.2.RELEASE");
commitIsPresent(iterator,
"Bumping versions to 1.2.1.BUILD-SNAPSHOT after release");
"Bumping versions to 2.1.3.BUILD-SNAPSHOT after release");
commitIsPresent(iterator, "Going back to snapshots");
commitIsPresent(iterator, "Update SNAPSHOT to 1.1.2.RELEASE");
pomVersionIsEqualTo(project, "1.2.1.BUILD-SNAPSHOT");
consulPomParentVersionIsEqualTo(project, "1.2.1.BUILD-SNAPSHOT");
commitIsPresent(iterator, "Update SNAPSHOT to 2.1.2.RELEASE");
pomVersionIsEqualTo(project, "2.1.3.BUILD-SNAPSHOT");
consulPomParentVersionIsEqualTo(project, "2.1.3.BUILD-SNAPSHOT");
then(this.gitHandler.closedMilestones).isTrue();
then(emailTemplate()).exists();
then(emailTemplateContents()).contains("Spring Cloud Camden.SR5 available")
.contains("Spring Cloud Camden SR5 Train release");
then(emailTemplateContents()).contains("Spring Cloud Greenwich.SR2 available")
.contains("Spring Cloud Greenwich SR2 Train release");
then(blogTemplate()).exists();
then(blogTemplateContents())
.contains("I am pleased to announce that the Service Release 5 (SR5)");
.contains("I am pleased to announce that the Service Release 2 (SR2)");
then(releaseNotesTemplate()).exists();
then(releaseNotesTemplateContents()).contains("Camden.SR5").contains(
"- Spring Cloud Config `1.2.2.RELEASE` ([issues](https://foo.bar.com/1.2.2.RELEASE))")
then(releaseNotesTemplateContents()).contains("Greenwich.SR2").contains(
"- Spring Cloud Config `2.1.3.RELEASE` ([issues](https://foo.bar.com/2.1.3.RELEASE))")
.contains(
"- Spring Cloud Aws `1.1.3.RELEASE` ([issues](https://foo.bar.com/1.1.3.RELEASE))");
"- Spring Cloud Aws `2.1.2.RELEASE` ([issues](https://foo.bar.com/2.1.2.RELEASE))");
// once for updating GA
// second time to update SNAPSHOT
BDDMockito.then(this.saganClient).should(BDDMockito.times(2)).updateRelease(
BDDMockito.eq("spring-cloud-consul"), BDDMockito.anyList());
BDDMockito.then(this.saganClient).should().deleteRelease("spring-cloud-consul",
"1.1.2.BUILD-SNAPSHOT");
BDDMockito.then(this.saganClient).should().deleteRelease("spring-cloud-consul",
"1.1.0.M8");
BDDMockito.then(this.saganClient).should(BDDMockito.never())
.deleteRelease("spring-cloud-build", "1.0.0.M8");
BDDMockito.then(this.saganClient).should(BDDMockito.never())
.deleteRelease("spring-cloud-build", "2.0.0.M8");
"2.1.2.BUILD-SNAPSHOT");
then(this.gitHandler.issueCreatedInSpringGuides).isTrue();
then(this.gitHandler.issueCreatedInStartSpringIo).isTrue();
then(text(new File(this.documentationFolder, "current/index.html")))
.doesNotContain("Angel.SR3").contains("Camden.SR5");
.doesNotContain("Angel.SR3").contains("Greenwich.SR2");
thenRunUpdatedTestsWereCalled();
}
@@ -249,6 +246,8 @@ public class AcceptanceTests {
public void should_perform_a_meta_release_of_sc_release_and_consul()
throws Exception {
// simulates an org
GitTestUtils.openGitProject(file("/projects/spring-cloud-release/")).checkout()
.setName("Edgware").call();
SpringReleaser releaser = metaReleaser(edgwareSr10());
releaser.release(new OptionsBuilder().metaRelease(true).options());
@@ -260,7 +259,7 @@ public class AcceptanceTests {
thenSaganWasCalled();
thenDocumentationWasUpdated();
BDDAssertions.then(clonedProject("spring-cloud-consul").tagList().call())
.extracting("name").contains("refs/tags/v1.3.5.RELEASE");
.extracting("name").contains("refs/tags/v5.3.5.RELEASE");
thenRunUpdatedTestsWereCalled();
thenUpdateReleaseTrainDocsWasCalled();
}
@@ -277,24 +276,24 @@ public class AcceptanceTests {
private Map<String, String> edgwareSr10() {
Map<String, String> versions = new LinkedHashMap<>();
versions.put("spring-boot", "1.5.16.RELEASE");
versions.put("spring-cloud-build", "1.3.11.RELEASE");
versions.put("spring-cloud-commons", "1.3.5.RELEASE");
versions.put("spring-cloud-stream", "Ditmars.SR4");
versions.put("spring-cloud-task", "1.2.3.RELEASE");
versions.put("spring-cloud-function", "1.0.1.RELEASE");
versions.put("spring-cloud-aws", "1.2.3.RELEASE");
versions.put("spring-cloud-bus", "1.3.4.RELEASE");
versions.put("spring-cloud-config", "1.4.5.RELEASE");
versions.put("spring-cloud-netflix", "1.4.6.RELEASE");
versions.put("spring-cloud-cloudfoundry", "1.1.2.RELEASE");
versions.put("spring-cloud-gateway", "1.0.2.RELEASE");
versions.put("spring-cloud-security", "1.2.3.RELEASE");
versions.put("spring-cloud-consul", "1.3.5.RELEASE");
versions.put("spring-cloud-zookeeper", "1.2.2.RELEASE");
versions.put("spring-cloud-sleuth", "1.3.5.RELEASE");
versions.put("spring-cloud-contract", "1.2.6.RELEASE");
versions.put("spring-cloud-vault", "1.1.2.RELEASE");
versions.put("spring-boot", "5.5.16.RELEASE");
versions.put("spring-cloud-build", "5.3.11.RELEASE");
versions.put("spring-cloud-commons", "5.3.5.RELEASE");
versions.put("spring-cloud-stream", "Xitmars.SR4");
versions.put("spring-cloud-task", "5.2.3.RELEASE");
versions.put("spring-cloud-function", "5.0.1.RELEASE");
versions.put("spring-cloud-aws", "5.2.3.RELEASE");
versions.put("spring-cloud-bus", "5.3.4.RELEASE");
versions.put("spring-cloud-config", "5.4.5.RELEASE");
versions.put("spring-cloud-netflix", "5.4.6.RELEASE");
versions.put("spring-cloud-cloudfoundry", "5.1.2.RELEASE");
versions.put("spring-cloud-gateway", "5.0.2.RELEASE");
versions.put("spring-cloud-security", "5.2.3.RELEASE");
versions.put("spring-cloud-consul", "5.3.5.RELEASE");
versions.put("spring-cloud-zookeeper", "5.2.2.RELEASE");
versions.put("spring-cloud-sleuth", "5.3.5.RELEASE");
versions.put("spring-cloud-contract", "5.2.6.RELEASE");
versions.put("spring-cloud-vault", "5.1.2.RELEASE");
versions.put("spring-cloud-release", "Edgware.SR10");
return versions;
}
@@ -417,6 +416,8 @@ public class AcceptanceTests {
// issue #74
@Test
public void should_perform_a_release_of_sc_build() throws Exception {
GitTestUtils.openGitProject(file("/projects/spring-cloud-release/")).checkout()
.setName("vGreenwich.SR2").call();
File origin = GitTestUtils.clonedProject(this.tmp.newFolder(),
new File(AcceptanceTests.class.getResource("/projects/spring-cloud-build")
.toURI()));
@@ -426,22 +427,22 @@ public class AcceptanceTests {
File project = GitTestUtils.clonedProject(this.tmp.newFolder(),
tmpFile("spring-cloud-build"));
GitTestUtils.setOriginOnProjectToTmp(origin, project);
SpringReleaser releaser = releaser(project, "spring-cloud-build", "vCamden.SR5",
"1.2.2.RELEASE");
SpringReleaser releaser = releaser(project, "spring-cloud-build",
"vGreenwich.SR2", "2.1.6.RELEASE");
releaser.release();
Iterable<RevCommit> commits = listOfCommits(project);
Iterator<RevCommit> iterator = commits.iterator();
tagIsPresentInOrigin(origin, "v1.2.2.RELEASE");
tagIsPresentInOrigin(origin, "v2.1.6.RELEASE");
// we're running against camden sc-release
commitIsPresent(iterator,
"Bumping versions to 1.3.8.BUILD-SNAPSHOT after release");
"Bumping versions to 2.1.7.BUILD-SNAPSHOT after release");
commitIsPresent(iterator, "Going back to snapshots");
commitIsPresent(iterator, "Update SNAPSHOT to 1.2.2.RELEASE");
pomVersionIsEqualTo(project, "1.3.8.BUILD-SNAPSHOT");
commitIsPresent(iterator, "Update SNAPSHOT to 2.1.6.RELEASE");
pomVersionIsEqualTo(project, "2.1.7.BUILD-SNAPSHOT");
pomParentVersionIsEqualTo(project, "spring-cloud-build-dependencies",
"1.4.4.RELEASE");
"2.1.6.RELEASE");
then(this.gitHandler.closedMilestones).isTrue();
then(emailTemplate()).exists();
then(blogTemplate()).exists();
@@ -451,17 +452,11 @@ public class AcceptanceTests {
BDDMockito.then(this.saganClient).should(BDDMockito.times(2))
.updateRelease(BDDMockito.eq("spring-cloud-build"), BDDMockito.anyList());
BDDMockito.then(this.saganClient).should().deleteRelease("spring-cloud-build",
"1.2.2.BUILD-SNAPSHOT");
BDDMockito.then(this.saganClient).should().deleteRelease("spring-cloud-build",
"1.2.0.M8");
BDDMockito.then(this.saganClient).should(BDDMockito.never())
.deleteRelease("spring-cloud-build", "1.1.0.M8");
BDDMockito.then(this.saganClient).should(BDDMockito.never())
.deleteRelease("spring-cloud-build", "2.0.0.M8");
"2.1.6.BUILD-SNAPSHOT");
then(this.gitHandler.issueCreatedInSpringGuides).isTrue();
then(this.gitHandler.issueCreatedInStartSpringIo).isTrue();
then(text(new File(this.documentationFolder, "current/index.html")))
.doesNotContain("Angel.SR3").contains("Camden.SR5");
.doesNotContain("Angel.SR3").contains("Greenwich.SR2");
}
@Test
@@ -473,7 +468,10 @@ public class AcceptanceTests {
File project = GitTestUtils.clonedProject(this.tmp.newFolder(),
tmpFile("spring-cloud-consul"));
GitTestUtils.setOriginOnProjectToTmp(origin, project);
SpringReleaser releaser = releaser(project, "spring-cloud-consul", "Dalston.RC1",
Git git = GitTestUtils.openGitProject(file("/projects/spring-cloud-release/"));
git.reset().setMode(ResetCommand.ResetType.HARD).setRef("vDalston.RC1").call();
git.checkout().setName("vDalston.RC1").call();
SpringReleaser releaser = releaser(project, "spring-cloud-consul", "vDalston.RC1",
"1.2.0.RC1");
releaser.release();
@@ -517,6 +515,8 @@ public class AcceptanceTests {
@Test
public void should_generate_templates_only() throws Exception {
GitTestUtils.openGitProject(file("/projects/spring-cloud-release/")).checkout()
.setName("vDalston.RC1").call();
File origin = GitTestUtils.clonedProject(this.tmp.newFolder(),
this.springCloudConsulProject);
pomVersionIsEqualTo(origin, "1.2.0.BUILD-SNAPSHOT");
@@ -525,7 +525,7 @@ public class AcceptanceTests {
tmpFile("spring-cloud-consul"));
GitTestUtils.setOriginOnProjectToTmp(origin, project);
SpringReleaser releaser = templateOnlyReleaser(project, "spring-cloud-consul",
"Dalston.RC1", "1.2.0.RC1");
"vDalston.RC1", "1.2.0.RC1");
releaser.release();
@@ -716,9 +716,9 @@ public class AcceptanceTests {
return file;
}
};
Releaser releaser = new Releaser(pomUpdater, projectBuilder, handler,
templateGenerator, gradleUpdater, saganUpdater, documentationUpdater,
this.postReleaseActions);
Releaser releaser = new Releaser(releaserProperties, pomUpdater, projectBuilder,
handler, templateGenerator, gradleUpdater, saganUpdater,
documentationUpdater, this.postReleaseActions);
this.gitHandler = handler;
return releaser;
}
@@ -755,9 +755,9 @@ public class AcceptanceTests {
return file;
}
});
Releaser releaser = Mockito.spy(new Releaser(pomUpdater, projectBuilder, handler,
templateGenerator, gradleUpdater, saganUpdater, documentationUpdater,
this.postReleaseActions));
Releaser releaser = Mockito.spy(new Releaser(releaserProperties, pomUpdater,
projectBuilder, handler, templateGenerator, gradleUpdater, saganUpdater,
documentationUpdater, this.postReleaseActions));
this.nonAssertingGitHandler = handler;
this.templateGenerator = templateGenerator;
this.saganUpdater = saganUpdater;

View File

@@ -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

View File

@@ -1,9 +0,0 @@
sudo: false
cache:
directories:
- $HOME/.m2
language: java
before_install:
- gem install asciidoctor
script:
- ./mvnw clean install -P docs -q -U -Dmaven.test.redirectTestOutputToFile=true

View File

@@ -70,7 +70,7 @@ and to deploy snapshots to repo.spring.io:
$ mvn install -DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local
----
for a.BUILD-SNAPSHOT build use
for a RELEASE build use
----
$ mvn install -DaltReleaseDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-release-local
@@ -82,4 +82,4 @@ 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).
(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).

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-build</artifactId>
<version>Dalston.BUILD-SNAPSHOT</version>
<version>Hoxton.BUILD-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>
<name>Spring Cloud Starter Docs</name>
@@ -15,7 +15,7 @@
<properties>
<docs.main>spring-cloud-starters</docs.main>
<main.basedir>${basedir}/..</main.basedir>
<docs.whitelisted.branches>Brixton,Camden,Dalston</docs.whitelisted.branches>
<docs.whitelisted.branches>Edgware,Finchley,Greenwich</docs.whitelisted.branches>
</properties>
<build>
<plugins>
@@ -31,21 +31,22 @@
<profile>
<id>docs</id>
<build>
<plugins>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<inherited>false</inherited>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<inherited>false</inherited>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<inherited>false</inherited>
</plugin>
</plugins>
</build>

View File

@@ -19,7 +19,7 @@ and to deploy snapshots to repo.spring.io:
$ mvn install -DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local
----
for a.BUILD-SNAPSHOT build use
for a RELEASE build use
----
$ mvn install -DaltReleaseDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-release-local

View File

@@ -327,4 +327,4 @@ build_docs_if_applicable
retrieve_doc_properties
stash_changes
add_docs_from_target
checkout_previous_branch
checkout_previous_branch

View File

@@ -4,4 +4,4 @@ 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).
stations ("Angel" is the first release, "Brixton" is the second).

View File

@@ -1,9 +1,9 @@
:github: https://github.com/spring-cloud/spring-cloud-release
:githubmaster: {github}/tree/master
:docslink: {githubmaster}/docs/src/main/asciidoc
:springcloudversion: Dalston.BUILD-SNAPSHOT
:springioplatformversion: Brussels-BUILD-SNAPSHOT
:springBootVersion: 1.5.0.BUILD-SNAPSHOT
:springcloudversion: Greenwich.BUILD-SNAPSHOT
:springioplatformversion: Cairo-SR3
:springBootVersion: 2.1.0.M1
= Spring Cloud Release Train

View File

@@ -1,37 +0,0 @@
#!/usr/bin/env ruby
base_dir = File.join(File.dirname(__FILE__),'../../..')
src_dir = File.join(base_dir, "/src/main/asciidoc")
require 'asciidoctor'
require 'optparse'
options = {}
file = "#{src_dir}/README.adoc"
OptionParser.new do |o|
o.on('-o OUTPUT_FILE', 'Output file (default is stdout)') { |file| options[:to_file] = file unless file=='-' }
o.on('-h', '--help') { puts o; exit }
o.parse!
end
file = ARGV[0] if ARGV.length>0
# Copied from https://github.com/asciidoctor/asciidoctor-extensions-lab/blob/master/scripts/asciidoc-coalescer.rb
doc = Asciidoctor.load_file file, safe: :unsafe, header_only: true, attributes: options[:attributes]
header_attr_names = (doc.instance_variable_get :@attributes_modified).to_a
header_attr_names.each {|k| doc.attributes[%(#{k}!)] = '' unless doc.attr? k }
attrs = doc.attributes
attrs['allow-uri-read'] = true
puts attrs
out = "// Do not edit this file (e.g. go instead to src/main/asciidoc)\n\n"
doc = Asciidoctor.load_file file, safe: :unsafe, parse: false, attributes: attrs
out << doc.reader.read
unless options[:to_file]
puts out
else
File.open(options[:to_file],'w+') do |file|
file.write(out)
end
end

View File

@@ -1 +1 @@
Added build + projects retrieval
Added spring cloud build to the list of dependencies

View File

@@ -1 +1 @@
0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 branch 'master' of github.com:spring-cloud/spring-cloud-release
df9f8dd8313f3b5d9a2a75ffb737bf328c6ca00d branch 'Edgware' of github.com:spring-cloud/spring-cloud-release

View File

@@ -1 +1 @@
ref: refs/heads/Camden
ref: refs/heads/master

View File

@@ -1 +1 @@
0ccd2833e149e9b8a7974ecf74a5e9e172322ab9
df9f8dd8313f3b5d9a2a75ffb737bf328c6ca00d

View File

@@ -3,10 +3,8 @@
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
[branch "master"]
[branch "Camden.x"]
[branch "Brixton"]
[branch "Dalston.RC1"]
[branch "Edgware"]
[branch "Dalston"]
[branch "Finchley"]

View File

@@ -0,0 +1,114 @@
#!/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 1) and a time in nanoseconds
# formatted as a string and outputs to stdout all files that have been
# modified since the given time. 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, $time) = @ARGV;
# Check the hook interface version
if ($version == 1) {
# convert nanoseconds to seconds
$time = int $time / 1000000000;
} else {
die "Unsupported query-fsmonitor hook version '$version'.\n" .
"Falling back to scanning...\n";
}
my $git_work_tree;
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
$git_work_tree = Win32::GetCwd();
$git_work_tree =~ tr/\\/\//;
} else {
require Cwd;
$git_work_tree = Cwd::cwd();
}
my $retry = 1;
launch_watchman();
sub launch_watchman {
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 $time but were not transient (ie created after
# $time but no longer exist).
#
# 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.
#
# The category of transient files that we want to ignore will have a
# creation clock (cclock) newer than $time_t value and will also not
# currently exist.
my $query = <<" END";
["query", "$git_work_tree", {
"since": $time,
"fields": ["name"],
"expression": ["not", ["allof", ["since", $time, "cclock"], ["not", "exists"]]]
}]
END
print CHLD_IN $query;
close CHLD_IN;
my $response = do {local $/; <CHLD_OUT>};
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 =~ /^\{/;
my $json_pkg;
eval {
require JSON::XS;
$json_pkg = "JSON::XS";
1;
} or do {
require JSON::PP;
$json_pkg = "JSON::PP";
};
my $o = $json_pkg->new->utf8->decode($response);
if ($retry > 0 and $o->{error} and $o->{error} =~ m/unable to resolve root .* directory (.*) is not watched/) {
print STDERR "Adding '$git_work_tree' to watchman's watch list.\n";
$retry--;
qx/watchman watch "$git_work_tree"/;
die "Failed to make watchman watch '$git_work_tree'.\n" .
"Falling back to scanning...\n" if $? != 0;
# 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.
print "/\0";
eval { launch_watchman() };
exit 0;
}
die "Watchman: $o->{error}.\n" .
"Falling back to scanning...\n" if $o->{error};
binmode STDOUT, ":utf8";
local $, = "\0";
print @{$o->{files}};
}

View File

@@ -58,7 +58,7 @@ 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"
echo >&2 "$topic is already up to date with master"
exit 1 ;# we could allow it, but there is no point.
else
exit 0
@@ -88,9 +88,7 @@ else
exit 1
fi
exit 0
################################################################
<<\DOC_END
This sample hook safeguards topic branches that have been
published from being rewound.
@@ -167,3 +165,5 @@ To compute (2):
git rev-list master..topic
if this is empty, it is fully merged to "master".
DOC_END

View File

@@ -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

View File

@@ -9,8 +9,8 @@
#
# To enable this hook, rename this file to "prepare-commit-msg".
# This hook includes three examples. The first comments out the
# "Conflicts:" part of a merge commit.
# 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
@@ -20,17 +20,23 @@
# The third example adds a Signed-off-by line to the message, that can
# still be edited. This is rarely a good idea.
case "$2,$3" in
merge,)
/usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
# ,|template,)
# /usr/bin/perl -i.bak -pe '
# print "\n" . `git diff --cached --name-status -r`
# if /^#/ && $first++ == 0' "$1" ;;
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
*) ;;
esac
# 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_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
# 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

View File

@@ -1,34 +1,42 @@
0000000000000000000000000000000000000000 3f8925dcec6d590f62429edea458812128c1c57f Marcin Grzejszczak <marcin@grzejszczak.pl> 1481127445 +0100 clone: from git@github.com:spring-cloud/spring-cloud-release.git
3f8925dcec6d590f62429edea458812128c1c57f c8bb5894e1e198e5fe646b97bcbb75fe4746d30b Marcin Grzejszczak <marcin@grzejszczak.pl> 1481127532 +0100 checkout: moving from master to Camden.x
c8bb5894e1e198e5fe646b97bcbb75fe4746d30b 3f8925dcec6d590f62429edea458812128c1c57f Marcin Grzejszczak <marcin@grzejszczak.pl> 1481128710 +0100 checkout: moving from Camden.x to master
3f8925dcec6d590f62429edea458812128c1c57f 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1481128769 +0100 commit: Bumping contract for Dalston
821555cad8a6132fd045755733e6a0ec6d0957f3 6882449721e48f955b102606ae3fc2535ebbd4cb Marcin Grzejszczak <marcin@grzejszczak.pl> 1481883884 +0100 checkout: moving from master to Brixton
6882449721e48f955b102606ae3fc2535ebbd4cb 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1482244810 +0100 checkout: moving from Brixton to master
821555cad8a6132fd045755733e6a0ec6d0957f3 6882449721e48f955b102606ae3fc2535ebbd4cb Marcin Grzejszczak <marcin@grzejszczak.pl> 1482244826 +0100 checkout: moving from master to Brixton
6882449721e48f955b102606ae3fc2535ebbd4cb c8bb5894e1e198e5fe646b97bcbb75fe4746d30b Marcin Grzejszczak <marcin@grzejszczak.pl> 1482244860 +0100 checkout: moving from Brixton to Camden.x
c8bb5894e1e198e5fe646b97bcbb75fe4746d30b 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1482244875 +0100 checkout: moving from Camden.x to master
821555cad8a6132fd045755733e6a0ec6d0957f3 c8bb5894e1e198e5fe646b97bcbb75fe4746d30b Marcin Grzejszczak <marcin@grzejszczak.pl> 1484220811 +0100 checkout: moving from master to Camden.x
c8bb5894e1e198e5fe646b97bcbb75fe4746d30b 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488793315 +0100 reset: moving to origin/master
821555cad8a6132fd045755733e6a0ec6d0957f3 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488793321 +0100 pull --rebase origin master: checkout 320597b84bb0312c15228c4d42f46c189b86ed90
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488793321 +0100 rebase finished: returning to refs/heads/Camden.x
320597b84bb0312c15228c4d42f46c189b86ed90 dd05da06f317a22d8f86911830737b57ca3add5c Marcin Grzejszczak <marcin@grzejszczak.pl> 1488800938 +0100 checkout: moving from Camden.x to vCamden.SR3
dd05da06f317a22d8f86911830737b57ca3add5c 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488809148 +0100 checkout: moving from dd05da06f317a22d8f86911830737b57ca3add5c to master
821555cad8a6132fd045755733e6a0ec6d0957f3 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488809155 +0100 pull --rebase origin master: checkout 320597b84bb0312c15228c4d42f46c189b86ed90
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488809155 +0100 rebase finished: returning to refs/heads/master
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488899990 +0100 checkout: moving from master to Camden.x
320597b84bb0312c15228c4d42f46c189b86ed90 b566ab3bea0506bccaa10f83784a41673606d6ee Marcin Grzejszczak <marcin@grzejszczak.pl> 1488899998 +0100 pull --rebase origin Camden.x: checkout b566ab3bea0506bccaa10f83784a41673606d6ee
b566ab3bea0506bccaa10f83784a41673606d6ee 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489662682 +0100 reset: moving to origin/master
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489662684 +0100 checkout: moving from 320597b84bb0312c15228c4d42f46c189b86ed90 to master
320597b84bb0312c15228c4d42f46c189b86ed90 91881ba86e2f7c9cb12ec883c063e391c7e025d2 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663227 +0100 checkout: moving from master to vDalston.M1
91881ba86e2f7c9cb12ec883c063e391c7e025d2 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663239 +0100 checkout: moving from 91881ba86e2f7c9cb12ec883c063e391c7e025d2 to master
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663258 +0100 rebase: aborting
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663258 +0100 rebase: updating HEAD
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663262 +0100 checkout: moving from Camden.x to master
320597b84bb0312c15228c4d42f46c189b86ed90 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663275 +0100 pull --rebase origin master: checkout 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9
0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663275 +0100 rebase finished: returning to refs/heads/master
0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 29dde5f8e4c5096612ac8669dd7bfbcc95c7ef39 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489664824 +0100 checkout: moving from master to Dalston.RC1
29dde5f8e4c5096612ac8669dd7bfbcc95c7ef39 e4d44f5a1a67429e37edbb57d3da96bb6717266c Marcin Grzejszczak <marcin@grzejszczak.pl> 1489668889 +0100 checkout: moving from Dalston.RC1 to vCamden.M1
e4d44f5a1a67429e37edbb57d3da96bb6717266c 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489668895 +0100 checkout: moving from e4d44f5a1a67429e37edbb57d3da96bb6717266c to master
0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 Marcin Grzejszczak <mgrzejszczak@pivotal.io> 1530201218 +0200 reset: moving to HEAD
0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <mgrzejszczak@pivotal.io> 1530201221 +0200 checkout: moving from master to Camden.x
320597b84bb0312c15228c4d42f46c189b86ed90 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <mgrzejszczak@pivotal.io> 1530201227 +0200 checkout: moving from Camden.x to Camden
0000000000000000000000000000000000000000 4696b27899c5144635a2e1ab8a7e4d7e90e9a922 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940461 +0100 clone: from git@github.com:spring-cloud/spring-cloud-release.git
4696b27899c5144635a2e1ab8a7e4d7e90e9a922 4696b27899c5144635a2e1ab8a7e4d7e90e9a922 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940477 +0100 checkout: moving from master to build_for_greenwich
4696b27899c5144635a2e1ab8a7e4d7e90e9a922 3444ec7655081e8baaa9d67da39003413f152361 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940701 +0100 commit: bumped
3444ec7655081e8baaa9d67da39003413f152361 25d36c116933e83f5e11c87eb6abba491226a517 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940993 +0100 commit: WAT
25d36c116933e83f5e11c87eb6abba491226a517 4696b27899c5144635a2e1ab8a7e4d7e90e9a922 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074103 +0100 checkout: moving from build_for_greenwich to master
4696b27899c5144635a2e1ab8a7e4d7e90e9a922 7eb07fb2cfe5167e7b8f4d1e8b5ca97b2172f337 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074111 +0100 pull --rebase origin master: Fast-forward
7eb07fb2cfe5167e7b8f4d1e8b5ca97b2172f337 84dcb519ab8b24c170b193d3da3c1d72d2ffff09 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074254 +0100 commit: Bumped Spring Cloud Build
84dcb519ab8b24c170b193d3da3c1d72d2ffff09 371f4038422970a25bafcab8827f01c86f67915e Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074263 +0100 commit (amend): Bumped Spring Cloud Build
371f4038422970a25bafcab8827f01c86f67915e f46f941f5869e8bd70041c8842953f6ffd6da7d4 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548417223 +0100 pull --rebase origin master: Fast-forward
f46f941f5869e8bd70041c8842953f6ffd6da7d4 94e5602cb92e15adbc9de624264647066fb87cd1 Marcin Grzejszczak <marcin@grzejszczak.pl> 1549649256 +0100 commit: Added checkstyle
94e5602cb92e15adbc9de624264647066fb87cd1 caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976044 +0100 pull --rebase origin master: Fast-forward
caa72691da75cfb9208264d33b80ac39fc744cd6 caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976053 +0100 checkout: moving from master to Greenwich
caa72691da75cfb9208264d33b80ac39fc744cd6 caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976062 +0100 checkout: moving from Greenwich to master
caa72691da75cfb9208264d33b80ac39fc744cd6 01deb507356f4a36ea3209f8e57ddbac348f460b Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976352 +0100 commit: Hoxton
01deb507356f4a36ea3209f8e57ddbac348f460b 01deb507356f4a36ea3209f8e57ddbac348f460b Marcin Grzejszczak <marcin@grzejszczak.pl> 1552062251 +0100 reset: moving to HEAD
01deb507356f4a36ea3209f8e57ddbac348f460b a33643672892641471e4dca82a38f72c8ca3f35f Marcin Grzejszczak <marcin@grzejszczak.pl> 1552062520 +0100 commit: Updated for Hoxton
a33643672892641471e4dca82a38f72c8ca3f35f a33643672892641471e4dca82a38f72c8ca3f35f Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520096 +0100 checkout: moving from master to scBuild214
a33643672892641471e4dca82a38f72c8ca3f35f a33643672892641471e4dca82a38f72c8ca3f35f Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520108 +0100 checkout: moving from scBuild214 to master
a33643672892641471e4dca82a38f72c8ca3f35f caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520120 +0100 checkout: moving from master to Greenwich
caa72691da75cfb9208264d33b80ac39fc744cd6 9e70d9508ce6faafcb9ab785b1f939540c0deac6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520129 +0100 pull --rebase origin Greenwich: Fast-forward
9e70d9508ce6faafcb9ab785b1f939540c0deac6 9e70d9508ce6faafcb9ab785b1f939540c0deac6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520931 +0100 checkout: moving from Greenwich to scBuild214
9e70d9508ce6faafcb9ab785b1f939540c0deac6 0dfe0b0d109afe8969c2379a1d9789ae15e80e32 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520937 +0100 commit: BUild 2.1.4
0dfe0b0d109afe8969c2379a1d9789ae15e80e32 8aa3cb92a11adedbc5acfb300e721e0c7c7cd875 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553521862 +0100 commit: No snapshots
8aa3cb92a11adedbc5acfb300e721e0c7c7cd875 9e70d9508ce6faafcb9ab785b1f939540c0deac6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553890436 +0100 checkout: moving from scBuild214 to Greenwich
9e70d9508ce6faafcb9ab785b1f939540c0deac6 9e70d9508ce6faafcb9ab785b1f939540c0deac6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1557912513 +0200 reset: moving to HEAD
9e70d9508ce6faafcb9ab785b1f939540c0deac6 a33643672892641471e4dca82a38f72c8ca3f35f Marcin Grzejszczak <marcin@grzejszczak.pl> 1557912514 +0200 checkout: moving from Greenwich to master
a33643672892641471e4dca82a38f72c8ca3f35f a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560176662 +0200 pull --rebase origin master: Fast-forward
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560176674 +0200 checkout: moving from master to springCloudBuildRelease
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560177565 +0200 reset: moving to HEAD
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560177763 +0200 reset: moving to HEAD
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1561123097 +0200 checkout: moving from springCloudBuildRelease to master
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1561123103 +0200 reset: moving to HEAD
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 36b1fc71be5c290679009dda8873c960632816d7 Marcin Grzejszczak <marcin@grzejszczak.pl> 1561123107 +0200 checkout: moving from master to vGreenwich.SR2
36b1fc71be5c290679009dda8873c960632816d7 a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1565944802 +0200 checkout: moving from 36b1fc71be5c290679009dda8873c960632816d7 to master
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 4d3656c3411c666e4bab64e1e5b02b5d02c3af7c Marcin Grzejszczak <marcin@grzejszczak.pl> 1565944806 +0200 pull --rebase origin master: Fast-forward
4d3656c3411c666e4bab64e1e5b02b5d02c3af7c 19cd5760bb235822f58274a95dbf4c2451ece5ca Marcin Grzejszczak <marcin@grzejszczak.pl> 1565944855 +0200 commit: Added spring cloud build to the list of dependencies
19cd5760bb235822f58274a95dbf4c2451ece5ca 36b1fc71be5c290679009dda8873c960632816d7 Marcin Grzejszczak <marcin@grzejszczak.pl> 1566308875 +0200 checkout: moving from master to vGreenwich.SR2
36b1fc71be5c290679009dda8873c960632816d7 3a55043d86d982c2ac1f86df7dd6945fa6c41058 Marcin Grzejszczak <marcin@grzejszczak.pl> 1566310550 +0200 checkout: moving from 36b1fc71be5c290679009dda8873c960632816d7 to vEdgware.SR6
3a55043d86d982c2ac1f86df7dd6945fa6c41058 df9f8dd8313f3b5d9a2a75ffb737bf328c6ca00d Marcin Grzejszczak <marcin@grzejszczak.pl> 1566312025 +0200 checkout: moving from 3a55043d86d982c2ac1f86df7dd6945fa6c41058 to Edgware
df9f8dd8313f3b5d9a2a75ffb737bf328c6ca00d e112ef52996d7b564d90e9436b50e6d1bd2af740 Marcin Grzejszczak <marcin@grzejszczak.pl> 1566312039 +0200 checkout: moving from Edgware to Dalston
e112ef52996d7b564d90e9436b50e6d1bd2af740 f3fa9e830bcf486accf364eb3fb874dd663f2b49 Marcin Grzejszczak <marcin@grzejszczak.pl> 1566312042 +0200 checkout: moving from Dalston to Finchley
f3fa9e830bcf486accf364eb3fb874dd663f2b49 19cd5760bb235822f58274a95dbf4c2451ece5ca Marcin Grzejszczak <marcin@grzejszczak.pl> 1566312044 +0200 checkout: moving from Finchley to master

View File

@@ -1 +0,0 @@
0000000000000000000000000000000000000000 6882449721e48f955b102606ae3fc2535ebbd4cb Marcin Grzejszczak <marcin@grzejszczak.pl> 1481883884 +0100 branch: Created from refs/remotes/origin/Brixton

View File

@@ -1 +0,0 @@
0000000000000000000000000000000000000000 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <mgrzejszczak@pivotal.io> 1530201227 +0200 branch: Created from HEAD

View File

@@ -1,3 +0,0 @@
0000000000000000000000000000000000000000 c8bb5894e1e198e5fe646b97bcbb75fe4746d30b Marcin Grzejszczak <marcin@grzejszczak.pl> 1481127532 +0100 branch: Created from refs/remotes/origin/Camden.x
c8bb5894e1e198e5fe646b97bcbb75fe4746d30b 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488793315 +0100 reset: moving to origin/master
821555cad8a6132fd045755733e6a0ec6d0957f3 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488793321 +0100 rebase finished: refs/heads/Camden.x onto 320597b84bb0312c15228c4d42f46c189b86ed90

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 e112ef52996d7b564d90e9436b50e6d1bd2af740 Marcin Grzejszczak <marcin@grzejszczak.pl> 1566312039 +0200 branch: Created from refs/remotes/origin/Dalston

View File

@@ -1 +0,0 @@
0000000000000000000000000000000000000000 29dde5f8e4c5096612ac8669dd7bfbcc95c7ef39 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489664824 +0100 branch: Created from refs/remotes/origin/Dalston.RC1

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 df9f8dd8313f3b5d9a2a75ffb737bf328c6ca00d Marcin Grzejszczak <marcin@grzejszczak.pl> 1566312025 +0200 branch: Created from refs/remotes/origin/Edgware

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 f3fa9e830bcf486accf364eb3fb874dd663f2b49 Marcin Grzejszczak <marcin@grzejszczak.pl> 1566312042 +0200 branch: Created from refs/remotes/origin/Finchley

View File

@@ -0,0 +1,2 @@
0000000000000000000000000000000000000000 caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976053 +0100 branch: Created from HEAD
caa72691da75cfb9208264d33b80ac39fc744cd6 9e70d9508ce6faafcb9ab785b1f939540c0deac6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520129 +0100 pull --rebase origin Greenwich: Fast-forward

View File

@@ -0,0 +1,3 @@
0000000000000000000000000000000000000000 4696b27899c5144635a2e1ab8a7e4d7e90e9a922 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940477 +0100 branch: Created from HEAD
4696b27899c5144635a2e1ab8a7e4d7e90e9a922 3444ec7655081e8baaa9d67da39003413f152361 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940701 +0100 commit: bumped
3444ec7655081e8baaa9d67da39003413f152361 25d36c116933e83f5e11c87eb6abba491226a517 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940993 +0100 commit: WAT

View File

@@ -1,4 +1,12 @@
0000000000000000000000000000000000000000 3f8925dcec6d590f62429edea458812128c1c57f Marcin Grzejszczak <marcin@grzejszczak.pl> 1481127445 +0100 clone: from git@github.com:spring-cloud/spring-cloud-release.git
3f8925dcec6d590f62429edea458812128c1c57f 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1481128769 +0100 commit: Bumping contract for Dalston
821555cad8a6132fd045755733e6a0ec6d0957f3 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488809155 +0100 rebase finished: refs/heads/master onto 320597b84bb0312c15228c4d42f46c189b86ed90
320597b84bb0312c15228c4d42f46c189b86ed90 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489663275 +0100 rebase finished: refs/heads/master onto 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9
0000000000000000000000000000000000000000 4696b27899c5144635a2e1ab8a7e4d7e90e9a922 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940461 +0100 clone: from git@github.com:spring-cloud/spring-cloud-release.git
4696b27899c5144635a2e1ab8a7e4d7e90e9a922 7eb07fb2cfe5167e7b8f4d1e8b5ca97b2172f337 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074111 +0100 pull --rebase origin master: Fast-forward
7eb07fb2cfe5167e7b8f4d1e8b5ca97b2172f337 84dcb519ab8b24c170b193d3da3c1d72d2ffff09 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074254 +0100 commit: Bumped Spring Cloud Build
84dcb519ab8b24c170b193d3da3c1d72d2ffff09 371f4038422970a25bafcab8827f01c86f67915e Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074263 +0100 commit (amend): Bumped Spring Cloud Build
371f4038422970a25bafcab8827f01c86f67915e f46f941f5869e8bd70041c8842953f6ffd6da7d4 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548417223 +0100 pull --rebase origin master: Fast-forward
f46f941f5869e8bd70041c8842953f6ffd6da7d4 94e5602cb92e15adbc9de624264647066fb87cd1 Marcin Grzejszczak <marcin@grzejszczak.pl> 1549649256 +0100 commit: Added checkstyle
94e5602cb92e15adbc9de624264647066fb87cd1 caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976044 +0100 pull --rebase origin master: Fast-forward
caa72691da75cfb9208264d33b80ac39fc744cd6 01deb507356f4a36ea3209f8e57ddbac348f460b Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976352 +0100 commit: Hoxton
01deb507356f4a36ea3209f8e57ddbac348f460b a33643672892641471e4dca82a38f72c8ca3f35f Marcin Grzejszczak <marcin@grzejszczak.pl> 1552062520 +0100 commit: Updated for Hoxton
a33643672892641471e4dca82a38f72c8ca3f35f a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560176662 +0200 pull --rebase origin master: Fast-forward
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 4d3656c3411c666e4bab64e1e5b02b5d02c3af7c Marcin Grzejszczak <marcin@grzejszczak.pl> 1565944806 +0200 pull --rebase origin master: Fast-forward
4d3656c3411c666e4bab64e1e5b02b5d02c3af7c 19cd5760bb235822f58274a95dbf4c2451ece5ca Marcin Grzejszczak <marcin@grzejszczak.pl> 1565944855 +0200 commit: Added spring cloud build to the list of dependencies

View File

@@ -0,0 +1,3 @@
0000000000000000000000000000000000000000 9e70d9508ce6faafcb9ab785b1f939540c0deac6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520931 +0100 branch: Created from HEAD
9e70d9508ce6faafcb9ab785b1f939540c0deac6 0dfe0b0d109afe8969c2379a1d9789ae15e80e32 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520937 +0100 commit: BUild 2.1.4
0dfe0b0d109afe8969c2379a1d9789ae15e80e32 8aa3cb92a11adedbc5acfb300e721e0c7c7cd875 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553521862 +0100 commit: No snapshots

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560176674 +0200 branch: Created from HEAD

View File

@@ -0,0 +1 @@
6882449721e48f955b102606ae3fc2535ebbd4cb 793378513959416478453f7fbd789302348290d1 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward

View File

@@ -1 +1 @@
0000000000000000000000000000000000000000 8650838d6ebb575eb99fcd4e6dbe86454384709b Marcin Grzejszczak <marcin@grzejszczak.pl> 1489662694 +0100 fetch: storing head
a9767b58db049681720f033e5cd7662896937bfc 6fa5d0230b513ecb2e796baf7a778b68c7b90e89 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward

View File

@@ -0,0 +1 @@
928e0d8389dcee60189d6c0eb737ab9376e87f54 b2477bb56130e85244813d1fe1ff6fc3835d44d9 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward

View File

@@ -1 +0,0 @@
c8bb5894e1e198e5fe646b97bcbb75fe4746d30b b566ab3bea0506bccaa10f83784a41673606d6ee Marcin Grzejszczak <marcin@grzejszczak.pl> 1488899998 +0100 pull --rebase origin Camden.x: fast-forward

View File

@@ -0,0 +1 @@
62c3fbb4262dc4eff18856943eecae787f8dec30 e112ef52996d7b564d90e9436b50e6d1bd2af740 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward

View File

@@ -1 +0,0 @@
0000000000000000000000000000000000000000 29dde5f8e4c5096612ac8669dd7bfbcc95c7ef39 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489662694 +0100 fetch: storing head

View File

@@ -0,0 +1 @@
14357a92322ce07fc8757ac713031e02fb3748fc df9f8dd8313f3b5d9a2a75ffb737bf328c6ca00d Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward

View File

@@ -0,0 +1 @@
e913188e3ad1f2eaff7789d2738c5c27a8d81393 d939787f38d3c3a08f8c8e31e17d142aeffbe426 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward

View File

@@ -0,0 +1 @@
dbe5a6573dbbb09e911a9864ac1755fb7da29e9c f3fa9e830bcf486accf364eb3fb874dd663f2b49 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward

View File

@@ -0,0 +1,5 @@
0000000000000000000000000000000000000000 caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976061 +0100 update by push
caa72691da75cfb9208264d33b80ac39fc744cd6 9e70d9508ce6faafcb9ab785b1f939540c0deac6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520129 +0100 pull --rebase origin Greenwich: fast-forward
9e70d9508ce6faafcb9ab785b1f939540c0deac6 d9aa10887ac48f9a7e67c98b10e415a090fed49d Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward
d9aa10887ac48f9a7e67c98b10e415a090fed49d b081456c6ccea9f316683c7531d16442e7d4d4f8 Marcin Grzejszczak <marcin@grzejszczak.pl> 1561123101 +0200 pull: fast-forward
b081456c6ccea9f316683c7531d16442e7d4d4f8 f046cfcbf93d23a2e4154270c084f72e527e944c Marcin Grzejszczak <marcin@grzejszczak.pl> 1566308722 +0200 fetch --tags: fast-forward

View File

@@ -1 +1 @@
0000000000000000000000000000000000000000 3f8925dcec6d590f62429edea458812128c1c57f Marcin Grzejszczak <marcin@grzejszczak.pl> 1481127445 +0100 clone: from git@github.com:spring-cloud/spring-cloud-release.git
0000000000000000000000000000000000000000 4696b27899c5144635a2e1ab8a7e4d7e90e9a922 Marcin Grzejszczak <marcin@grzejszczak.pl> 1546940461 +0100 clone: from git@github.com:spring-cloud/spring-cloud-release.git

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 e78c5faa72d01ebb8084dce82391a822f36cf4bb Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: storing head

View File

@@ -0,0 +1,2 @@
2faf83e52881cab9590dd6f557ad1a68ae7363d4 227b393697627e44509d938a1ade5980747ca435 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward
227b393697627e44509d938a1ade5980747ca435 bf3c050a5cdf74d41ad58139e66167ea873b012a Marcin Grzejszczak <marcin@grzejszczak.pl> 1566308722 +0200 fetch --tags: fast-forward

View File

@@ -0,0 +1,2 @@
ed052fb33f87d5981c48b46e50780042bae95eb1 2534a1fbde69f1b2ab23f1c4c2bd1da7d2bc252f Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward
2534a1fbde69f1b2ab23f1c4c2bd1da7d2bc252f 4afed5023d7800a8d9057c070df2fc823c7c5d4d Marcin Grzejszczak <marcin@grzejszczak.pl> 1566308722 +0200 fetch --tags: fast-forward

View File

@@ -0,0 +1,3 @@
6a14030433af6397b017a6e3eefa883fbadc526f 0e33b667a14554b285c94783ea5ef7521bb83be7 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: fast-forward
0e33b667a14554b285c94783ea5ef7521bb83be7 ab188691563a71d423b0843b69d50ea2c9a91254 Marcin Grzejszczak <marcin@grzejszczak.pl> 1561123101 +0200 pull: fast-forward
ab188691563a71d423b0843b69d50ea2c9a91254 668cad17c774ef02efa78b6f2d9a92d75ab976ea Marcin Grzejszczak <marcin@grzejszczak.pl> 1566308722 +0200 fetch --tags: fast-forward

View File

@@ -1,3 +1,9 @@
3f8925dcec6d590f62429edea458812128c1c57f 821555cad8a6132fd045755733e6a0ec6d0957f3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1481128927 +0100 update by push
821555cad8a6132fd045755733e6a0ec6d0957f3 320597b84bb0312c15228c4d42f46c189b86ed90 Marcin Grzejszczak <marcin@grzejszczak.pl> 1488793321 +0100 pull --rebase origin master: fast-forward
320597b84bb0312c15228c4d42f46c189b86ed90 0ccd2833e149e9b8a7974ecf74a5e9e172322ab9 Marcin Grzejszczak <marcin@grzejszczak.pl> 1489662694 +0100 fetch: fast-forward
4696b27899c5144635a2e1ab8a7e4d7e90e9a922 7eb07fb2cfe5167e7b8f4d1e8b5ca97b2172f337 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074111 +0100 pull --rebase origin master: fast-forward
7eb07fb2cfe5167e7b8f4d1e8b5ca97b2172f337 371f4038422970a25bafcab8827f01c86f67915e Marcin Grzejszczak <marcin@grzejszczak.pl> 1548074269 +0100 update by push
371f4038422970a25bafcab8827f01c86f67915e f46f941f5869e8bd70041c8842953f6ffd6da7d4 Marcin Grzejszczak <marcin@grzejszczak.pl> 1548417223 +0100 pull --rebase origin master: fast-forward
f46f941f5869e8bd70041c8842953f6ffd6da7d4 94e5602cb92e15adbc9de624264647066fb87cd1 Marcin Grzejszczak <marcin@grzejszczak.pl> 1549649262 +0100 update by push
94e5602cb92e15adbc9de624264647066fb87cd1 caa72691da75cfb9208264d33b80ac39fc744cd6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1551976044 +0100 pull --rebase origin master: fast-forward
caa72691da75cfb9208264d33b80ac39fc744cd6 a33643672892641471e4dca82a38f72c8ca3f35f Marcin Grzejszczak <marcin@grzejszczak.pl> 1552062527 +0100 update by push
a33643672892641471e4dca82a38f72c8ca3f35f a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560176662 +0200 pull --rebase origin master: fast-forward
a06b51f45f40bf0f7c924f6e62b54f03ed0020f5 4d3656c3411c666e4bab64e1e5b02b5d02c3af7c Marcin Grzejszczak <marcin@grzejszczak.pl> 1565944806 +0200 pull --rebase origin master: fast-forward
4d3656c3411c666e4bab64e1e5b02b5d02c3af7c 19cd5760bb235822f58274a95dbf4c2451ece5ca Marcin Grzejszczak <marcin@grzejszczak.pl> 1565944862 +0200 update by push

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 8d9248d5a509a1df16f15074a73a2022697128e6 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: storing head

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 fbf3b6368c26bc96b9958036156f37055f69ebf3 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: storing head

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 787d6414e5a3a574b5928d2041668c96f6b903c7 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: storing head

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 72d23f1d5fb5778921b2a9b31bff41d3148c271f Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: storing head

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 467683cd796c15b79cf55da47ab88ee9e6352d36 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: storing head

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 156792a985a3a1227d79c62be957e6f86a3e2787 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560179802 +0200 fetch -p: storing head

View File

@@ -0,0 +1,2 @@
0000000000000000000000000000000000000000 0dfe0b0d109afe8969c2379a1d9789ae15e80e32 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553520945 +0100 update by push
0dfe0b0d109afe8969c2379a1d9789ae15e80e32 8aa3cb92a11adedbc5acfb300e721e0c7c7cd875 Marcin Grzejszczak <marcin@grzejszczak.pl> 1553521870 +0100 update by push

View File

@@ -0,0 +1 @@
0000000000000000000000000000000000000000 da994d5600c15389f7fc7aa15f0414660d5343e1 Marcin Grzejszczak <marcin@grzejszczak.pl> 1561123101 +0200 pull: storing head

View File

@@ -1,2 +1,5 @@
0000000000000000000000000000000000000000 9d396e0bebeba62d284c8539c952f17d764647d1 Marcin Grzejszczak <marcin@grzejszczak.pl> 1481128706 +0100 WIP on Camden.x: c8bb589 Bump versions for next release
9d396e0bebeba62d284c8539c952f17d764647d1 ae4c7b35356cd1bd371c78ad0ba7d86fdea7653a Marcin Grzejszczak <mgrzejszczak@pivotal.io> 1530201217 +0200 WIP on master: 0ccd283 Updating Boot to 1.5.3.BS
0000000000000000000000000000000000000000 cc54ac2e86b7f75b2f3055eb3b08f5ceba06548d Marcin Grzejszczak <marcin@grzejszczak.pl> 1552062251 +0100 WIP on master: 01deb50 Hoxton
cc54ac2e86b7f75b2f3055eb3b08f5ceba06548d bece815dcfc78185588566588a5f368fb66943f9 Marcin Grzejszczak <marcin@grzejszczak.pl> 1557912513 +0200 WIP on Greenwich: 9e70d95 Bumping kubernetes version
bece815dcfc78185588566588a5f368fb66943f9 119e0117aac6e1b0ab3bccb032a84888632af251 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560177565 +0200 WIP on springCloudBuildRelease: a06b51f Moving to Horsham
119e0117aac6e1b0ab3bccb032a84888632af251 b7204c64d76c0a554f6b539bfbb3a9159c6fca88 Marcin Grzejszczak <marcin@grzejszczak.pl> 1560177763 +0200 WIP on springCloudBuildRelease: a06b51f Moving to Horsham
b7204c64d76c0a554f6b539bfbb3a9159c6fca88 5d99a44f92f53e72b9cf2fd5fe18ceb8070dee6e Marcin Grzejszczak <marcin@grzejszczak.pl> 1561123103 +0200 WIP on master: a06b51f Moving to Horsham

View File

@@ -0,0 +1,4 @@
x<01>U<EFBFBD>n1<10>5<EFBFBD><35>!B$v<>R$.ڦjI<6A>"<22><>J<EFBFBD>O<><4F>;I,ym<79><6D>&<26>|;c<>%!MQ<4D>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>93G<33><47>PS8|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><10>Dc<44><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ePf*<2A>r~ܽ<><DCBD>1z<31>=<3D><1D><16><><EFBFBD><EFBFBD>t(6<><36><EFBFBD>&<26>a'<27>yϠV<CFA0>ՆJc<4A>҄Rᨤ<1E>
<EFBFBD>=<3D><>r^<5E><07><>.<2E>^_M<06><><EFBFBD><EFBFBD><EFBFBD>{<7B><>5<EFBFBD>C3kW<6B><57><EFBFBD>:.O'<27>/<17>>u<>5<EFBFBD>IR<49><52><04>0<EFBFBD><30><46><CDB8>m<EFBFBD>QqzE<><45><EFBFBD>y|<16>[p <0B>1P<31><50>X<EFBFBD>
<EFBFBD>S`K<><4B>q<EFBFBD>Z`2<>a`<60><>9<EFBFBD>H<15>`Ė(<28>(><3E><03><><11>|<7C>@"<22><>$u d<>(<<3C><><12><>`<60>J<1C>V<EFBFBD>i<EFBFBD>lf<6C>v<EFBFBD><76>X<EFBFBD><58>sPf<50>.@3<><33><EFBFBD>%<25>W<EFBFBD><57>[<5B>~<7E><> <0B>l3<6C>A&<26>&芷]<5D>R<EFBFBD><52><15>ΓGn<47>~<7E><14><><EFBFBD>Ԁf<>,<1C><>^x<0E><><EFBFBD>pK;&I<><49>p~$q<><71><EFBFBD>^<5E>$&O<>DQ<44><51><EFBFBD>G<><47><04>%CI'
<[<5B>q<EFBFBD>J<EFBFBD><7A>&<26>YO<59><4F>n<EFBFBD>So;˝2<CB9D>Z4մ<34>u<EFBFBD><1F>Y<EFBFBD><59><EFBFBD>d<EFBFBD><64><EFBFBD>lK<6C><1A>='<27><>0<EFBFBD><14>tK'-<2D><>-<2D><><EFBFBD>}<7D><><EFBFBD><EFBFBD>D<EFBFBD><44>mq#<23>2&<26><>T_<54><5F>W։N<D689><4E>M<05><><EFBFBD><EFBFBD><EFBFBD>.Ov<4F><76>p_<70>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>;<3B>)<29>w*mU<Db<44><62> <20>3&,-<2D><><EFBFBD>4(<28>ٻ%<25><><EFBFBD>{

View File

@@ -0,0 +1,3 @@
x<01>RMk<4D>0<10>ٿb<D9BF><62><EFBFBD>ԟ<EFBFBD><D49F>u(<28>P<EFBFBD><50>PHRz9<><39><EFBFBD>V<EFBFBD>ZFew<65>}<7D><><EFBFBD>Pz%=<3D><>4z<34><7A>I{8h<38><kvo<76>!B[4})<29>l<EFBFBD><6C><EFBFBD>ھ<EFBFBD><DABE>Z<EFBFBD><5A><EFBFBD>e<EFBFBD>w<EFBFBD><77>U'vX<76><58>&<26><>É<EFBFBD><C389><EFBFBD><EFBFBD>)<29><>n<EFBFBD><46>ԾS<02>j<EFBFBD>TY<54>M!E<><45>]$<02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><19> <20>?<3F><15><><05><:<3A>L<EFBFBD><4C>l<EFBFBD>ɠi ]"<22><>#<23>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>vgU<67>E<EFBFBD><45>x<EFBFBD><78><EFBFBD>}<7D><>
<EFBFBD>
<EFBFBD>)<29>Qt?j<0F> <08><12><1E><>Y<><1D><<3C>F<EFBFBD><46>h<EFBFBD> X<>ҚnQi<51><69><pL0Y<30><59>c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jBJ<42>8Ca<43><19>4<EFBFBD>I-<2D><><EFBFBD><18>vZqϡq<CFA1><71>֩W:<3A>t<0F>/<2F>bA<62><41><EFBFBD>]'Q<><16><>ӥ<EFBFBD><D3A5><EFBFBD><EFBFBD>.H<>޳<1F><>q<1D><><EFBFBD><EFBFBD>&9^dM )<29>#<23><17>x|?Fmp<6D><70>!p<1E>F<EFBFBD><07><1E>68p<38><70><EFBFBD><1C>'m <0C>K|8)T,<2C><<3C><>:<3A>&M<>À<><C380><EFBFBD>7-<2D>l<EFBFBD>fe<66><65><EFBFBD><EFBFBD>91<39>Eg<03><><04>m<01><><1D>}2<><32>l

View File

@@ -1,2 +0,0 @@
xm<>=k<>0@;<3B>W<EFBFBD>^<10>8<EFBFBD><12><12><>K<EFBFBD><4B>p'_<1C><>eTy<54>}K<>.]<1F><>Ke<4B>s<03><><EFBFBD>U Ƒzf$k<><12>8
<EFBFBD><EFBFBD><EFBFBD><1E><>NV<4E>Į[<5B><><EFBFBD><EFBFBD>Y<EFBFBD>ǁ2kgl2<6C><32>!<21><><EFBFBD><EFBFBD>><3E>9x<19><>hk<68>R<EFBFBD><52>j<EFBFBD> <0B><>.<2E><>=<3D><> <09><><EFBFBD><EFBFBD><EFBFBD>S<><53> <0C><10><>f<EFBFBD>gm<67><6D><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>sn<73><1B>a)U<><55><EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD><15>ɺ<EFBFBD>u<EFBFBD><75><EFBFBD> N<>4h<05><><EFBFBD>S<EFBFBD><53>4.L<>

Some files were not shown because too many files have changed in this diff Show More