Search code examples
syntaxcvs

What is this CVS command doing?


I have been scouring the CVS man page for a while now, but am not able to follow what this CVS command is meant to do exactly. There appears to be multiple listings for -F in the man page, Im not sure if this is being used to specify a log file or regex or what. Is it merging ${newTag} into ${mainTag} or is constantPerl the tag? mainTag is defined as 'Production' and newTag is passed in as an argument to the script that runs this:

cvs -d /home/main/cvs rtag -r ${newTag} -F ${mainTag} constantPerl


Solution

  • CVS has two kinds of options, global options and command options.

    The form of a cvs command is:

    cvs [ GLOBAL_OPTIONS ] COMMAND [ COMMAND_OPTIONS ] [ COMMAND_ARGS ]
    

    In your case

    cvs -d /home/main/cvs rtag -r ${newTag} -F ${mainTag} constantPerl
    

    the COMMAND is rtag. You can tell from that that

    -d /home/main/cvs
    

    is a global option (that can apply to any cvs command) and that

    -r ${newTag}
    

    and

    -F ${mainTag}
    

    are command options, specific to the rtag command. Anything between the cvs command and the sub-command name (rtag, log, etc.) is a global option; anything following the sub-command name is a command option or a command argument.

    In the CVS documentation (info cvs), go to the "Invoking CVS" section and search for rtag, where you'll find the following:

    '-r TAG[:DATE]'
    Tag the revision already tagged with TAG or, when DATE is specified and TAG is a branch tag, the version from the branch TAG as it existed on DATE. See *note Tagging by date/tag:: and *note Common options::.

    and:

    '-F'
    Move TAG if it already exists. See *note Modifying tags::.