I am sponsoring this FastTrack for Maxim Kartashev.

Mans pages are included in the case's materials directory.

Thanks
pete

1. Introduction

   This project proposes to add the source code management (SCM)
   system CVS[1] to the SFW consolidation for delivery on
   OpenSolaris/Indiana. Since CVS is externally maintained open
   source software, the SFW consolidation is a natural choice.

   This project requests a Minor release binding.

2. Background and motivation

   One of Indiana's (a.k.a OpenSolaris Developer Preview)[2] targets
   is to support software development on Solaris OS. The latter
   almost always requires use of SCM.

   CVS is an open-source version control system, widely used by many
   software developers, including Sun (for example, NetBeans developers
   used CVS to manage sources until recently). Being in development for
   about 20 years, CVS is rather stable and platform-independent.
   Although loosing popularity these days, it still provides familiar
   interface and services such as sourceforge.net[3] continue to support
   CVS-based development.

   The most recent version of CVS as the time of this writing is
   1.12.13. The product was last updated by the community
   2005-10-03 and latest changes are limited to bug fixes only.

3. Architecture

   CVS uses client-server architecture: server stores project files
   and history of changes (the repository), clients connect to the server
   in order to obtain (check out) a complete copy of the project and,
   after modifying files, check them back in. Typically, the client and
   server connect over a LAN or over the Internet, but client and server
   may both run on the same machine.

   When remote repository is used (most common case), clients can connect
   to it and perform authentication using two methods - "external" and
   "pserver".

   External means that cvs will use external program specified in
   $CVS_RSH environment variable (default is 'ssh') to start a program
   specified by $CVS_SERVER (default is 'cvs') on a remote machine. The
   command line looks like this:
         $CVS_RSH -l <username> <hostname> $CVS_SERVER server
   After cvs is started on the remote machine, data are transmitted
   through standard input and output.

   The other connection method, "pserver" or password server, requires
   cvs daemon started on a remote machine. The same executable is used
   on both sides. Clients connect to port 2401 (configurable) and
   server performs authentication based on passwd file located in
   the repository client wishes to connect to. This file contains
   passwords encrypted according to standard crypt(3C) function. Common
   practice is to log in to a repository first, in which case CVS stores
   password (trivially scrambled) in $HOME/.cvspass. Upon successul
   login, subsequent cvs commands won't ask for a password.

   CVS is about 70,000 lines of C code. It is released under version 1
   of the GPL.

   This project depends on PSARC/2006/537[4] to provide (optional)
   compression of the data being transmitted. It also uses ssh
   (PSARC/2001/212) and rsh; both are theoretically optional, but
   used frequently in real life.

4. Documentation

   CVS comes with manual pages describing commands and providing
   examples. These manual pages are installed in /usr/share/man/man{1,5}
   The other source of documentation is a book named "Version Management
   with CVS"[5].

5. Interfaces

   Exported Interface            Stability       Notes
   ------------------            ---------       -----
   SUNWcvs                       Committed       Package name.

   /usr/bin/cvs                  Committed       Executable location.

   $HOME/.cvsrc                  Committed       Path to user config
                                                 file.

   <repository>/CVSROOT          Committed       Path to the repository
                                                 config files.

   <working dir>/*/*/CVS         Committed       Path to the working
                                                 directory information
                                                files.

   <working dir>/*/*/CVS/Root    Committed       Path to the file that
                                                 contains the path to
                                                 the current repository.

   <working dir>/*/*/CVS/Repository      Committed Path to the file
                                                  containing the
                                                  directory within the
                                                   repository, which the
                                                  current directory
                                                  corresponds with.

   <working dir>/*/*/CVS/Entries         Committed Contains the file/dir
                                                  list of the current
                                                  directory.

   <working dir>/*/*/CVS/Entries.Log     Committed Backup copy of Entries
                                                  file.

   <working dir>/*/*/CVS/Entries.Backup  Committed Backup copy of Entries
                                                  file.

   <working dir>/*/*/CVS/Entries.Static  Committed Backup copy of Entries
                                                  file.

   <working dir>/*/*/CVS/Tag             Committed Contains per-directory
                                                  sticky tags or dates.

   <working dir>/*/*/CVS/Notify          Committed Stores notifications
                                                  which have not yet
                                                  been sent to the
                                                   server.

   <working dir>/*/*/CVS/Notify.tmp      Committed Backup copy of Notify.

   <working dir>/*/*/CVS/Base/           Committed Stores the original
                                                  copy of file that is
                                                  being edited by
                                                   "edit" command.

   <working dir>/*/*/CVS/Baserev         Committed Contains the revision
                                                  for each file stored
                                                  in the Base/
                                                  directory.

   <working dir>/*/*/CVS/Baserev.tmp     Committed Backup copy of Baserev
                                                  file.

   <working dir>/*/*/CVS/Template        Committed Contains the template
                                                   specified by the
                                                  rcsinfo file.

   <repository>/CVSROOT/cvsignore        Committed Path to the file with
                                                   per-repository list of
                                                   ignored files.

   $HOME/.cvsignore                      Committed Path to the file with
                                                   per-user list of files
                                                  to ignore.

   <working dir>/*/*/.cvsignore          Committed Path to the file with
                                                  list of ignored files.
                                                  Only applies to the
                                                  directory that
                                                   contains it.

   cvs commandline               Volatile        Options, cvs commands
                                                and their options.

   cvs add                       Volatile        Command.
   cvs admin (rcs)               Volatile        Command.
   cvs annotate                  Volatile        Command.
   cvs checkout (co, get)        Volatile        Command.
   cvs commit (ci)               Volatile        Command.
   cvs diff                      Volatile        Command.
   cvs edit                      Volatile        Command.
   cvs editors                   Volatile        Command.
   cvs export                    Volatile        Command.
   cvs history                   Volatile        Command.
   cvs import                    Volatile        Command.
   cvs init                      Volatile        Command.
   cvs log                       Volatile        Command.
   cvs login                     Volatile        Command.
   cvs logout                    Volatile        Command.
   cvs ls                        Volatile        Command.
   cvs pserver                   Volatile        Command.
   cvs rannotate                 Volatile        Command.
   cvs rdiff (patch)             Volatile        Command.
   cvs release                   Volatile        Command.
   cvs remove                    Volatile        Command.
   cvs rlog                      Volatile        Command.
   cvs rls                       Volatile        Command.
   cvs rtag                      Volatile        Command.
   cvs server                    Volatile        Command.
   cvs status                    Volatile        Command.
   cvs tag                       Volatile        Command.
   cvs unedit                    Volatile        Command.
   cvs update                    Volatile        Command.
   cvs version                   Volatile        Command.
   cvs watch                     Volatile        Command.
   cvs watchers                  Volatile        Command.

   CVSIGNORE                     Committed       Environment variable.
   CVSWRAPPERS                   Committed       Environment variable.
   CVSREAD                       Committed       Environment variable.
   CVSREADONLYFS                 Committed       Environment variable.
   CVSUMASK (client side)        Uncommitted     Environment variable.
   CVSUMASK (server side)        Committed       Environment variable.
   CVSROOT                       Committed       Environment variable.
   CVSEDITOR                     Committed       Environment variable.
   CVS_RSH                       Committed       Environment variable.
   CVS_SERVER                    Committed       Environment variable.
   CVS_PASSFILE                  Committed       Environment variable.
   CVS_CLIENT_PORT               Committed       Environment variable.
   CVS_PROXY_PORT                Committed       Environment variable.
   CVS_RCMD_PORT                 Committed       Environment variable.
   CVS_CLIENT_LOG                Committed       Environment variable.
   CVS_SERVER_SLEEP              Committed       Environment variable.
   CVS_IGNORE_REMOTE_ROOT        Committed       Environment variable.
   CVS_LOCAL_BRANCH_NUM          Committed       Environment variable.
   CVS_PID                       Committed       Environment variable.

   Return status (except diff command)   Committed       Return status.
   Return status of diff command         Volatile        Return status.

   All commands are marked Volatile after ChangeLog examination. Command
   actions do not change at all, but every command has additional
   modifiers (or options) and interpretation of the latter could be
   changed (and actually did) in a minor release. One example is
   interpretation of '-r tag1::tag2' option of log command that changed
   in a minor release.

   Almost all environment variables are marked as Committed because they
   have not changed since they first appeared in CVS.

   Uncommitted environment variables are marked as such because the
   documentation ("Version Management with CVS") clearly stated that
   future versions might not use those.

   Imported Interface            Specified in
   ------------------            ------------
   zlib                          PSARC/2006/537
   ssh                           PSARC/2001/212

6. References

   1. http://cvs.nongnu.org/
   2. http://www.opensolaris.org/os/project/indiana/
   3. 
http://alexandria.wiki.sourceforge.net/CVS+-+Version+Control+for+Source+Code
   4. PSARC/2006/537 Solaris libz (zlib) upgrade to 1.2.3
   5. http://ximbiot.com/cvs/manual/

Reply via email to