[comp.unix.questions] rcs vs. sccs

holtz@csmil.umich.edu (03/16/90)

What are the differences between RCS and SCCS?

runyan@hpcuhc.HP.COM (Mark Runyan) (03/17/90)

>/ hpcuhc:comp.unix.questions / holtz@csmil.umich.edu / 12:41 pm  Mar 15, 1990 /
>
>What are the differences between RCS and SCCS?
>----------

A simple questions that has a complicated and long answer.

Possible short answers.

1. SCCS is supported by AT&T.  RCS isn't.

2. RCS allows you treat a set of files as a family of files while SCCS is
   meant primarily for keeping the revision history of files.  RCS has
   the ability to use symbolic names to point to sets of revisions.

3. [religious argument] RCS has an easier interface for first time users.
   SCCS has more options for determining when a specific line of code
   was added to a system.

4. RCS files are directly editable.  SCCS files should only be acted on 
   by the SCCS tools.

5. RCS keeps history in files with a ",v" suffix.  SCCS keeps history in
   files with a "s." prefix.

6. Locks are kept in separate files for SCCS.  A lock on an RCS file is 
   kept in the RCS file.

7. RCS stores its revisions so retrieval of the latest revision is quick
   and easy, but early revisions take longer.  SCCS stores revisions so
   that recovering any given revision takes a constant amount of time which
   increases with the number of revisions stored.

8. You can translate SCCS to RCS, but not the other way.

9. They use different keywords that are expanded in the text.  For SCCS
   the keyword "%R%" is replaced with the revision number if the file
   is checked out for reading.  In RCS, the keyword $Revision$ has the
   revision number added to it when the file is checked out (either
   locked or not).

Other than that (and a few more others may throw in) they are essentially
the same.  As a comparison of the commands:

   SCCS Command                RCS Command             Explanation
 admin -i -nfile s.file          ci file,v     Checks in the file for the
						first time, creating the
						revision history file.
 get s.file                      co file,v     Check out a file for reading.
 get -e s.file                  co -l file,v   Check out a file for modification
 delta s.file                   ci file,v      Check in a file previously
						locked
 prs s.file                     rlog file,v    Print a history of the file.
sccsdiff -rx -ry s.file  rcsdiff -rx -ry file,v  Compare two revisions.
    ???                        rcs -l file,v   Lock the latest revision
    ???                        rcs -u file,v   Unlock the latest revision.
						Possible to break another's 
						lock, but mail is sent to
						the other person to explain
						why.

For more details, read

"RCS - A system for Version Control", Walter Tichy, _Software_Practice_and_
  Experience_, Vol 15(7), 637-654 (July 1985)

"Design, Implementation, and Evaluation of a Revision Control System", Walter 
  Tichy, _IEEE_, 58-67, (??? 1982)

fischer@utower.gopas.sub.org (Axel Fischer) (03/19/90)

Another difference is that RCS has a good (and easy to use) interface
for GNU emacs.
There is also a SCCS interface for GNU emacs, but I have lots of trouble
using it.
(Pointed out only as a sidenote)

-Axel
-- 
  fischer@utower.gopas.sub.org / fischer@db0tui6.BITNET / fischer@tmpmbx.UUCP

segel@tellab5.tellabs.com (Mike Segel) (03/20/90)

In article <1990Mar15.204111.4923@csmil.umich.edu> holtz@csmil.umich.edu () writes:
>
>What are the differences between RCS and SCCS?

segel@tellab5.tellabs.com (Mike Segel) (03/20/90)

In article <1990Mar15.204111.4923@csmil.umich.edu> holtz@csmil.umich.edu () writes:
>
>What are the differences between RCS and SCCS?

Sorry about that, my News hiccuped ....

The difference is two fold.

1) RCS uses backwards Deltas. This means that the latest
   version contains the actual code and the earlier versions
   are actually the delta, or changes made over the course of 
   development.

   SCCS uses forward deltas. This means that when you "check in"
   a piece of code, the original is stored, and the later copies
   are really deltas based on the original.

   Backward deltas actually make the retrieval of a stored file
   faster. (Especially as time goes on and many revisions are made)

2) SCCS comes standard with BSD and SYS V Unix. RCS is 
   public domain and has to be installed by an individual.


I personally feel that RCS is easier and better, but some
people object to the fact that since it is not std, don't 
use it. Which ever you choose, use it. It can save a lot of 
headaches.

-Mike Segel
Consultant, BALR
Oakbrook, Illinois

segel@balr.com
segel@tellabs.com
segel@quanta.eng.ohio-state.edu

rfinch@caldwr.UUCP (Ralph Finch) (03/21/90)

In article <U1=*UZH@utower.gopas.sub.org>, fischer@utower.gopas.sub.org (Axel Fischer) writes:
> Another difference is that RCS has a good (and easy to use) interface
> for GNU emacs.

There are a number of GNU elisp interfaces for RCS...the best I think
is from snow.white.toronto.edu, pub/emacs/rcs-cks.el.  Last update
apparently March 1.

I've modified it quite extensively to do tag file checkin-checkouts,
checkin of all checked-out files in a directory, and automatic
creation of branches for naive users who don't want to learn rcs
commands.  I would consider it not quite beta ready, but if anybody
wants it send mail.  Since I modified a version prior to March 1, I'll
have to merge my changes in with the new ones.  Sigh.  Anyway an
interface does make things easier for users.
-- 
Ralph Finch              The opinions expressed herein are mine...
rfinch@water.ca.gov  ...ucbvax!ucdavis!caldwr!rfinch  916-445-0088

scjones@sdrc.UUCP (Larry Jones) (03/21/90)

In article <2265@tellab5.tellabs.com>, segel@tellab5.tellabs.com (Mike Segel) writes:
> 1) RCS uses backwards Deltas. This means that the latest
>    version contains the actual code and the earlier versions
>    are actually the delta, or changes made over the course of 
>    development.

This is mostly correct -- thus, the older the version of the file
you want, the longer it takes to get it.  It's not completely
correct because RCS uses forward deltas to handle branches.  So,
if you want a branch version, you do backward deltas to the
common ancestor, then forward deltas along the branch to the
version you want.  Thus, variant versions take even longer to
get.

>    SCCS uses forward deltas. This means that when you "check in"
>    a piece of code, the original is stored, and the later copies
>    are really deltas based on the original.

Not strictly true -- SCCS uses merged deltas.  That is, all of
the different versions are merged into a single file so that any
version can be retrieved in one pass over the file.

Bottom line is RCS can get the most recent version(s) quicker
than SCCS, SCCS can get older version much quicker than RCS.
Which is better depends, of course, on how often you do which.  I
would expect the file sizes to be similar, but I've never really
done any actual comparisons.
----
Larry Jones                         UUCP: uunet!sdrc!scjones
SDRC                                      scjones@SDRC.UU.NET
2000 Eastman Dr.                    BIX:  ltl
Milford, OH  45150-2789             AT&T: (513) 576-2070
"You know how Einstein got bad grades as a kid?  Well MINE are even WORSE!"
-Calvin

guy@auspex.auspex.com (Guy Harris) (03/21/90)

>   SCCS uses forward deltas. This means that when you "check in"
>   a piece of code, the original is stored, and the later copies
>   are really deltas based on the original.

This is not correct.  SCCS does not use forward deltas.  As Mark Runyan
stated in his posting:

  7. RCS stores its revisions so retrieval of the latest revision is quick
     and easy, but early revisions take longer.  SCCS stores revisions so
     that recovering any given revision takes a constant amount of time which
     increases with the number of revisions stored.

>2) SCCS comes standard with BSD and SYS V Unix.

This is also not correct.  SCCS does not come standard with BSD.  The
"sccs" *front end* to SCCS does, but the SCCS code doesn't.

gwyn@smoke.BRL.MIL (Doug Gwyn) (03/22/90)

In article <2265@tellab5.tellabs.com> segel@tellab5.UUCP (Mike Segel) writes:
>   SCCS uses forward deltas. This means that when you "check in"
>   a piece of code, the original is stored, and the later copies
>   are really deltas based on the original.

This is another "urban myth".  In fact SCCS does stores deltas in such
a fashion that any revision can be extracted from the archive in a
single sequential pass.

paj@hic.uucp (Paul Johnson) (10/02/90)

I am setting up a common directory for a group project.  We want some
kind of source code control a la SCCS and RCS.

We already have SCCS (via SunOS 4) and can get RCS if there is
sufficient reason (via FTP).  Is RCS better than SunOS?  Is it worth
the work of setting it up and learning a new system?

Mail me and I will summarise.  Thanks in advance.

Paul.

Paul Johnson                               UUCP: <world>!mcvax!ukc!gec-mrc!paj
--------------------------------!-------------------------|-------------------
GEC-Marconi Research is not 	| Telex: 995016 GECRES G  | Tel: +44 245 73331
responsible for my opinions.	| Inet: paj@uk.co.gec-mrc | Fax: +44 245 75244

gwyn@smoke.BRL.MIL (Doug Gwyn) (10/04/90)

In article <648@hic.mrcu> paj@uk.co.gec-mrc (Paul Johnson) writes:
>Is RCS better than SunOS?

Hmm, interesting question...

gene@bellahs.UUCP (Gene Rondenet) (05/22/91)

We are currently evaluating a configuration management system and are trying to
decide between sccs and rcs.  What are the advantages or disadvantages of each
of these?  Is rcs easily obtainable/available on a wide range of
systems?  Is either one more flexible or configurable?  Please email responses
to me and I will try to post a summary of responses if any other people are 
interested.

Gene Rondenet



= Gene Rondenet      		     UUCP:     ...!uunet!bellahs!gene          =
= Bell Atlantic Healthcare Systems   UUCP:     ...!pacbell!bellahs!gene        =
= Greenbrae, California              PHONE:    (415) 925-0121                  =
= ***** All opinions expressed are my own and not those of Bell Atlantic ***** =