Source control

KCML has specific support for the RCS and CVS source control systems which can be used to track changes in KCML programs. RCS is a basic file oriented stsyem for tracking changes using reverse deltas. It is available from GNU and commercially a number of suppliers such as MKS. CVS is a superset of RCS that allows large projects with multiple developers to be managed and is the recommended source control system for use with KCML. For more about CVS and how to obtain it see the CVS FAQ. There are implementations for Unix and Windows (client and server).

Programs cannot be on platters - they must be discrete files kept in their source form at least during development. Before release the directories can be compiled using $COMPILE.

Source control systems store the master copies of programs in a repository, usually on a server and developers check out a copy of the system with all its programs onto their own machines or their own directory on the server. They can modify the programs, test them and then commit their changes back to the repository. CVS will allocate and track the versions and is capable of reconstructing the system for any given date or build tag.

A unique and powerful feature of CVS is that it allows several developers to work on the same sources at the same time and it delays conflict resolution until checkin. If modifications do not conflict then it can merge both sets of changes together but if the same statements are changed then it marks the program lines in question with chevrons showing the repository version and the developers version and asks the developer to resolve the conflict before allowing the commit e.g.

<<<<<<
IF (a == b) THEN c = x+y
======
IF (a == b) THEN c = y+x
>>>>>>

KCML will parse the chevrons allowing a program with a conflict to be loaded into the Workbench but they are considered to be resolve time errors so the program cannot be executed until the conflict is resolved. The F7 shortcut key can be used to find the first line in conflict and the the CTRL-W CVS match key can toggle between the alternatives. The SHIFT-CTRL-W key will select the alternative containing the cursor and the CTRL-Q shortcut will delete the selected text and the matching chevrons.

The $Id keyword can be used to tag a program with its CVS version number and date last edited. This tag is expanded whenever a program is checked out of the respository.