• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 317
  • Last Modified:

Version Control

Hi Experts,

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

Typingly Challenged,
1 Solution
SCCS on all UNIXs (currently ported to Linux).
ClearCase  (http://www.clearcase.com)
SoftchoiceAuthor Commented:
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!
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.
Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

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.
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 :-((

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.
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?
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.

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 ...
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.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now