[comp.unix.questions] SCCS: how to handle multiple developers/streams

tpc@bnr-fos.UUCP (Tom Chmara) (11/25/88)

We're looking into using SCCS for program development in selected
areas (until our internal control system can be enhanced to understand
UNIXese).  I've identified a number of problems.  I'm not sure whether
they're problems in understanding or in SCCS:  hope you can help.
Please mail responses; I'll summarize in a couple of weeks' time (unless
my wife delivers early, in which case it may take longer...)

1.  Scenario:  Building a new load.  Problem:  devoted developer has a
    module checked out for editing.  I don't WANT the new version; I want the
    old one.  "-c" gets the old version, "-G" specifies a new path into
    which I dump the file.  Ergo, I need a new copy of my source
    directory structure?  Or does every file need an "alias" for loadbuilding?
2.  Scenario:  Doing maintenance.  A bug has been reported in existing
    (read:  non-current) software.  Do I have to rebuild (recompile) the
    world to be able to restore that environment?  Do I have to maintain
    a copy of the directory hierarchy for every released version?
2.  Scenario:  Doing development.  Do I need to do development in the
    current directory (i.e. parent to SCCS directory) and aggravate the
    loadbuilders (see #1)?  What happens if two of us are doing development
    in the same directory?  I'd like to use the old (read:  loadbuilt)
    objects to avoid having to recompile the world; so would s/he.
    We're constantly going to see each other's sources.  This looks like
    a problem for the Makefiles...  Unless I actively sccs info each
    subdirectory, I don't know who else is doing development -- and that
    information itself is volatile...

I DO know that both SUN & HP use SCCS at some stage of their development
efforts, so presumably maintenance of old software streams is a subject
near (though maybe not dear) to their respective hearts.  Others are also
likely to be equally knowledgeable.  I'm slowly going nuts trying to envision
parallel "shadow" directories, (and subdirectories, and...).  Is there
an easy way out?  Is there a sane way out?  What are my alternatives?
	Yes, I'm DAMNED uncomfortable & nervous right about now...
		Thanks for your time...
			---tpc---
-- 
I am sole owner of the above opinions. Licensing inquiries welcome.
------------------------------------------------------------------------
Tom Chmara			UUCP:  ..utgpu!bnr-vpa!bnr-fos!tpc
BNR Ltd.  			BITNET: TPC@BNR.CA

runyan@hpirs.HP.COM (Mark Runyan) (11/30/88)

>/ tpc@bnr-fos.UUCP (Tom Chmara) / 10:17 am  Nov 24, 1988 /

I'm not an expert in SCCS, so I may not be of any help, but you have
found a problem that everyone using SCCS will encounter eventually...

>1.  Scenario:  Building a new load.  Problem:  devoted developer has a
>    module checked out for editing.  I don't WANT the new version; I want the
>    old one.  "-c" gets the old version, "-G" specifies a new path into
>    which I dump the file.  Ergo, I need a new copy of my source
>    directory structure?  Or does every file need an "alias" for loadbuilding?

I'm not sure I understand the problem the way it is phrased. (I also don't
appear to have the "-G" option you mentioned).  If your developers are
all working in the same directory, the problems you face are very
significant.  SCCS alone may not be the solution.  Perhaps each developer
needs their own workspace (yes, that uses a lot of disk).  With links,
you could reduce the disk space, but managing the links would be
difficult.

>2.  Scenario:  Doing maintenance.  A bug has been reported in existing
>    (read:  non-current) software.  Do I have to rebuild (recompile) the
>    world to be able to restore that environment?  Do I have to maintain
>    a copy of the directory hierarchy for every released version?

Again, separate work spaces are the only answer I see for this.  Once
you have found the fix, checking the fix in on a branch would be a way
to store it.  The environment is a *major* problem.  While SCCS stores
the source for a file, it doesn't keep the environment (i.e.  compilers,
header files, etc) needed to rebuild the exact bits.  I strongly suggest
that a database (which could be something as simple as a flat file and
some awk scripts) be considered for keeping track of which revisions of
which files and programs create a particular environment.  Storing the
old compilers, loaders, etc.  into special directories might be
required.

>2.  Scenario:  Doing development.  Do I need to do development in the
>    current directory (i.e. parent to SCCS directory) and aggravate the
>    loadbuilders (see #1)?  What happens if two of us are doing development
>    in the same directory?  I'd like to use the old (read:  loadbuilt)
>    objects to avoid having to recompile the world; so would s/he.
>    We're constantly going to see each other's sources.  This looks like
>    a problem for the Makefiles...  Unless I actively sccs info each
>    subdirectory, I don't know who else is doing development -- and that
>    information itself is volatile...

If the SCCS directory in *your* working directory is simply a link (symbolic
or otherwise) to the "real" SCCS directory, each work space will use the
same SCCS files but be separate.  This uses a *lot* of disk space when
someone checks everything out.  One solution to this is to have a program
which manages links (i.e. everything is checked out into some location
and linked.  When you want your own copy, break the link.  Need a way to
keep track of which are broken links and which aren't).

>I DO know that both SUN & HP use SCCS at some stage of their development
>efforts, so presumably maintenance of old software streams is a subject
>near (though maybe not dear) to their respective hearts.  Others are also
>likely to be equally knowledgeable.  I'm slowly going nuts trying to envision
>parallel "shadow" directories, (and subdirectories, and...).  Is there
>an easy way out?  Is there a sane way out?  What are my alternatives?

Well... <cough, cough>  I don't think that either SUN or HP uses *just*
SCCS.  (I don't think HP uses SCCS too much, but I could be wrong :-)
SCCS only provides management of the revisions of a file.  Frontends and
support programs must exist to handle work spaces and networking.  Knowing
this will start a "Holy War", I'll mention that RCS allows a person to
manage a group of files, but again, RCS only manages revisions.  The
work space and networking ( and environment ) problems are not solved
by either RCS or SCCS.

If a solution exists, I would really like to hear about it...  I believe
that solutions may arise soon as software configuration becomes more
important, but I'm not aware of any solution available to the customer
at the moment.

Mark Runyan