From 139ce7386ac2a5178cda27018eb8c468c55eaef4 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 11:24:10 -0500 Subject: [PATCH 01/11] Upgrade gradle --- gradle/wrapper/gradle-wrapper.jar | Bin 54413 -> 54418 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 91ca28c8b802289c3a438766657a5e98f20eff03..eefdf4b2d3fb4813a6828d83aea2193667b23b23 100644 GIT binary patch delta 95 zcmeBO$vkN#^8|Ai&(Gi7Ct63aMSdvySj0H_V5;=SErEw5Heb;7x@OA85a7+up?G<| pq67m2gBTD`o_JVhvdLj>u)fX7hwlk+!lfsBU9n}8Jq%RE008)0A-ezo delta 90 zcmbQVlDT&!^8|C287a$-PPC3-oB6ruV-e%zgQ?ORw*(#%HfCoC@Mh Date: Wed, 4 Jul 2018 11:25:37 -0500 Subject: [PATCH 02/11] Test Gradle 4.9 rc --- reckon-gradle/.stutter/java8.lock | 2 +- reckon-gradle/.stutter/java9.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reckon-gradle/.stutter/java8.lock b/reckon-gradle/.stutter/java8.lock index 441e286c..6ede8a3f 100644 --- a/reckon-gradle/.stutter/java8.lock +++ b/reckon-gradle/.stutter/java8.lock @@ -2,4 +2,4 @@ 3.0 3.5.1 4.0 -4.8-rc-3 +4.9-rc-1 diff --git a/reckon-gradle/.stutter/java9.lock b/reckon-gradle/.stutter/java9.lock index 3ce49c30..cf6e4266 100644 --- a/reckon-gradle/.stutter/java9.lock +++ b/reckon-gradle/.stutter/java9.lock @@ -1,3 +1,3 @@ # DO NOT MODIFY: Generated by Stutter plugin. 4.2.1 -4.8-rc-3 +4.9-rc-1 From 11bc62f11300db6f418d5097213a988942ed219f Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 11:31:34 -0500 Subject: [PATCH 03/11] Use cleaner locking config This keeps the number of lock files down. --- build.gradle | 36 ++----------------- gradle/bintray.gradle | 16 +++++++++ gradle/dependency-locks/archives.lockfile | 3 -- gradle/dependency-locks/default.lockfile | 3 -- gradle/locking.gradle | 20 +++++++++++ .../annotationProcessor.lockfile | 3 -- .../gradle/dependency-locks/archives.lockfile | 3 -- .../gradle/dependency-locks/compile.lockfile | 14 -------- .../dependency-locks/compileOnly.lockfile | 3 -- .../gradle/dependency-locks/default.lockfile | 14 -------- .../gradle/dependency-locks/runtime.lockfile | 14 -------- .../testAnnotationProcessor.lockfile | 3 -- .../dependency-locks/testCompile.lockfile | 28 --------------- .../testCompileClasspath.lockfile | 2 +- .../dependency-locks/testCompileOnly.lockfile | 3 -- .../dependency-locks/testRuntime.lockfile | 29 --------------- .../testRuntimeClasspath.lockfile | 2 +- .../annotationProcessor.lockfile | 3 -- .../gradle/dependency-locks/archives.lockfile | 3 -- .../compatTestAnnotationProcessor.lockfile | 3 -- .../compatTestCompile.lockfile | 25 ------------- .../compatTestCompileClasspath.lockfile | 2 +- .../compatTestCompileOnly.lockfile | 3 -- .../compatTestRuntime.lockfile | 25 ------------- .../compatTestRuntimeClasspath.lockfile | 2 +- .../gradle/dependency-locks/compile.lockfile | 30 ---------------- .../compileClasspath.lockfile | 2 +- .../dependency-locks/compileOnly.lockfile | 3 -- .../gradle/dependency-locks/default.lockfile | 30 ---------------- .../gradle/dependency-locks/runtime.lockfile | 30 ---------------- .../runtimeClasspath.lockfile | 2 +- .../testAnnotationProcessor.lockfile | 3 -- .../dependency-locks/testCompile.lockfile | 30 ---------------- .../testCompileClasspath.lockfile | 2 +- .../dependency-locks/testCompileOnly.lockfile | 3 -- .../dependency-locks/testRuntime.lockfile | 30 ---------------- .../testRuntimeClasspath.lockfile | 2 +- 37 files changed, 47 insertions(+), 382 deletions(-) create mode 100644 gradle/bintray.gradle delete mode 100644 gradle/dependency-locks/archives.lockfile delete mode 100644 gradle/dependency-locks/default.lockfile create mode 100644 gradle/locking.gradle delete mode 100644 reckon-core/gradle/dependency-locks/annotationProcessor.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/archives.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/compile.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/compileOnly.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/default.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/runtime.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/testAnnotationProcessor.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/testCompile.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/testCompileOnly.lockfile delete mode 100644 reckon-core/gradle/dependency-locks/testRuntime.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/annotationProcessor.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/archives.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/compatTestAnnotationProcessor.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/compatTestCompile.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/compatTestCompileOnly.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/compatTestRuntime.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/compile.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/compileOnly.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/default.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/runtime.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/testAnnotationProcessor.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/testCompile.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/testCompileOnly.lockfile delete mode 100644 reckon-gradle/gradle/dependency-locks/testRuntime.lockfile diff --git a/build.gradle b/build.gradle index 22bbf8fd..555b39e8 100644 --- a/build.gradle +++ b/build.gradle @@ -2,41 +2,11 @@ plugins { id 'org.ajoberstar.defaults' version '0.12.0' } +apply from: 'gradle/locking.gradle' +apply from: 'gradle/bintray.gradle' + allprojects { group = 'org.ajoberstar.reckon' - - dependencyLocking { - lockAllConfigurations() - } - - task lock { - doFirst { - assert gradle.startParameter.writeDependencyLocks - } - doLast { - configurations.each { - if (it.canBeResolved) { - it.resolve() - } - } - } - } - - plugins.withId('maven-publish') { - publishing { - repositories { - maven { - name = 'bintray' - url = 'https://api.bintray.com/maven/ajoberstar/maven/reckon/;publish=1' - credentials { - username = System.env['BINTRAY_USER'] - password = System.env['BINTRAY_KEY'] - } - } - } - } - } - } ext.grgitVersion = '[2.0.0,)' diff --git a/gradle/bintray.gradle b/gradle/bintray.gradle new file mode 100644 index 00000000..cee437a4 --- /dev/null +++ b/gradle/bintray.gradle @@ -0,0 +1,16 @@ +allprojects { + plugins.withId('maven-publish') { + publishing { + repositories { + maven { + name = 'bintray' + url = 'https://api.bintray.com/maven/ajoberstar/maven/reckon/;publish=1' + credentials { + username = System.env['BINTRAY_USER'] + password = System.env['BINTRAY_KEY'] + } + } + } + } + } +} diff --git a/gradle/dependency-locks/archives.lockfile b/gradle/dependency-locks/archives.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/gradle/dependency-locks/archives.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/gradle/dependency-locks/default.lockfile b/gradle/dependency-locks/default.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/gradle/dependency-locks/default.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/gradle/locking.gradle b/gradle/locking.gradle new file mode 100644 index 00000000..8603d6a3 --- /dev/null +++ b/gradle/locking.gradle @@ -0,0 +1,20 @@ +allprojects { + plugins.withId('java-base') { + sourceSets.all { sourceSet -> + configurations[sourceSet.compileClasspathConfigurationName].resolutionStrategy.activateDependencyLocking() + configurations[sourceSet.runtimeClasspathConfigurationName].resolutionStrategy.activateDependencyLocking() + } + + task lock { + doFirst { + assert gradle.startParameter.writeDependencyLocks + } + doLast { + sourceSets.all { sourceSet -> + configurations[sourceSet.compileClasspathConfigurationName].resolve() + configurations[sourceSet.runtimeClasspathConfigurationName].resolve() + } + } + } + } +} diff --git a/reckon-core/gradle/dependency-locks/annotationProcessor.lockfile b/reckon-core/gradle/dependency-locks/annotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/annotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/archives.lockfile b/reckon-core/gradle/dependency-locks/archives.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/archives.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/compile.lockfile b/reckon-core/gradle/dependency-locks/compile.lockfile deleted file mode 100644 index ba124476..00000000 --- a/reckon-core/gradle/dependency-locks/compile.lockfile +++ /dev/null @@ -1,14 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-core/gradle/dependency-locks/compileOnly.lockfile b/reckon-core/gradle/dependency-locks/compileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/compileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/default.lockfile b/reckon-core/gradle/dependency-locks/default.lockfile deleted file mode 100644 index ba124476..00000000 --- a/reckon-core/gradle/dependency-locks/default.lockfile +++ /dev/null @@ -1,14 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-core/gradle/dependency-locks/runtime.lockfile b/reckon-core/gradle/dependency-locks/runtime.lockfile deleted file mode 100644 index ba124476..00000000 --- a/reckon-core/gradle/dependency-locks/runtime.lockfile +++ /dev/null @@ -1,14 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-core/gradle/dependency-locks/testAnnotationProcessor.lockfile b/reckon-core/gradle/dependency-locks/testAnnotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/testAnnotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/testCompile.lockfile b/reckon-core/gradle/dependency-locks/testCompile.lockfile deleted file mode 100644 index a6b1ba47..00000000 --- a/reckon-core/gradle/dependency-locks/testCompile.lockfile +++ /dev/null @@ -1,28 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.codehaus.groovy:groovy-all:2.4.15 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.25 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile b/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile index a6b1ba47..5277ba6b 100644 --- a/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile @@ -16,7 +16,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-core/gradle/dependency-locks/testCompileOnly.lockfile b/reckon-core/gradle/dependency-locks/testCompileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/testCompileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/testRuntime.lockfile b/reckon-core/gradle/dependency-locks/testRuntime.lockfile deleted file mode 100644 index bca5d11b..00000000 --- a/reckon-core/gradle/dependency-locks/testRuntime.lockfile +++ /dev/null @@ -1,29 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.codehaus.groovy:groovy-all:2.4.15 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.25 -org.slf4j:slf4j-simple:1.7.25 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile b/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile index bca5d11b..f09b2657 100644 --- a/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -16,7 +16,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/gradle/dependency-locks/annotationProcessor.lockfile b/reckon-gradle/gradle/dependency-locks/annotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/annotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/archives.lockfile b/reckon-gradle/gradle/dependency-locks/archives.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/archives.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/compatTestAnnotationProcessor.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestAnnotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestAnnotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/compatTestCompile.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestCompile.lockfile deleted file mode 100644 index c7b1c4b2..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestCompile.lockfile +++ /dev/null @@ -1,25 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.2 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile index c7b1c4b2..e9ca6ae4 100644 --- a/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile @@ -15,7 +15,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r diff --git a/reckon-gradle/gradle/dependency-locks/compatTestCompileOnly.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestCompileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestCompileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/compatTestRuntime.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestRuntime.lockfile deleted file mode 100644 index c7b1c4b2..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestRuntime.lockfile +++ /dev/null @@ -1,25 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.2 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile index c7b1c4b2..e9ca6ae4 100644 --- a/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile @@ -15,7 +15,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r diff --git a/reckon-gradle/gradle/dependency-locks/compile.lockfile b/reckon-gradle/gradle/dependency-locks/compile.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/compile.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/gradle/dependency-locks/compileOnly.lockfile b/reckon-gradle/gradle/dependency-locks/compileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/compileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/default.lockfile b/reckon-gradle/gradle/dependency-locks/default.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/default.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/runtime.lockfile b/reckon-gradle/gradle/dependency-locks/runtime.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/runtime.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/gradle/dependency-locks/testAnnotationProcessor.lockfile b/reckon-gradle/gradle/dependency-locks/testAnnotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/testAnnotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/testCompile.lockfile b/reckon-gradle/gradle/dependency-locks/testCompile.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/testCompile.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/gradle/dependency-locks/testCompileOnly.lockfile b/reckon-gradle/gradle/dependency-locks/testCompileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/testCompileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/testRuntime.lockfile b/reckon-gradle/gradle/dependency-locks/testRuntime.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/testRuntime.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 From 83222e6b82bddb0d567e388f17a7167cb2137e35 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 11:46:16 -0500 Subject: [PATCH 04/11] Bump build to 4.9-rc-1 --- gradle/wrapper/gradle-wrapper.jar | Bin 54418 -> 54417 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index eefdf4b2d3fb4813a6828d83aea2193667b23b23..758de960ec7947253b058ff79c88ce51f3abe08a 100644 GIT binary patch delta 771 zcmYk4T}YEr7{_;xu@BnX8)MDQr8X&Y;z(kCkl>~nBhd-2(2$yttEkEHrlKeUiLkJ3 z|B@`{(wp+4i?E;^QTvj8IJY&gipa}CD9Y=g<6-Guc;WYd{{M5H=Y4tn^JTvIGH;XY z!^N}5tRj) delta 736 zcmYk4T}YEr9L9J4(x&CdOQ5sYsmzFQvNeS*$*@t9rQ`;hM6C!aOGptfl14Xz7mHzM@msB9n3ZBCt&$Q$b>V$ekvbZf`M%iMt%e!u^7-k0aR9M4RScP7Vu zJn#J9f6b>ls5_jCAE7!rp~p(e!kl1Rp!F8=w<43@vk)yw z2}fcwy8&Cw!23fhI*5OKz7O}X2-u4Q0#w&5OFT16- zPXyh|R#t(R%NJ??03RI2ch^2R28ywhkkFKn$>&nW2ccb;FrARu2o@6E^mR}KZ7X)V zKO}H|NQbQz1I-O{ZNw{H_tL6Nvrk33HLAwMs*R>S8U5vv#G&FN+0FbTnGHQ_4fO80 zqWRcdGtl3bT)TqmYyOaMEj3s*j diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2d80b69a..34aecc1d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-rc-1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 08fd339aeddbf8f7d2402a475491eee6efa221dd Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 11:46:51 -0500 Subject: [PATCH 05/11] Use latest version for deps Groovy dep is not sorting correctly and showing 2.4.9 instead of 2.4.15 with a [2.4.0,2.5.0) selector. So hardcoding for now --- reckon-gradle/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reckon-gradle/build.gradle b/reckon-gradle/build.gradle index f136d87d..5740d560 100644 --- a/reckon-gradle/build.gradle +++ b/reckon-gradle/build.gradle @@ -22,14 +22,14 @@ dependencies { compatTestCompile "org.ajoberstar:grgit:$grgitVersion" // util - compile 'com.google.guava:guava:[21.0,)' - compile 'com.github.zafarkhaja:java-semver:[0.9.0,)' + compile 'com.google.guava:guava:latest.release' + compile 'com.github.zafarkhaja:java-semver:latest.release' // testing compatTestCompile gradleTestKit() compatTestCompile 'org.spockframework:spock-core:1.1-groovy-2.4' compatTestCompile 'org.codehaus.groovy:groovy-all:2.4.15' - compatTestCompile 'junit:junit:4.12' + compatTestCompile 'junit:junit:latest.release' } stutter { From b130896d6b981f199047e18f2fb3b6dc2c3f5dc6 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 11:54:19 -0500 Subject: [PATCH 06/11] Use abbreviated hash in build metedata Since the commit ID is only used for metadata on insignificant versions, there's no reason to be so concerned about uniqueness that we use a full hash. It will be easier for users to deal with if its shorter. Using the ObjectReader method in this change, does ensure uniqueness within the current repo, which is all we really need anyway. This fixes #86. --- .../org/ajoberstar/reckon/core/GitInventorySupplier.java | 5 +++-- .../ajoberstar/reckon/core/GitInventorySupplierTest.groovy | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java index 7956e355..10048f19 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java @@ -20,6 +20,7 @@ import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectReader; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; @@ -55,7 +56,7 @@ public GitInventorySupplier(Repository repo, Function> @Override public VcsInventory getInventory() { // share this walk throughout to benefit from its caching - try (RevWalk walk = new RevWalk(repo)) { + try (ObjectReader reader = repo.newObjectReader(); RevWalk walk = new RevWalk(reader)) { // saves on some performance as we don't really need the commit bodys walk.setRetainBody(false); @@ -94,7 +95,7 @@ public VcsInventory getInventory() { Set claimedVersions = taggedVersions.stream().map(TaggedVersion::getVersion).collect(Collectors.toSet()); return new VcsInventory( - headObjectId.getName(), + reader.abbreviate(headObjectId).name(), isClean(), currentVersion, baseVersion.getVersion(), diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy index 6a6a26b0..af7de832 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy @@ -15,6 +15,11 @@ class GitInventorySupplierTest extends Specification { GitInventorySupplier supplier + def 'commit id is abbreviated, not full'() { + expect: + supplier.getInventory().commitId == Optional.of(grgit.head().abbreviatedId) + } + def 'if HEAD has no tagged versions, current version is empty'() { given: checkout('head-untagged') From 0ff5198d6f3abdb32dce9fdc5d2f57aefa707689 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 12:32:32 -0500 Subject: [PATCH 07/11] Make uncomitted versions unique Instead of using the hash, if present, and the string 'uncomitted', use a UTC timestamp. Unique versions allow you to go back to a specific build more easily. This may make it harder to distinguish between commit builds and uncommitted builds, so I could see us adding some identifier back, but this keeps the versions shorter for now. This fixes #90. --- .../org/ajoberstar/reckon/core/Reckoner.java | 22 +++++++++++++++---- .../org/ajoberstar/reckon/core/Version.java | 15 ++++++++----- .../reckon/core/ReckonerTest.groovy | 17 ++++++++++---- .../reckon/gradle/BaseCompatTest.groovy | 3 ++- 4 files changed, 43 insertions(+), 14 deletions(-) diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java index ec4abe7c..21d94f3e 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java @@ -1,5 +1,8 @@ package org.ajoberstar.reckon.core; +import java.time.Clock; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.Collections; import java.util.Objects; @@ -19,13 +22,17 @@ public final class Reckoner { public static final String FINAL_STAGE = "final"; public static final String SNAPSHOT_STAGE = "snapshot"; + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssX"); + + private final Clock clock; private final VcsInventorySupplier inventorySupplier; private final Function> scopeCalc; private final BiFunction> stageCalc; private final Set stages; private final String defaultStage; - private Reckoner(VcsInventorySupplier inventorySupplier, Function> scopeCalc, BiFunction> stageCalc, Set stages, String defaultStage) { + private Reckoner(Clock clock, VcsInventorySupplier inventorySupplier, Function> scopeCalc, BiFunction> stageCalc, Set stages, String defaultStage) { + this.clock = clock; this.inventorySupplier = inventorySupplier; this.scopeCalc = scopeCalc; this.stageCalc = stageCalc; @@ -118,8 +125,8 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal return Version.valueOf(String.format("%s-%s", targetBase.getNormal(), "SNAPSHOT")); } else if (stage == null) { String buildMetadata = inventory.getCommitId() - .map(sha -> inventory.isClean() ? sha : sha + ".uncommitted") - .orElse("uncommitted"); + .filter(sha -> inventory.isClean()) + .orElseGet(() -> DATE_FORMAT.format(ZonedDateTime.now(clock))); return Version.valueOf(String.format("%s-%s.%d.%d+%s", targetBase.getNormal(), baseStageName, baseStageNum, inventory.getCommitsSinceBase(), buildMetadata)); } else if (stage.equals(baseStageName)) { @@ -134,12 +141,18 @@ public static Builder builder() { } public static final class Builder { + private Clock clock; private VcsInventorySupplier inventorySupplier; private Function> scopeCalc; private BiFunction> stageCalc; private Set stages; private String defaultStage; + Builder clock(Clock clock) { + this.clock = clock; + return this; + } + Builder vcs(VcsInventorySupplier inventorySupplier) { this.inventorySupplier = inventorySupplier; return this; @@ -216,11 +229,12 @@ public Builder stageCalc(BiFunction> sta * @return the reckoner */ public Reckoner build() { + Clock clock = Optional.ofNullable(this.clock).orElseGet(Clock::systemUTC); Objects.requireNonNull(inventorySupplier, "Must provide a vcs."); Objects.requireNonNull(scopeCalc, "Must provide a scope supplier."); Objects.requireNonNull(stages, "Must provide set of stages."); Objects.requireNonNull(stageCalc, "Must provide a stage supplier."); - return new Reckoner(inventorySupplier, scopeCalc, stageCalc, stages, defaultStage); + return new Reckoner(clock, inventorySupplier, scopeCalc, stageCalc, stages, defaultStage); } } } diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java index 4f5c5ddd..674c13e0 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java @@ -33,7 +33,7 @@ private Version(com.github.zafarkhaja.semver.Version version) { /** * This is intentionally package private. - * + * * @return the internal JSemver version */ com.github.zafarkhaja.semver.Version getVersion() { @@ -75,7 +75,7 @@ public boolean isSignificant() { /** * Increments this version using the given scope to get a new normal version. - * + * * @param scope the scope to increment the version by * @return incremented version, with only the normal component */ @@ -155,18 +155,23 @@ private static Stage valueOf(com.github.zafarkhaja.semver.Version version) { /** * Gets the version represented by the given string. If the version is not SemVer compliant, an * exception will be thrown. Use {@code parse} if you don't trust that your input is valid. - * + * * @param versionString version to parse * @return the version */ public static Version valueOf(String versionString) { - return new Version(com.github.zafarkhaja.semver.Version.valueOf(versionString)); + try { + return new Version(com.github.zafarkhaja.semver.Version.valueOf(versionString)); + } catch (IllegalArgumentException | ParseException e) { + String message = String.format("Invalid version \"%s\": %s", versionString, e.getMessage()); + throw new IllegalArgumentException(message, e); + } } /** * Gets the version represented by the given string, if it's SemVer compliant. If not, an empty * Optional will be returned. - * + * * @param versionString version to parse * @return the version or an empty optional, if the string wasn't SemVer compliant */ diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy index 27007479..52124909 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy @@ -1,9 +1,16 @@ package org.ajoberstar.reckon.core +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneId; + import spock.lang.Specification import spock.lang.Unroll class ReckonerTest extends Specification { + private static final Clock CLOCK = Clock.fixed(Instant.ofEpochSecond(1530724706), ZoneId.of('UTC')) + private static final String TIMESTAMP = '20180704T171826Z' + def 'if version is claimed, throw'() { given: VcsInventory inventory = new VcsInventory( @@ -84,7 +91,7 @@ class ReckonerTest extends Specification { [Version.valueOf('1.2.2'), Version.valueOf('1.2.3-milestone.1')] as Set ) expect: - reckonStage(inventory, null, null) == '1.2.3-milestone.1.1+abcdef.uncommitted' + reckonStage(inventory, null, null) == "1.2.3-milestone.1.1+${TIMESTAMP}" } def 'if current version is present and normal, repo is dirty, and no input provided, this is not a rebuild'() { @@ -100,7 +107,7 @@ class ReckonerTest extends Specification { [Version.valueOf('1.2.2'), Version.valueOf('1.2.3')] as Set ) expect: - reckonStage(inventory, null, null) == '1.3.0-beta.0.1+abcdef.uncommitted' + reckonStage(inventory, null, null) == "1.3.0-beta.0.1+${TIMESTAMP}" reckonSnapshot(inventory, null, null) == '1.3.0-SNAPSHOT' } @@ -452,7 +459,7 @@ class ReckonerTest extends Specification { [] as Set ) expect: - reckonStage(inventory, null, null) == '1.2.3-milestone.2.5+uncommitted' + reckonStage(inventory, null, null) == "1.2.3-milestone.2.5+${TIMESTAMP}" } @@ -469,7 +476,7 @@ class ReckonerTest extends Specification { [] as Set ) expect: - reckonStage(inventory, null, null) == '1.2.3-milestone.2.5+abcdef.uncommitted' + reckonStage(inventory, null, null) == "1.2.3-milestone.2.5+${TIMESTAMP}" } @Unroll @@ -564,6 +571,7 @@ class ReckonerTest extends Specification { private String reckonStage(inventory, scope, stage) { return Reckoner.builder() + .clock(CLOCK) .vcs { -> inventory } .scopeCalc { i -> Optional.ofNullable(scope) } .stages('beta', 'milestone', 'rc', 'final') @@ -574,6 +582,7 @@ class ReckonerTest extends Specification { private String reckonSnapshot(inventory, scope, stage) { return Reckoner.builder() + .clock(CLOCK) .vcs { -> inventory } .scopeCalc { i -> Optional.ofNullable(scope) } .snapshots() diff --git a/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy b/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy index e606a3d1..83123b7a 100644 --- a/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy +++ b/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy @@ -54,7 +54,8 @@ task printVersion { when: def result = build('printVersion', '-q') then: - result.output.normalize() == 'No git repository found for :. Accessing grgit will cause an NPE.\n0.1.0-alpha.0.0+uncommitted\n' + // version will end with a timestamp, so don't try to validate the whole thing + result.output.normalize().startsWith('No git repository found for :. Accessing grgit will cause an NPE.\n0.1.0-alpha.0.0+') } def 'if no strategies specified, build fails'() { From 71c8707dba3eb0ef511275bd01e86954e1fd6821 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 12:35:46 -0500 Subject: [PATCH 08/11] Make task name constants public This allows other plugins to more safely reference the task names. This fixes #83. --- .../main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java b/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java index 3fee0c28..7d6c0355 100644 --- a/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java +++ b/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java @@ -13,8 +13,8 @@ import org.gradle.api.Task; public class ReckonPlugin implements Plugin { - private static final String TAG_TASK = "reckonTagCreate"; - private static final String PUSH_TASK = "reckonTagPush"; + public static final String TAG_TASK = "reckonTagCreate"; + public static final String PUSH_TASK = "reckonTagPush"; @Override public void apply(Project project) { From df5d5c7394f9ab78c9d8b887a43efb8dedce1829 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 12:53:19 -0500 Subject: [PATCH 09/11] Don't treat snapshot as a significant version We previously failed the build if you tried to explicitly build a snapshot on a dirty repo. This is because we treated it the same as for the stage-style approaches where input always indicates a significant version. Now we do the validation after we have the version and can just explicitly check for it being a significant version. This fixes #85. --- .../org/ajoberstar/reckon/core/Reckoner.java | 8 ++++---- .../ajoberstar/reckon/core/ReckonerTest.groovy | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java index 21d94f3e..811812fc 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java @@ -50,6 +50,10 @@ public Version reckon() { Version targetNormal = reckonNormal(inventory); Version reckoned = reckonTargetVersion(inventory, targetNormal); + if (reckoned.isSignificant() && !inventory.isClean()) { + throw new IllegalStateException("Cannot release a final or significant stage without a clean repo."); + } + if (inventory.getClaimedVersions().contains(reckoned) && !inventory.getCurrentVersion().map(reckoned::equals).orElse(false)) { throw new IllegalStateException("Reckoned version " + reckoned + " has already been released."); } @@ -103,10 +107,6 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal throw new IllegalArgumentException(message); } - if (stage != null && !inventory.isClean()) { - throw new IllegalStateException("Cannot release a final or significant stage without a clean repo."); - } - if (FINAL_STAGE.equals(stage)) { return targetNormal; } diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy index 52124909..0ed5857f 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy @@ -500,6 +500,22 @@ class ReckonerTest extends Specification { stage << ['rc', 'final'] } + def 'if repo has uncommitted changes, succeed when calculating a snapshot'() { + given: + def inventory = new VcsInventory( + 'abcdef', + false, + null, + Version.valueOf('1.2.2'), + Version.valueOf('1.2.2'), + 5, + [] as Set, + [] as Set + ) + expect: + reckonSnapshot(inventory, null, 'snapshot') == '1.3.0-SNAPSHOT' + } + def 'if stage supplier returns an invalid stage, throw'() { given: def inventory = new VcsInventory( From 6d50a3c9f88ea5180d922bf8c5f6d93f4b1a6065 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 12:58:05 -0500 Subject: [PATCH 10/11] Validate that snapshot is not provided to stages This is an unintended usage, so we want it to fail. This is related to #85. --- .../src/main/java/org/ajoberstar/reckon/core/Reckoner.java | 5 +++++ .../groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java index 811812fc..348dd1e9 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java @@ -197,6 +197,11 @@ public Builder stages(String... stages) { .sorted() .findFirst() .orElseThrow(() -> new IllegalArgumentException("No non-final stages provided.")); + + if (this.stages.contains(SNAPSHOT_STAGE)) { + throw new IllegalArgumentException("Snapshots are not supported in stage mode."); + } + return this; } diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy index 0ed5857f..1dc4e17d 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy @@ -11,6 +11,13 @@ class ReckonerTest extends Specification { private static final Clock CLOCK = Clock.fixed(Instant.ofEpochSecond(1530724706), ZoneId.of('UTC')) private static final String TIMESTAMP = '20180704T171826Z' + def 'if snapshot provided to stages builder, throw'() { + when: + Reckoner.builder().stages('snapshot', 'beta', 'final') + then: + thrown(IllegalArgumentException) + } + def 'if version is claimed, throw'() { given: VcsInventory inventory = new VcsInventory( From c2a43941bc35e0960672e113e2743c9027d9184c Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Wed, 4 Jul 2018 13:07:55 -0500 Subject: [PATCH 11/11] Lowercase all stage names This avoids weird situations where someone tries to work around stage sorting by relying on where lower vs upper case sort, or try to bypass final or snapshot behavior by using a different case. --- .../org/ajoberstar/reckon/core/Reckoner.java | 5 +++- .../reckon/core/ReckonerTest.groovy | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java index 348dd1e9..129f34ab 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java @@ -100,6 +100,7 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal String stage = stageCalc.apply(inventory, targetNormal) .map(String::trim) .filter(s -> !s.isEmpty()) + .map(String::toLowerCase) .orElse(null); if (stage != null && !stages.contains(stage)) { @@ -191,7 +192,9 @@ public Builder scopeCalc(Function> scopeCalc) { * @return this builder */ public Builder stages(String... stages) { - this.stages = Arrays.stream(stages).collect(Collectors.toSet()); + this.stages = Arrays.stream(stages) + .map(String::toLowerCase) + .collect(Collectors.toSet()); this.defaultStage = this.stages.stream() .filter(name -> !FINAL_STAGE.equals(name)) .sorted() diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy index 1dc4e17d..20f4d8db 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy @@ -18,6 +18,34 @@ class ReckonerTest extends Specification { thrown(IllegalArgumentException) } + @Unroll + def 'stages are lowercased'(String stage) { + given: + VcsInventory inventory = new VcsInventory( + 'abcdef', + true, + null, + Version.valueOf('1.2.3-beta.1'), + Version.valueOf('1.2.2'), + 1, + [Version.valueOf('1.3.0')] as Set, + [Version.valueOf('2.0.0-rc.1')] as Set + ) + when: + Reckoner.builder() + .clock(CLOCK) + .vcs { -> inventory } + .scopeCalc { i -> Optional.empty() } + .stages('beTA', 'miLEStone', 'RC', 'Final') + .stageCalc { i, v -> Optional.ofNullable(stage) } + .build() + .reckon() + then: + notThrown(IllegalArgumentException) + where: + stage << ['BeTa', 'Milestone', 'rc', 'fINal'] + } + def 'if version is claimed, throw'() { given: VcsInventory inventory = new VcsInventory(