VCP::Utils::cvs(3p)

NAME
VCP::Utils::cvs - utilities for dealing with the cvs command

SYNOPSIS
   use VCP::Utils::cvs ;

DESCRIPTION
A mix-in class providing methods shared by VCP::Source::cvs and VCP::Dest::cvs, mostly wrappers for calling the cvs command.

METHODS

cvs Calls the cvs command with the appropriate cvsroot option.

parse_cvs_repo_spec
    This handles ":pserver:"-like type repository specs specially, defaulting to normal processing if the scheme is not followed by something like "foo". The username and password are parsed out of the spec

    If the first colon is followed by a colon, like

       cvs::pserver:user@server/foo:bar

    , then the special processing kicks in and the spec is parsed accordingly. Everything up to and including the first colon and starting with the last colon are stripped, just like with normal specs, and the remainder becomes the CVSROOT. This does have the side effect of plaintexting the password in various CVS places (like the local CVS directories and the command lines that VCP forks to launch CVS). Let me know if you need this changed.

cvsroot
    Returns the specced cvsroot if set, or $ENV{CVSROOT} if not.

    While $ENV{CVSROOT} must be an absolute path if it's local (to be completely consistent with the cvs command), the path repo_server value, if set, may be relative (unless it begins with a ':', which indicates a non-local path).

create_cvs_workspace
        $self->create_cvs_workspace;
        $self->create_cvs_workspace( create_in_repository => 1 );

    Creates a temp dir named "co" for "cvs" to work in, checks out the module there, and sets the work root and cvs working dir to that directory.

RCS_check_tag
        RCS_check_tag $tag1, ...;

    Checks a list of tags for legality, die()s if it's not legal. Named after the corresponding routine in CVS's rcs.c source file.

    No clue how this interacts with your locale.

RCS_underscorify_tag
        @tags = RCS_check_tag $tag1, ...;

    Modifies a list of tags, replacing illegal characters with underscores. This may lead to tag collisions, but it should be ok for most uses.

    Converts something like "a@" to "a_AF_". Not a guaranteed solution, but good enough for now.

COPYRIGHT
Copyright 2000, Perforce Software, Inc. All Rights Reserved.

This module and the VCP package are licensed according to the terms given in the file LICENSE accompanying this distribution, a copy of which is included in vcp.