Table of Contents
Version control is the art of managing changes to information. It has long been a critical tool for programmers, who typically spend their time making small changes to software and then undoing those changes the next day. But the usefulness of version control software extends far beyond the bounds of the software development world. Anywhere you can find people using computers to manage information that changes often, there is room for version control. And that's where SVK comes into play.
This chapter contains a high-level introduction to SVK—what it is; what it does; how to get it.
SVK is a free/open-source version control system. That is, SVK manages files and directories over time. A tree of files is placed into a depot on the user's machine. The depot remembers every change ever made to your files and directories, and also to other files and directories that you mirror from other places. This allows you to recover older versions of your data, or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of “time machine”.
Also central to many uses of Version Control is the concept of a repository. A repository is like a filesystem that can either be hosted on a remote server or locally on the same machine as the user's depot. While SVK doesn't currently provide a repository server, it has been designed to be able to work with repositories created by other Version Control systems; in particular Subversion repositories.
SVK can access repositories across networks, which allows them to be used by people on different computers. This is convenient to those who like a centralized repository model, and SVK supports this fully. Others prefer to use other more detached or distributed models, and again SVK is at home in these environments too. Whichever model is used, because the work is versioned, can always track back through the changes that have been made, and undo them if required.
Some version control systems are also software configuration management (SCM) systems. These systems are specifically tailored to manage trees of source code, and have many features that are specific to software development—such as natively understanding programming languages, or supplying tools for building software. SVK, however, is not one of these systems. It is a general system that can be used to manage any collection of files. For you, those files might be source code—for others, anything from grocery shopping lists to digital video mix-downs and beyond.