Pijul
Pijul

Pijul, a free and open source (GPL2) distributed version control system by Pierre-Étienne Meunier and Florent Becker

Pijul is a distributed version control system (DVCS).

Here is a summary of its main features and functionalities:

Core Identity and Philosophy

  • Version Control System (DVCS): Pijul is a free and open source (GPL2) distributed version control system.

  • Patch Theory Basis: Its distinctive feature is that it is based on a theory of patches.

  • Speed and Scalability: It is designed to be fast and scalable.

  • Bootstrapped: Pijul is bootstrapped, meaning it is used for its own development.

Unique Approach to Changes and History

  • Commutation (Order Independence): This is a key feature where independent changes can be applied in any order without changing the result or the version's identifier.

    • This property makes Pijul significantly simpler than workflows that rely on complex commands like git rebase or hg transplant.

    • Keeping your history clean is the default.

  • Channels (Feature Branches): Pijul has a branch-like feature called "channels," but these are not as important as branches in other systems. Often, so-called feature branches are simply treated as changes in Pijul.

Merging and Conflict Handling

  • Guaranteed Merge Correctness: Pijul guarantees strong properties on merges.

    • The most important guarantee is that the order between lines is always preserved. This contrasts with 3-way merge systems, which may shuffle lines around.

  • First-Class Conflicts: Conflicts are treated as the standard case, not as a "failure to merge".

    • When the line order is unknown (due to concurrent edits), it is defined as a conflict.

    • A conflict happens between two changes and is solved by one change.

    • The resolution change solves the conflict between the same two changes, regardless of concurrent changes.

    • Once a conflict is solved, it never comes back.

Usability and Scalability Features

  • Partial Clones: The commutation property makes it possible to clone only a small subset of a repository.

    • This works because one only needs to apply the changes related to that specific subset.

    • Changes produced while working on a partial clone can be readily sent to the large repository.

  • Ease of Use: Pijul is designed to be easy to learn and use, without compromising on power or features.