Pijul is a new version control system, written in Rust. It aims at combining the performance of git with the ease of use of darcs. In particular, thanks to its patch-based theory, it aims at making merging and cherry-picking more intuitive.
The easiest way to get pijul is to use cargo, the package manager for the Rust language. If you have cargo configured on your system,
cargo install pijul will give you a working, cutting-edge pijul. Pijul needs rust version 1.15.1 (the latest stable version), you may want to use rustup if this is not the version of Rust your system has.
Documentation is not yet pijul’s forte. Here are some of the basic commands, they should be familiar if you have used git or another version control system.
Here is a mini-tutorial. The following commands create a repository with one file in it.
$ mkdir my_project $ cd my_project $ pijul init # creates an empty repository $ echo " [ ] save the world" > todo.md # edit some file $ pijul add todo.md # adds todo.md: tells pijul to start tracking # modifications on that file $ pijul record # equivalent to 'git commit -p' added file /home/florent/code/pijul/pijul/pijul/tuto/todo.md Shall I record this change? [ynkad] y + [ ] save the world Shall I record this change? [ynkad] y What is your name <and email address>? Jean Doe <email@example.com> What is the name of this patch? Lest I forget Recorded patch AeNEKi1-S60Pe_Hy__lbsyyKIrnkFvDBC-AOG4uUf0KxRG6v2pqwv…
Here is how to clone that repository and make a modification; this time, we use record with the
-a flag to save all changes to tracked files instead of asking about each one.
pijul record -m <message> defines the accompanying message instead of opening an editor, and
--author lets us change the identity of the author, just for once.
$ cd .. $ pijul clone my_project clone_of_my_project $ cd clone_of_my_project $ echo " [ ] save the world, starting with the koalas" > todo.md $ pijul record -am "Think of the koalas" --author firstname.lastname@example.org Recorded patch ATqiYHQE528y0irRT4Oh0HEGbsR9e8J-7VMqUljUvsmduIcBU1YGdN_Abg…
Let’s go back to the original repository, and pull these changes:
$ cd ../my_project $ pijul pull ../clone_of_my_project Hash: ATqiYHQE528y0irRT4Oh0HEGbsR9e8J-7VMqUljUvsmduIcBU1YGdN_AbgpWZ7eaj-1q3dOA2OU5YYA1t1DY_T8 Authors: ["email@example.com"] Timestamp 2017-03-16 16:50:49.059851279 UTC * Think of the koalas Shall I pull this patch? [ynkad] y $ cat todo.md [ ] save the world, starting with the koalas
If you want to hack on pijul itself, you’re just one
pijul clone http://nest.pijul.com/pijul/pijul away!
Pijul is very young software: we’ve just started using it for developping our project… pijul itself! As such, it is lacking a lot of functionnalities and documentation! It probably won’t eat all your data too often, but it might.
Pijul is the name of a south-American bird that gather to build communal nests, and take care of the eggs and young in common.
Pijul can be used through the command-line, as shown above, but it also has a web interface for hosting your project: the nest. Like the rest of our software, that nest is still experimental, and intended as a “feature preview”.
In particular, pijul itself is hosted in its own repository on the nest.