Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Veracity, a New DVCS Based on a Distributed Database

Veracity, a New DVCS Based on a Distributed Database

This item in japanese

Veracity is a DVCS that can be installed on Windows, Mac, and Linux, and uses a distributed database for its repository.

Veracity is a relatively new Distributed Version Control System (DVCS) that has been in tests for more than a year, and now version 0.9.1 made its debut as “ready to use.” Veracity is similar to Git or Mercurial in many ways, but there are some differences. We talked to Eric Sink, the founder of SourceGear, the company behind Veracity, and he said that their DVCS supports a decentralized database:

A unique feature of Veracity is its "decentralized database". Most version control tools are designed to manage data which is file system-oriented, directories and files. Veracity can do this as well, but it also has the ability to manage data which is database-oriented, records and fields.

Just as it does with file system data, Veracity's decentralized database keeps the full history of the database. Every version of every record is retained in history, with log information about who made the change and when. Veracity also supports push and pull of "database changesets", including the ability to automatically merge (at the level of a record or of a field) and resolve constraint violations.

This capability is what allows this database to be "decentralized".

Users can choose various databases for their Veracity repository, as Sink explains:

Veracity communicates with repository instances through an API which hides all the details of how things are stored. The intent here is that Veracity users can choose how their repository is stored. The current version of Veracity supports only one of these "repository storage plugins", called FS3. This implementation stores blob data in files (up to 1 GB of blobs in each data file) and uses a SQLite database to keep track of where everything is.

We have prototypes of storage layers which keep everything in an enterprise SQL database. These kinds of things will be available from SourceGear in the future. Some of them may be proprietary rather than open source.

Veracity supports clone/push/pull between repository instances even if those instances are running different implementations of the storage layer. So for example, it would be possible for a Veracity team to run a central server which keeps a repository instance in an Oracle database (if/when we have an Oracle implementation) while configuring all the developer desktops to use FS3.

Veracity was written in C and JavaScript, and it was built with CMake, and there are binaries for Windows, Mac, and Linux. The code was open sourced under the Apache 2 license. A public repository is available for those interested to see how its client interface looks like.

There is still work to do, such as integrating it with Visual Studio and Eclipse, adding fast import/export, sub-modules, wiki and others, but Sink says Veracity’s code is stable enough that future versions will be compatible with the current repository. Version 1.0 will be released during OSCON 2011 taking place in a week.

As a note, SourceGear created Vault, a Windows-centric version control system designed to replace Microsoft’s SourceSafe.

Rate this Article