SCM Implementation: Jazz

General Info

This SCM provider wrappers the underlying command line tool "scm" that is provided as part of Jazz SCM offering. As such, this provider is subject to the capabilities provided by the scm tool.

The scm tool itself is documented at:

Jazz is available from:

Link: http://jazz.net/

License: Free

IBM Rational Team Concert is IBM commercial offering based upon the Jazz base platform. This provider may also be used with RTC.

Link: http://www-01.ibm.com/software/rational/products/rtc/

License: Commercial

Environment Configuration

The Jazz SCM source control command line tools are installed in JazzInstallDir/scmtools/eclipse, which may not have been added to your default path. You must make sure that this path is available to maven when using this provider.

Additionally, the user used to log onto the Jazz SCM server must be assigned a Developer Client Access License. 10 developer licenses are available for free from http://jazz.net/.

SCM URL

scm:jazz:[username[;password]@]http[s]://server_name[:port]/jazzPath:repositoryWorkspace

  • username;password May be provided directly in the pom, or using the server_name:port to obtain the details from the user's settings.xml file.
  • http[s]://server_name:port/jazzPath Specify the jazz server and path to connect to.
  • repositoryWorkspace The name of the user's remote repository workspace used to checkin to, or load from.
scm:jazz:[username[;password]@]http[s]://server_name[:port]/jazzPath:repositoryWorkspace

Examples

scm:jazz:username;password@https://server.name:9443/jazz:Chris's Repository Workspace
scm:jazz:https://server.name:9443/jazz:Chris's Repository Workspace
scm:jazz:https://server.name:9443/ccm:GPDBBuildWorkspace

Jazz SCM Concepts and Artefacts

This provider only interacts with Jazz SCM, not all of the full capabilities of the full Jazz Server. This implementation is basically a wrapper for the Jazz SCM CLI tool, scm, and as such it is limited to the functionality provided by the underlying scm tool.

There are many artifacts and concepts in Jazz SCM. Many of these artifacts and concepts are substantially different than how many other SCM providers work.

We need some way to address these when we try to map the given maven-scm framework to Jazz SCM. Below is a list of these "artifacts / concepts" and roughly how they relate to the maven-scm framework.

  • Local Workspace
    • This corresponds to fileSet.getBasedir() and is the "baseDirectory" in which the SCM goals are performed against.
  • URL Path (ex: https://localhost)
    • This must be specified in the "SCM URL" of the pom.xml.
    • It's value will be stored in our implementation of the ScmProviderRepositoryWithHost.java.
  • Port (ex: 9443)
    • This must be specified in the "SCM URL" of the pom.xml.
    • It's value will be stored in our implementation of the ScmProviderRepositoryWithHost.java.
  • Jazz Path (ex: /jazz)
    • This must be specified in the "SCM URL" of the pom.xml.
    • It's value will be stored in our implementation of the ScmProviderRepositoryWithHost.java.
  • Repository Workspace
    • This must be specified in the "SCM URL" of the pom.xml.
    • It's value will be stored in our implementation of the ScmProviderRepositoryWithHost.java.
  • Username
    • This may be specified in the "SCM URL" of the pom.xml.
    • If not specified in the pom.xml, the username must be specified in a server entry of settings.xml.
    • It's value will be stored in our implementation of the ScmProviderRepositoryWithHost.java.
  • Password
    • This may be specified in the "SCM URL" of the pom.xml.
    • If not specified in the pom.xml, the username must be specified in a server entry of settings.xml.
    • It's value will be stored in our implementation of the ScmProviderRepositoryWithHost.java
  • Components
    • There is currently no concept of individual components in our implementation, or specifying them, they are implicitly obtained from the repository workspace.
    • Scm goals are currently assumed to be against all components in the repository workspace.
  • Baselines
    • Since we don't distinguish components, we do not use the concept of baselines.
  • Snapshots
    • We can use snapshots because we have a repository workspace defined in the SCM URL.
    • We assume that ScmVersion.getName() will correspond to a snapshot name.
  • Streams
    • We currently do not support the concept of streams in our provider.
  • Project Areas
    • We currently do not support the concept of project areas in our provider.
  • Team Areas
    • We currently do not support the concept of team areas in our provider.
  • Multiple Outgoing Change Sets
    • The SCM add operation performs a checkin, but it does not create a new change set.
    • The SCM checkin operation creates a new changeset, with the given comment and then checks the files in.
  • Delivering Change Sets
    • Changes are delivered/promoted as controlled by the pushChanges flag when we have a valid flow target.
  • Discarding Change Sets
    • We currently do not support the concept of discarding change sets in our provider.