From: ADVAX::"rtg2t@krebs.acc.virginia.edu" 20-JAN-1991 23:04:38.39 To: arisia::everhart, rtg2t@krebs.acc.virginia.edu CC: Subj: rcs talk Received: by ADVAX.DECnet (utk-mail11 v1.5) ; Sun, 20 Jan 91 23:03:23 EST Received: from mcnc by ge-dab.GE.COM (5.61/GE-DAB 1.15) with UUCP id AA01924 for everhart; Sun, 20 Jan 91 23:03:13 -0500 Received: from uvaarpa.virginia.edu by mcnc.mcnc.org (5.59/MCNC/6-11-90) id AA15050; Sun, 20 Jan 91 22:08:39 -0500 for arisia.dnet.ge.com!everhart Message-Id: <9101210308.AA15050@mcnc.mcnc.org> Received: by uvaarpa.virginia.edu id aa28723; 20 Jan 91 22:08 EST Received: from krebs.acc.Virginia.EDU by uvaarpa.virginia.edu id aa28387; 20 Jan 91 21:52 EST Date: Sun Jan 20 21:51:44 1991 From: "Richard T. Gregory" Reply-To: rtg2t@krebs.acc.virginia.edu To: arisia::everhart, rtg2t@krebs.acc.virginia.edu Subject: rcs talk I. RCS Origins Dr. Walter Tichey at Purdue University available by anonymous ftp from ....purdue.edu Bring a 1.2M floppy to the LUG meeting in a SASE if you wish the source and documentation. Bring a TK50/70 or 9 track tape in a self addressed stamped mailer if you wish the EXE files, ready to install. See Dr. Tichey's original paper on RCS (available by ftp or at pavlug mtg) or see section 5.3.3 in Software Engineering by I.Sommerville Purdue supplies a complete set of online manuals. II. Porting to VMS a. path names and parameters for ci / co were simplified b. reference directory fetched from a predefined symbol name c. temp file names were standardized to rcs__*.tmp d. RCS file name "fred.c_v" and locking file name "fred.c_v_lock" e. character string constants were written in a non-portable way. f. mail interface needed a little change. g. header files unix vs. vms. h. default comment characters for vms added. (*.com, *.bas, etc.) i. Caution - username is uppercase, command line arguments are lowercase j. #ifdef out all calls to chmod() because it works differently than the unix version. h. Add a vms rename that detects the two files on the same physical device. i. Let VMS delete the semaphore (Lock) file when it is closed. III. RCS Usage 1. Acts as a librarian and prevent programmer2 from overwriting changes made by programmer1. 2. Allow fast retrieval of old versions without relying on tape restores. 3. Provide an automatic audit trail of changes and dates of changes. Tichey's introduction: "The Revision Control System (RCS) manages multiple revisions of text files. RCS automates the storing, retrieval, logging, identification, and merging of revisions. RCS is useful for text that is revised frequently, for example programs, documentation, graphics, papers, form letters, etc. The basic user interface is extremely simple. The novice only needs to learn two commands: ci(L) and co(L). Ci, short for "check in", deposits the contents of a text file into an archival file called an RCS file. An RCS file contains all revisions of a particular text file. Co, short for "check out", retrieves revisions from an RCS file." IV. RCS Features a. Macro substitution - documented in co.doc - When one of these tokens is included in the source code, RCS will, on checkout, insert the current value of the token into the checked out source file. For example: $Author$ will become $Author RICH $ $Revision would become $Revision 1.4 $ where 1.4 was the version checked out. List of all the Macro Tokens: $Author$ lists author in the source $Date$ lists date $Header$ lists version no, author. path name, etc. $Id$ same as header but the name has no path $Locker$ shows who has the version checked out $Log$ lists all the log messages $RCSFile$ name without path $Revision$ lists version no. $Source$ lists path name $State$ lists stat of the version. This can be any string such as Production, Experimental, etc. b. file name parameter RCS on unix allows you to represent the file to be accessed by several different methods. In the VMS port, I only allow the file name parameter to be the name of the file in the current directory. This simplified the port and could be changed. c. ACL's It is probably possible to provide absolute security to the working directory that stores all the RCS working files. That is, everyone in the project group can read and write to the files, but only the owner of the directory can delete any files. Typically, an obsolete file only has its suffix changed from "_V" to "_XX" until the next quarterly archival backup. This insures that no software is ever lost without the owner/administrator's knowledge. This feature is still in the testing phase.