SCM Implementation: CVS

General Info

Link: https://www.cvshome.org/

License: GPL

SCM URL

The general format for a CVS SCM URL is

scm:cvs<delimiter><method>[<delimiter>username_password_servername_port]<delimiter>path_to_repository<delimiter>module_name

As delimiter you can use either colon ':' or, if you use a colon for one of the variables (e.g. a windows path), a pipe '|'.

The following methods are supported:

  • ext, connecting to a server using an external rsh program
  • local, connecting to the local file system
  • lserver, connecting to a local server
  • pserver, connecting to a password-authenticating server
  • sspi, secure authentication (less supported by clients and servers, may require using native implementation, for more details see "How to choose the CVS provider implementation")
  • sserver, SSL connection method for CVS (only if cvs_native is used i.e. using -Dmaven.scm.provider.cvs.implementation=cvs_native with Maven)

Here are the format for each of the supported methods, using colon as delimiter.

scm:cvs<delimiter>local<delimiter>path_to_repository<delimiter>module_name
scm:cvs<delimiter>lserver<delimiter>[username@]servername[<delimiter>port]<delimiter>path_to_repository<delimiter>module_name
scm:cvs<delimiter>pserver<delimiter>[username[<delimiter>password]@]servername[<delimiter>port]<delimiter>path_to_repository<delimiter>module_name
scm:cvs<delimiter>ext<delimiter>[username@]servername[<delimiter>port]<delimiter>path_to_repository<delimiter>module_name
scm:cvs<delimiter>sspi<delimiter>[username@]host<delimiter>path<delimiter>module

Examples

scm:cvs:pserver:anoncvs:@cvs.apache.org:/cvs/root:module
scm:cvs|pserver|username@localhost|C:/Program Files/cvsnt/repositories|module_name
scm:cvs:ext:username@cvs.apache.org:/cvs/root:module
scm:cvs:local:/cvs/root:module
scm:cvs:sspi:cvs.apache.org:2222:/cvs/root:module

If you use anonymous access, with an empty password, you need to add a colon (:) between the username and "@" like it's done in the first example. This tells the SCM provider that there is a password and that it is empty.

How to choose the CVS provider implementation

By default, the pure java CVS provider is used (which may not support SSPI protocol), so you don't need a cvs client installed on your machine. In some case, you can want to use the installed CVS client (for example, CVSNT). To do it, you can change the implementation to use by settings the 'maven.scm.provider.cvs.implementation' system property:

-Dmaven.scm.provider.cvs.implementation=cvs_native

Provider Configuration

The provider configuration is defined in $user.home/.scm/cvs-settings.xml

Compression level

You can define the compression level in the provider configuration file (default value is 3). If compression level is equals to 0, there won't be any compression.

<cvs-settings>
  <compressionLevel>5</compressionLevel>
</cvs-settings>

If you don't want compression, you can define the system property 'maven.scm.cvs.use_compression'.

mvn -Dmaven.scm.cvs.use_compression=true scm:changelog

.cvsrc file

By default, maven-scm doesn't use .cvsrc file. If you want to use it, you should allow it inprovider configuration file.

<cvs-settings>
  <useCvsrc>true</useCvsrc>
</cvs-settings>

Trace CVS commands

By default, maven-scm doesn't use '-t' global option of cvs command line to trace. If you want to use it, add the following lines in your provider configuration file:

<cvs-settings>
  <traceCvsCommand>true</traceCvsCommand>
</cvs-settings>

Temporary CVS files

If you want to store CVS temporary files in a specific directory instead of default or value define in $TMPDIR, add the following lines in your provider configuration file:

<cvs-settings>
  <temporaryFilesDirectory>your_directory</temporaryFilesDirectory>
</cvs-settings>

Internal CVS variables

If you want to add some internal CVS variables to the cvs command line, add the following lines in your provider configuration file:

<cvs-settings>
  <cvsVariables>
    <key1>value1</key1>
    <key2>value2</key2>
  </cvsVariables>
</cvs-settings>