blob: 2a5d3a237b1716fa337837bf77bf30f6291f2c13 [file] [log] [blame]
------
SCM Implementation: ClearCase
------
Wim Deblauwe, Arne Degenring
------
2008-09-02
------
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html
SCM Implementation: ClearCase
* General Info
Link: {{http://www-306.ibm.com/software/awdtools/clearcase/}}
License: Commercial
* SCM URL
For all URLs below, use a colon (:) as the separator. In case of a colon being used within one of the parameters (e.g. a Windows path),
then use a pipe (|) as the separator.
-------
scm:clearcase<delimiter>[view_name]<delimiter>config_spec
-------
<view_name>: Name of the view that is created on a 'checkout' of the code. This parameter is optional.
<config_spec>: Either
* a user-supplied config spec file, or
* one load rule that is used by the ClearCase SCM provider to automatically generate a config spec when creating a view.
[]
<<Note>>: Since 1.1.1, you could also use:
-------
scm:clearcase<delimiter>[loadCommand]<delimiter>[VOBName]<delimiter>[streamName]<delimiter>/main/fooBar/LATEST
-------
OR
-------
scm:clearcase<delimiter>[viewName]<delimiter>[loadCommand]<delimiter>[VOBName]<delimiter>[streamName]<delimiter>/main/fooBar/LATEST
-------
** ClearCase UCM
If you are using ClearCase UCM, the URL format is the following
-------
scm:clearcase<delimiter>[view_name]<delimiter>config_spec<delimiter>vob_name<delimiter>stream_name
-------
<vob_name>: Identifier of the ClearCase VOB
<stream_name>: Name of the project's Stream
** User-supplied config spec
If you specify the location of an user-supplied config spec file in the SCM URL, this config spec is used each time
a view is created. SCM URL samples:
-------
scm:clearcase:\\myserver\clearcase\configspecs\my_module.txt
scm:clearcase:my_module_view:\\myserver\clearcase\configspecs\my_module.txt
-------
To make sure all the correct elements are loaded in the view, the config spec must
have "load" rules specified. You can also include other config specs into your own config spec, as in the following
example:
-------
include \\myserver\clearcase\configspecs\my_dynamic_configspec.txt
load /myvob/modules/my_module
-------
Notice that checking out from a tag (which is used by the maven-release-plugin) is currently not supported for user-supplied config specs.
Another point to remember is that ClearCase does not check out projects directly into the checkout directory, but instead a sub-directory
of the checkout directory (e.g. /checkoutdir/myvob/modules/my_module instead of just /checkoutdir). This is unexpected by the
scm:bootstrap command, Continuum,
the Maven-Release-Plugin and other users of the ClearCase SCM provider. Adjust the build working directory after the checkout
(in Continuum, for example, by adjusting the POM file location within the Build definition).
** Auto-generated config spec
For many users of a base ClearCase SCM installation, auto-generated config specs are more convenient than user-supplied
config specs. Instead of being forced to provide a config spec file at an external location, the SCM URL contains
all information that is needed to check out the code. Specify one load rule for the project you want to check out within the
SCM URL, as in the following examples:
-------
scm:clearcase:load /MY_VOB/my/project/dir
scm:clearcase:my_module_view:load /MY_VOB/my/project/dir
-------
This information is used by the ClearCase SCM provider to automatically generate the following config spec:
-------
element * CHECKEDOUT
element * /main/LATEST
load <load_directory>
-------
When working with auto-generated config specs, checking out from version tags (= ClearCase label types) is supported as well.
(Notice that checking out from a branch tag (= ClearCase branch type) is currently not supported.)
In case a tag has been specified, the following config spec is created:
-------
element * CHECKEDOUT
element * <tag>
element -directory * /main/LATEST
load <load_directory>
-------
Notice that ClearCase does not check out projects directly into the checkout directory, but instead a sub-directory
of the checkout directory (e.g. /checkoutdir/myvob/modules/my_module instead of just /checkoutdir). When using auto-generated
config specs, the correct location of the project directory is provided to other modules that use the ClearCase SCM provider,
such as the scm:bootstrap command. As a consequence, the build can automatically be run from the correct working directory.
* Creating and removing views
Each time a 'checkout' of code is performed (e.g. when adding a project to Continuum), the ClearCase SCM provider creates a new snapshot view
using the <<cleartool mkview>> command.
As the view name, the <view_name> parameter is used if it has been specified. Many users prefer to leave the <view_name> parameter out,
as the ClearCase SCM provider automatically chooses a view name according to the following pattern:
<username>-<hostname>-maven-<checkoutdir>, e.g. johndoe-mymachine-maven-myproject.
Notice that the ClearCase SCM provider does not remove views once they have been created. When you don't need the view any longer,
remember to explicitly remove it using ClearCase HomeBase or cleartool, e.g. using one of the following commands:
-------
cleartool rmview /views/myproject
cleartool rmview -tag johndoe-mymachine-maven-myproject
-------
In case a view name already exists when checking out, ClearCase reports an error like the following:
-------
cleartool: Error: A registry entry already exists for "johndoe-mymachine-maven-myproject".
-------
* ClearCase settings file
You can configure the behaviour of the ClearCase SCM provider by providing a <<clearcase-settings.xml>> file, either
at ${user.home}/.scm/clearcase-settings.xml or at ${maven.home}/conf/clearcase-settings.xml. Notice: If the file is present
at both locations, the settings from the .scm subdirectory of the user's home directory is used; the settings are
not merged.
** -vws parameter on mkview command
By default, when creating a view, the -vws parameter of the mkview command is used to specify the location of the view store.
In many environments, however, the -vws parameter can be omitted, and ClearCase uses appropriate defaults.
To turn off the usage of the -vws parameter, configure it in the clearcase-settings.xml file:
-------
<clearcase-settings>
<useVWSParameter>false</useVWSParameter>
</clearcase-settings>
-------
** Viewstore location
This setting is only relevant if and when <<useVWSParameter>> has been left or set to the default value of <<true>>.
By default the viewstore location <<\\\\${hostname}\viewstore>> is used. To define another viewstore location,
use the following setting:
-------
<clearcase-settings>
<viewstore>\\mymachine\myvwstore</viewstore>
</clearcase-settings>
-------
** ClearCase Type
By default, the ClearCase SCM provider uses commands appropriate for the full ClearCase version. If you are using ClearCase LT or
ClearCase UCM instead, you must specify this fact in the clearcase-settings.xml file.
-------
<clearcase-settings>
<clearcaseType>UCM</clearcaseType>
</clearcase-settings>
-------
As ClearCase LT uses a predefined and unchangeable folder as the viewstore directory, you should also specify the viewstore
root location in the clearcase-settings.xml file:
-------
<clearcase-settings>
<clearcaseType>LT</clearcaseType>
<viewstore>\\mymachine\myvwstore</viewstore>
</clearcase-settings>
-------
* ClearCase dynamic views
The ClearCase SCM provider uses snapshot views. In case you are forced to use ClearCase dynamic views, one option is to
use the {{{./local.html}SCM local file system provider}} instead. Within the SCM URL, you could specify the view name
that the Continous Integration Server is using, for example:
-------
scm:local|\\view\continuum_view\MY_VOB\my\project|module1
-------
Notice that this option provides only very limited integration of Maven into the configuration management system. As no
SCM metadata can be accessed, it is not possible to use SCM plugin features like creating tags (applying labels), creating changelogs,
and so on.