component: component has its own repository and can be built and uploaded to some repositoryproject: root componentmanagable dependency: dependency of any component which is "under control", i.e. can be branched, built and uploaded to a maven repositorymdeps: file which lists managable dependencies, is located at the root of every repositorydevelop branch: branch which is used as a source for release branches (in other words - all development happens on). By default it ismasterortrunk, depending on VCS
- Add
versionfile to your repository, optionallymdeps - Clone https://github.com/scm4j/scm4j-releaser-shell
- Execute
releaser, it will createcc,cc.yml,credentials.ymlfiles in $user.home/.scm4j folder. Edit these files (ref. comments there) - Run
releaser (status|fork|build) com.mycompany:my-root-component
E.g. we have a product3 which depends on component39:0.9.5 and component50:0.5.0, all components and product3 sit in their own repositories. Now we add some commits to the develop branch of component50 and run the tool using status command. Tool analyzes repositories and suggests that new versions of component50 and product3 should be built. Then we can run tool using fork and build commands. fork command creates new release branches and increase minor versions in develop branches, build does whatever configured plus increases patch version in release branch.
For version definitions ref. semantic Versioning 2.0.0.
Run from gradle
- gradlew run -Pa=status,com.mycompany:my-root-component
- It is safe to add a new entry without version to any SNAPSHOT mdeps
- If you add or modify some release mdeps you must also copy these changes to all your project mdeps
- Otherwise it is possible to get "Inconsistent dependencies" error
- It is safe to remove a record from mdeps and add it to
build.gralde- this way you can change dependency version at your own risk, do not cry aftewards
CLIgets ExtendedStatusTree usingExtendedStatusTreeBuilderclass (ref. release statuses)ActionTreeBuilderconverts ExtendedStatusTree to ActionTree (IAction)- IAction is executed
- Subversion is very slow on VMs if network type is
NAT.Bridgetype gives much better perfomance. See similar problem here