Version Control

Posted on 1998-06-04
Last Modified: 2013-12-06
Hi Experts,

Any suggestions on good unix version control utilities (besides RCS). Are there any for X Windows?

Typingly Challenged,
Question by:Softchoice
LVL 51

Expert Comment

ID: 2007346
SCCS on all UNIXs (currently ported to Linux).
ClearCase  (

Author Comment

ID: 2007347
Thanks ahoffman! I'll look into these. Why are they good? Which one is best?

PS: I'd like to grade your answer but then it won't be open to other experts. We should be able to do both!
LVL 51

Expert Comment

ID: 2007348
SCCS is part of most (all?) UNIXs, but it's not freeware like RCS.

CVS is an extension to RCS. It adds something like "grouping of files to projects" to RCS. And, I'm not shure now, also has an GUI. It's free too.

ClearCase is a proprietary comercial product.

The advantage of SCCS, RCS, etc. is, that they use simple ASCII files (just some control codes), while ClearCase has its own file format.
There exist convertion scripts SCCS <-> RCS, and ClearCase can import RCS (not shure about SCCS).

Could not say what's best, this depends on what are you expecting to do: just putting files under version control, or managing "projects". I prefer SCCS, cause its fast and with a few simple scripts can be improved to do (nearly) everything you want. It is even available under Linux.

There is also a tool called PVCS (commercial, I think).

Let's see what other experts will say.
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.


Expert Comment

ID: 2007349
I think that a key point is that RCS and SCCS do not handle binary files. I too am looking for a source/binary control system for either Unix (AIX) or NT.
LVL 51

Expert Comment

ID: 2007350
airborne, Sun's SCCS can handle binary files (see -b option on various SCCS commands). Unfortunately this was not ported to most other platforms (IRIX, HP-UX, AIX, ..).
Anyway, most implementations lack this feature :-((


Accepted Solution

braveheart earned 50 total points
ID: 2007351
The crucial difference between SCCS and RCS is performance. Which is best depends on how you use the product. RCS stores the most recent version and changes backward from that version to previous versions. SCCS stores the first version and changes forward to later versions. This means that RCS usually wins out, unless you have other versions branching off from the main trunk which you use frequently.

I regularly survey the market for source (and binary) version control systems but those which have anything like the flexibility of what I want cost megabucks. Everywhere that I have worked has ended up writing their own system based on RCS.

The only third party software that was flexible enough for my purposes was something call ADC (Aide-de-Camp).

Concerning binaries, there is little advantage in storing EXEs and OBJs in any version control system which makes use of differences - there is no space saving so you might as well rely on the ordinary file management system. You can always regenerate them so long as you keep the same version of the OS and compilers. I can see that you might want to save a bitmap or a sound file so long as you don't change the data that often.
LVL 51

Expert Comment

ID: 2007352
braveheart, I was shure that someone would add this performance advantage about RCS (did you take it from the RCS description?).
It will be true with the restrictions you desribed, but if you are frequently using several SIDs (not the most recent one), it is much slower than SCCS :-(
It's a few years ago when I did large tests about these things. They ended up in prefering SCCS because of the performance which was 2 to 5 times faster on files with a lot of deltas (for example the commands, diffs, sccsdiff), even I didn't check with branches (which would probably make it more slower).

Did somebody know if this performance bottleneck in RCS has been fixed meanwhile?

Expert Comment

ID: 2007353
What ahoffman says is true. If you are regularly accessing non-trunk branches then SCCS is best. If you mainly use the trunk, use RCS. Typically we keep the most frequently accessed versions and the most recent three or four in read-only directories so that performance only becomes an issue when creating a new alternative of a non-trunk branch, or if we need to access some version which has to be retrieved from RCS directly, just as with any other caching mechanism.

I have just noticed the part of the question concerning X - well we don't have an X interface, per se, but we do have a CGI interface to our version control system so most of the manipulation is done using a net browser.

LVL 51

Expert Comment

ID: 2007354
concerning X (don't know why programmers need such things ?-) ...
I've seen a CGI interface to SCCS/RCS on a server in australia to manage a project via internet, nice idea :-)
breaveheart, is you CGI working well, I'm interested too.

BTW, I've written a GUI in tcl/tk to be used as frontend to SCCS.
It's a very rudimentary one, but knows about most options for all commands. I'll continue to develop, if there is an interest ...
I think it's also not much to do to have it working as a web-plugin.
I'll continue to develop, if there is an interest ...

Expert Comment

ID: 2007355
The CGI interface works well, guiding users to make appropriate comments in the forms. It also incorporates a system of getting Change and Freeze approval from designated Design Authorities before and after making changes. We are planning to incorporate a tick list of things to be checked before a module is frozen, more as an aide-memoire than as a rigid straitjacket.

Note that the CGI interface is well-distanced from RCS/SCCS because there is a thick layer of sandwich filling of our own in-house version control system sitting on top of RCS. Apart from using RCS just to control different versions of modules, some of the modules are used to manage the configuration, i.e. which module versions go with which versions of other modules. Such configuration modules consist almost entirely of dependency files.

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Installing FreeBSD… FreeBSD is a darling of an operating system. The stability and usability make it a clear choice for servers and desktops (for the cunning). Savvy?  The Ports collection makes available every popular FOSS application and packag…
Why Shell Scripting? Shell scripting is a powerful method of accessing UNIX systems and it is very flexible. Shell scripts are required when we want to execute a sequence of commands in Unix flavored operating systems. “Shell” is the command line i…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question