Linux.conf.au 2003 | Abstracts

Katie, open-source revision control system

Geoffrey D. Bennett

BiographyBioPaperPaper AudioAudio

Katie is an open-source revision control system, intended to be a look-alike of the proprietary ClearCase Software Configuration Management system. The primary difference between Katie and other open-source revision control systems is that rather than copying files from a repository to a local working directory, the Katie server exports the repository as an NFS filesystem. When compared with CVS, this allows for a number of novel features:

  • Any number of workspaces may be created, with no disk space penalty, as the repository contents are logically (not physically) duplicated in each workspace.
  • The time taken for the equivalents of "cvs checkout module" and "cvs update -r tag" is independent of the size of the repository, again because file data does not need to be copied to the workspace.
  • The renaming or deleting of files is handled in a clean manner by supporting versioning of directories. In addition, directories may be tagged or branched just like any regular file.
  • Every revision of every file ever created (including deleted files) is available to standard Unix commands through the filesystem in a hidden "extended namespace"; this for example means that no equivalent to the "cvs diff" command is required.
  • The branches and versions of files and directories which a developer sees in their workspace is determined by a small text file known as a configuration specification. After editing this file, the newly-selected versions are immediately visible in the workspace.

Both the Katie client and server are written almost entirely in Perl. As there is no Perl SunRPC implementation, Inline.pm is used to link in C code that is necessary for an NFS server. PostgreSQL is used to store repository metadata, and the actual repository data is handled through a replaceable storage manager.

Outline:

  • Introduction
    • What Katie is
    • Background, influences, and history
  • Concepts
    • VOBs
    • Elements
    • Views
    • Configuration specifications
  • Features and Demonstration
    • Mounting and using a view
    • Checking directories in and out, creating and removing files
    • Filesystem access to different versions of files and directories through the extended namespace
    • Tags and branches in the extended namespace
    • Configuration specifications
  • Discussion of technologies used:
    • NFS and SunRPC
    • PostgreSQL
    • Perl and Inline.pm
  • Future work:
    • Replication and distribution
    • katiemake - Automatic generation of dependency information - Sharing of "derived objects" between views
    • Triggers written in Perl

The original Tux penguin is copyright by Larry Ewing.
Linux is a trademark of Linus Torvalds.
© 2002 Linux Australia.