CVS Command Specification

## CVS Commands

CVS commands are specified by a string consisting of colon separated fields. A proper cvs command has the following format:

command:entries:request:response:arguments
Where:

command
  The cvs command to send to the server, such as 'add', 'ci', or 'update'.

entries
  A string specifying the entries in the project to apply the command to. This string consists of an initial character which specifies the type of selection to make, which can possibly be following by a parameter that is used by the selection.

  The possible selectors are as follows:

  - N - No entries.
  - A - All entries in the project.
  - a - All entries selected in the displayed list of entries.
  - M - All entries which have been modified.
  - m - All entries selected in the displayed list which are modified.
  - L - All entries which have been lost (removed from local working directory).
  - l - All entries selected in the displayed list which have been lost.
  - U - All entries which are unchanged.
  - u - All entries selected in the displayed list which are unchanged.
  - p - The entry that the popup menu was clicked on.
  - G - A new file selected by the user
      Currently the only parameter that is used is when the selector is 'G', which is to select a new file provided by the user via a FileDialog. The parameter specifies a pathname for which the FileDialog should initialize its display.
request
  A string of option characters specifying the entries in the project to apply the command to. This string consists of an initial character which specifies the type of selection to make, which can possibly be following by a parameter that is used by the selection.

  The possible selectors are as follows:

  - A - Send any specified argument with the request
  - E - Send 'Entry' lines for the selected entries.
      If this setting is used, each entry will have its 'Entry' line sent to the server, as well as the entry's 'status ('Lost', 'Unchanged', etc.). However, in the case of modified files, which request is sent with the entry is determined by the 'S' and 'U' settings.

  - S - Send 'special' empty 'Modified' requests.
      When a file is modified locally, and the server expects a 'Modified' request, but the contents of the file are unused by the server, then you can use this setting. The 'Modified' request is sent as usual, however, the size of the file is sent as 'zero' to avoid sending the entire contents of the file. This should be used with caution as some commands will not work properly with empty files.

  - U - Send 'Modified' requests for locally modified files.
      When a file is modified locally, this setting will cause a 'Modified' request to be sent to the server. If the 'S' setting is also used, the file contents uploaded will be zero length. Otherwise, the current contents of the file are uploaded with the modified request.

  - F - Send the selected entries as the [files...] argument to the cvs command
  - M - Send the project name as the [module] argument to the cvs command
  - G - Guarantee the '-m' message option is provided in the list of arguments.
      If the option is not provided, a dialog will be displayed prompting the user to provide one.

  - P - Do not queue the reponse before processing it.
      When processing cvs requests, jCVS queues all of the responses from the server before processing them. This is critical for some procedures, such as checking out a 3000 file repository, since queueing the response would typically exhaust available memory.

  - R - Redirect the stdout of the reponse.
      The user will be prompted for a file into which to store the stdout output of the server reponse.

  - V - Verification Only.
      Only perform the authentication part of the request and return.

  - O - Trace the processing of the request 'output' phase.
  - I - Trace the processing of the response 'input' phase.
  - T - Trace the TCP data exchanged between jCVS and the cvs server.
response
  A string of option characters specifying the entries in the project to apply the command to. This string consists of an initial character which specifies the type of selection to make, which can possibly be following by a parameter that is used by the selection.

  The possible selectors are as follows:

  - c - Handle the 'Copy-file' response from the server.
  - d - Display the results of the request and the responses from the server.
  - e - Handle all 'Entry' responses.
      This includes responses such as 'Checked-in', 'Remove-entry', as well as 'Updated' and 'Merged', which provide Entry lines with the response.

  - f - Handle all 'settings' related responses.
      This includes responses such as 'Set-sticky', and 'Set-sticky-directory'.

  - i - Ignore the status of the cvs server response.
      Each request returns a result indicating the status of the command. However, some commands, namely 'diff', return an error status even when the command completes successfully. When this setting is used the result is simply ignored and assumed to indicate success.

  - k - Keep temporary files.
      Sometimes it is convenient to keep the temporary files that jCVS creates, say for debugging. If this option is set, jCVS will not delete the temporary files it uses in processing a request.

  - m - Handle 'Merged' responses from the server.
  - o - Allow overwrites of local files, even when modified!
  - t - Traces the processing of the response processing phase.
  - u - Handle 'Updated responses from the server.
arguments
  A string specifying arguments to be included with the command. The arguments in this string will be overridden by any provided by the user that match. These are to be considered default arguments. To prevent the user from overriding these arguments, do not provide the 'A' option to the request specification, so that the user's arguments are not sent.

## Examples

- cvs status command on the currently selected files
    status:a:EUAF:d:
- commit the entire project
    co:A:AMP:deou:

UNDONE

$Id: CVSCommandSpec.html,v 2.2 1997/04/21 05:02:27 time Exp $
Copyright (c) 1997 By Timothy Gerard Endres
jCVS is licensed to you under the GNU General Public License.