VCP::DB(3p)

NAME
VCP::DB - Persistant storage for id -> (name, rev_id) maps

SYNOPSIS
    use base qw( VCP::DB );

DESCRIPTION
By default, most VCP::Dest::* drivers keep track of the relationship between the id field assigned by the (original) VCP::Source::* driver and the final name and rev_id (or whatever fields are important to it) in the destination repository so that the previous_id fields, which refer to the original id, may be resolved when backfilling or branching.

The VCP::*::revml drivers do not do this; they do not need to resolve id fields.

The intent for this file is to serve as a base class so that individual sites may write their own ", ref $self, " plugins to, for instance, store this state in a RDBMS table. This is not quite offered at this time; we need to add an option to the appropriate VCP::Dest::* modules to allow the appropriate ", ref $self, " file to be loaded.

To write your own ", ref $self, " file, see VCP::DB::sdbm.

  Methods

new
       VCP::DB::foo->new(
          StoreLoc => $dir,  ## path to a dir to keep the state store in
       );

    The "Store" field indicates where the DBFile should be stored, for instance a DBI specification string or a directory to place a "revmap.db" file in. There is no control over the filename, as different storage modes may need different conventions.

store_loc
    Gets (does not set) the StoreLoc field as an absolute path.

delete_db
       $db->delete_db;

    Deletes the persitent store. This should remove all files, lock files, etc. for filesystem stores and drop any tables for RDBMS stores.

    Default action is to call close_db; subclasses should

    (subclasses should call "$self-"SUPER::delete_db before doing anything else in their delete_db() overrides).

open_db
       $db->open_db;

    Creates a new or opens an existing db.

    (subclasses should call "$self-"SUPER::open_db before doing anything else in their open_db() overrides).

open_existing_db
       $db->open_existing_db;

    Opens an existing db.

    (subclasses should call "$self-"SUPER::open_existing_db before doing anything else in their open_existing_db() overrides).

close_db
       $db->close_db;

    (subclasses should call "$self-"SUPER::close_db before doing anything else in their close_db() overrides).

set
       $db->set( $key, @values );

    Sets the values for $key.

get
       my @values = $db->get( $key );

    Gets the values for $key.

exists
       $db->exists( $key );

    Tests that key exists

keys
       my @keys = $db->keys;

    Returns a list of ARRAY references, each ARRAY reference contains the fields for one key.

dump
       $db->dump( \*STDOUT );
       my $s = $db->dump;
       my @l = $db->dump;

    Dumps keys and values from a DB, in lexically sorted key order. If a filehandle reference is provided, prints to that filehandle. Otherwise, returns a string or array containing the entire dump, depending on context.

AUTHOR
Barrie Slaymaker <barries@slaysys.com>

COPYRIGHT
Copyright (c) 2000, 2001, 2002 Perforce Software, Inc. All rights reserved.

See VCP::License ("vcp help license") for the terms of use.