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 ismaster
ortrunk
, depending on VCS
- Add
version
file to your repository, optionallymdeps
- Clone https://github.com/scm4j/scm4j-releaser-shell
- Execute
releaser
, it will createcc
,cc.yml
,credentials.yml
files 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
CLI
gets ExtendedStatusTree usingExtendedStatusTreeBuilder
class (ref. release statuses)ActionTreeBuilder
converts ExtendedStatusTree to ActionTree (IAction)- IAction is executed
- Subversion is very slow on VMs if network type is
NAT
.Bridge
type gives much better perfomance. See similar problem here