The VcsTools-File package is a set of object which enable you to
perform a lot of functions to a Vcs file :

- check-in, check-out, lock, unlock files
- edit (by launching a xemacs gnuclient)
- history analysis (through VcsTools::History)
- keep a cache in a MLDBM file so that a history retrieve is not necessary
  each time you start the tool.

Suggested DSLI line:
VcsTools::File bdpO VCS file management tools             DDUMONT


Note that only HP HMS and RCS are currently implemented. See below to
port VcsTools to another VCS system.


HMS is part of the HP Softbench CM product. 
If this address is reachable from your site, you can get more info on
HMS at: http://www.hp.com/esy/go/softbench.html

The classes defined in this package are:

- File: This class contains the History and access all other agent
  objects which represent the "real" world (Vcs interface, file system
  interface, process interface). Note that the objects representing
  the "real world" are passed to the constructor of File. So you can
  re-define your own "real world" class, instanciate them in your
  application and and use them within File without modifying the File
  class.

- FileAgent: Class to perform basic file functions such as remove,
  chmod...

- HmsAgent: Class which defined the command needed to perform
  operation on the HMS database. (such fci, fco ...). Note that only
  this class should be re-written on order to provide an access to
  other VCS systems.

- RcsAgent: Class which defined the command needed to perform
  operation on the RCS database. (such ci, co ...). You may want to
  make a diff between HmsAgent and RcsAgent to know what's involved in
  adapting VcsTools to another VCS system.

- Process: Tiny module which runs processes (currently in blocking
  mode) and returns 1 or 0 according to the result of the sub-process.


Porting VcsTools to another VCS system
--------------------------------------

When creating a File object, you pass it a class name which will be the
interface to the VCS system you want to use. 

Hence if you want to use a FOO VCS system, you must:

- create a FooAgent class (check the difference between HmsAgent and
  RcsAgent to know what's involved in adapting VcsTools to your VCS
  system) which respect the API defined for HmsAgent or RcsAgent.
- Pass the "VcsTools::FooAgent" name to the VcsTools::File constructor.

Et voil�, that's all you need to do.



I'd like people who actually use this module for their application to
drop me a short note about what they're using this module for. 


This module was written with perl5.005_03. 

See the embedded documentation in the module for more details.

Comments and suggestions are always welcome.

Note that this module is in beta state. Its interface may change (but
I hope not).

Legal mumbo jumbo:

 Copyright (c) 1998-1999 Dominique Dumont. All rights reserved.
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
 IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 

 - Dominique Dumont
   dominique_dumont@grenoble.hp.com

---------------------------------------------------------------------
INSTALLATION

   	 gunzip -c <dist_file>.tar.gz | tar xvf -
   	 cd <dist_directory>
   	 perl Makefile.PL
   	 make test          
   	 make install