I have two questions:
1) Given that pretty much the entire FOSS universe seems to be moving
away or have already moved away from, CVS, should we perhaps consider
integration as Obsolete, with some suitable note in the man pages or
other docs recommending the use of alternatives such as SVN or Hg?
2) Not really architectural, but you indicate that this is released
under GPLv1. If so, are there are any other GPLv1 software in
OpenSolaris? Maybe this needs a special case of legal review? (I am
not entirely familiar with the differences between GPLv1 and GPLv2....)
-- Garrett
Peter Dennis - Sustaining Engineer wrote:
> 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/