Subject: RCS in scientific programming

From: "Kynn O. Jones" <[email-masked]>
Date: Mon, 20 Jul 1998 18:01:52 -0400 (EDT)

Dear CCL:

For my research, I typically have several versions of any my code that
I work with concurrently.  (Each version, of course, perforsm a
different task).  The source files for these versions differ from each
other in relatively minor ways, but yet substantially enough that it
would be too confusing to merge them all into a single source and use
preprocessor switches to differentiate among the various versions.

Needless to say, it quickly becomes difficult to keep track of all
these similar source files.  I have heard repeatedly, both from
scientific and "non-scientific" programmers that RCS is *the* tool to
take care of this situation, but hard as I've tried, I've never
managed to get RCS to work for me.  I just made another attempt to
adopt RCS, and it foundered miserably on RCS's inability to deal
gracefully with many *concurrent* versions, which are, generally, not
related "vertically" to each other, but rather "horizontally" (if this
makes any sense).  As far as I can understand, RCS will allow several,
"non-vertically related" versions to be developed concurrently only
through branching, which at every turn adds two version numbers per
branching.  So, for example, if I have 4 slightly different versions
of my code, and I want to continue developing each of them
independently, then RCS forces me to branch thrice, and name the four
versions something like 1.1, 1.1.1.1, 1.1.1.1.1.1, 1.1.1.1.1.1.1.1.
This gets silly very fast.  (Or am I missing something?)

I suppose that RCS was designed with a different user in mind, namely
one who is working on one single project that advances mostly
linearly, with only the occasional branch.  I wonder how those who,
like me, have several versions of their code floating around, all of
which are current and active, manage to make RCS work for them.

Alternatively, is there any other freely available source control
software that would be more amenable to situations like mine?

Lastly, I've considered getting hold of the source code for RCS and
hacking it until I get something useful.  Has anyone in the list
attempted something like this?

Many thanks in advance for your comments,

KJ

---

From: "Peter Shenkin" <[email-masked]>
Date: Mon, 20 Jul 1998 19:17:27 -0400

On Jul 20,  6:01pm, Kynn O. Jones wrote:
> Subject: CCL:RCS in scientific programming
> take care of this situation....

Hi, Kynn,

I use RCS all the time.  I am very familiar with it, and I think
it is fair to say that it is not well-suited for what you
describe.

What most people do to maintain concurrent versions of "slightly
different" codes is to either preprocess, or, if the diffs are too
great for this, isolate the differences into as few routines as
possible and keep them separate.  For example,
architecture-specific code might be kept in sgicode.c, aixcode.c,
and so on.

If the codes really perform different tasks, as you say (rather
than being minor variants that depend on, say, machine
architecture), most people would either keep them completely
separate or else try to combine the parts that are the same
into routines that all the tasks can use and then write separate
procedures for the parts that are task-specific.

	-P.

-- 
************ "Yeah, but poverty can't buy happiness, either." *************
* Peter S. Shenkin; Chemistry, Columbia U.; 3000 Broadway, Mail Code 3153 *
** NY, NY  10027;  [email-masked];  (212)854-5143;  FAX: 678-9039 ***
*MacroModel WWW page: http://www.columbia.edu/cu/chemistry/mmod/mmod.html *