cfvers homepage

Note: this project is obsolete

With the advent of "smart" version control systems, such as git, mercurial and others, this project is obsolete. Please don't use it, the information below is just for record. Thanks!

Latest version is 0.5.4, released on 2005-10-30. See NEWS and ChangeLog.

Welcome. Here you'll find informations about cfvers - configuration versioning system. The project area is hosted at savannah.

cfvers is a versioning system for configuration files. It is similar to cvs and subversion, but different in its orientation toward system configuration files (think /etc), dealing with all file types and attributes.

It is licensed under the GNU GPL, version 2 or newer.


Current working backends are sqlite and postgresql.

Warning: cfvers is in alpha state; don't trust your data to it (yet!). Also the interfaces, repositories, etc. can and will change before beta.


cfvers is written in python, and requires python 2.3 or newer.

You can get the source from savannah project files.

You need pyro (Python Remote Objects), mxDateTime and for the database backend one of pysqlite (2.0 or greater) or psycopg2. Of course, if using postgres you need a working postgres installation.

For more details, see the INSTALL file in the source distribution or here.

Quick start

After installing the required libraries, follow these steps for a simple sqlite backend:

  1. create the database:
    cfvadmin --local --rtype sqlite --rdata /tmp/db init
  2. register the /etc tree:
    cfv --local --rtype sqlite --rdata /tmp/db add -m 'Registered /etc' /etc
  3. store the /etc tree:
    cfv --local --rtype sqlite --rdata /tmp/db store -m 'Stored files'

After this, just do "cfv store" periodically or after each change in the configuration files. When in need, do "cfv restore /etc/passwd /etc/shadow /etc/group /etc/gshadow" :-)


A copy of the current user's manual is located here: manual.html

HTML versions of the man pages are here:

Iustin Pop

Last modified: Tue Mar 10 19:04:59 CET 2009