Pijul, an open source distributed version control system that relies on a “theory of patches” to simplify workflows, is now available as a beta release.
Described as the first distributed version control system based on a sound mathematical theory of changes, Pijul has features that make it simpler to work with than Git and also enable it to scale to large repositories and fast-paced workflows, according to the project’s documentation.
Unveiled January 18, the Pijul beta follows the alpha release by a bit more than a year. Pijul itself has been in development for several years. Download instructions can be found at pijul.org.
Like Git, Pijul is intended to track changes in files, can revert them, and can merge files with co-authors’ changes. But Pijul differs from Git and other version control systems because it deals with changes, or patches, while Git deals with snapshots or versions, according to Pijul official documentation.
In Pijul, independent changes can be applied in any order, without changing the result, project leader Pierre-Étienne Meunier said. Multiple features can be developed in one branch, with developers able to push just some of them to production, depending on business methodology and constraints. Also, the Pijul data structure models conflicts to make conflict resolution intuitive.
Meunier said more testing, debugging, and performance-tuning will be done prior to a stable Pijul 1.0 release. Key changes since the alpha release include:
- A redesign of the Sanakirja back end to make it faster and more modular.
- Patches now operate on more general types of files, including files encoded in different encodings within a single repo and binary files.
- Malleable identifiers make signed patches the default.
- Merging unrelated repos and partial clones are designed to make large projects more manageable.
While Git has established the greatest mindshare and market share among version control systems, Meunier said Git, while a great tool, has limitations such as bad merges and tricky conflicts. But Pijul has its shortcomings, too, Meunier added. Internal data structures are not as simple, thus making debugging harder. And while patches make everything easier for users, navigating history is a bit more complex.