Pijul, the Git Alternative ???

  • Pijul is a distributed version control system written in Rust and is now available as a beta release .
  • Similar to other version control systems, it is a tool that tracks changes in your files, can revert them, and can merge them with your coauthors’ changes.
  • The architecture and design methodology of Pijul is influenced by the Darcs project which is based on a theory of patches.
  • The main difference between Pijul and Git (and related systems) is that Pijul deals with changes (or patches), whereas Git deals only with snapshots (or versions).
  • In short the main concept for Git and similar tools is commits, which are states of a project at a given point in time and for Pijul it is patches, which changes to the state of a project.
  • One distinctive feature of Pijul (shared with Darcs) is change commutation, whereby changes that could be recorded independently can be applied in any order, without affecting the result.
  • Patch-centric model of Pijul doesn’t require history to be re-written when reordering, cherry-picking, or otherwise reorganizing patches. All patches retain their identities permanently regardless of their context, order, operations performed, or team workflow. This is in contrast to Git in which certain operations such as rebases and cherry-picks can change commit ID’s (and other identifiers), even if the content itself doesn’t change.
  • Furthermore, subsequent cherry-picks from a remote branch in Git can lead to unnatural conflicts due to the rewriting of the initial cherry-picked commit’s ID. Pijul avoids this problem completely as patches always retain their identity, regardless of their location in a branch.
  • One particular goal of Pijul is to model conflicts as normal states of collaboration, so that conflicts are resolved by normal changes, valid even for the same conflicts in any other context.
  • In Pijul, the state of a repository is exactly the (non-ordered) set of patches that were applied to it since its creation. Therefore, from a conceptual point of view, branching just means creating new patches.

Pijul is s promising project that is approaching version control in a different way. It is a nice project to keep an eye on.

Thank you !

Leave a Reply