Moved more logic into value objects to ease testability. Branches now know whether they're an issue branch for a given tracker. TicketBranches now implements Streamable and allows obtaining a new instance with only resolved tickets in it an inspect whether a it contains a ticket for a given Branch.
Cleaned up GitOperations and GitCommands to make use of the new functionality. "git issuebranches" command was tweaked to default resolvable to true in case the option is set.
Renamed GitHubConnector to correct case. Fixed imports in GitHubIssueTracker.
Formatting.
We now support a git backport changelog $trainIteration --target $targetTrain,$targetTrain to backport the changelog commit for the given source iteration into the given release trains. If the source iteration is not corresponding to the master branch (i.e. for service iterations), the master branch is becoming an additional target for the port.
Tweaked the expansion of the Maven plugins to only map the plugin so that e.g. versions:set gets expanded to the fully qualified version of the versions plugin as registered in application.properties.
Tweaked the expansion to inspect all arguments given but ignore properties not containing a colon or staring with a dash.
We now explicitly access an Artifactory resource to verify authentication so that it's less likely the deployment and promotion will fail later on. Added "artifactory verify" as command to be executed from the shell.
We're now using the global sorting of the projects defined by the topological graph analysis run at startup to implement Comparable and exposing this comparability on more upper levels like modules.
Switched to Apache Maven Invoker for running Maven on the projects.
Added JGraphT to correctly sort dependencies in topological order.
Upgraded to Spring Boot 1.3.2, Lombok 1.16.6, jGit 4.2.0. Upgraded to Spring Plugin 1.3 to benefit from lazy exception creation using lambdas. Added Lombok configuration to throw IllegalArgumentException on null checks.
Moved to Spring Boot 1.3 and leverage the new configuration properties mechanism (see GitProperties and IoProperties). Improved ArtifactVersion to be a better value object.
Introduced usage of Java 8's CompletableFuture to execute most of the Git operations in parallel. Started to use Lambdas where possible.
Git configuration is now supposed to be done using a application-local.properties (Git ignored) file containing the relevant properties (see readme). The test configuration now uses a separate workspace location and a Sample release train to make sure the integration tests run without interfering a local workspace.
Added train declaration for Hopper. Integrated BootShim (see [0], [1]) to run the shell on top of Spring Boot.
[0] https://github.com/jeffellin/springshellwithboot
[1] https://github.com/spring-projects/spring-shell/issues/34