#compat #iterator #file #patch


A patch-based distributed version control system, easy to use and fast

6 releases

Uses old Rust 2015

0.10.2 Nov 20, 2018
0.8.7 Feb 2, 2018
0.8.6 Jan 30, 2018

#1463 in Filesystem

24 downloads per month



This crate contains the core API to access Pijul repositories.

The key object is a Repository, on which Txn (immutable transactions) and MutTxn (mutable transactions) can be started, to perform a variety of operations.

Another important object is a Patch, which encodes two different pieces of information:

  • Information about deleted and inserted lines between two versions of a file.

  • Information about file moves, additions and deletions.

The standard layout of a repository is defined in module fs_representation, and mainly consists of a directory called .pijul at the root of the repository, containing:

  • a directory called pristine, containing a Sanakirja database storing most of the repository information.

  • a directory called patches, actually containing the patches, where each patch is a gzipped compression of the bincode encoding of the patch::Patch type.

At the moment, users of this library, such as the Pijul command-line tool, may use other files in the .pijul directory, such as user preferences, or information about remote branches and repositories.


~321K SLoC