The pijul team is proud and happy to announce the first bootstrapped release of pijul, and of the Nest, a hosting service for pijul repositories.

What is pijul?

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.

Where can I get pijul?

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.

How to use pijul

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 <jean@example.org>
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 koala_lover@example.au
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: ["koala_lover@example.au"]
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_org/pijul away!

The paint isn’t dry yet, is it?

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.

The name

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.

A home for our community

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.