Paul Krill
Editor at Large

Pijul strives to be a simpler, safer Git

news
Jan 18, 20172 mins

The challenger to Git and Subversion emphasizes patches over commits and snapshots for distributed version control

transformation / conversion / data cubes shift from one color to another
Credit: Guirong Hao / Valery Brozhinsky / Getty Images

Pijul, a distributed version control system emphasizing patches rather than commits, could emerge as a potential challenger to Git and Subversion.

Snapshot-based systems like Git or Mercurial are typically fast, but they’re hard to use for more than simple operations. On the other hand, patch-based systems like Darcs are simple to use, but slow.

Pijul represents data in a more general manner than snapshot-based systems, allowing for a patch-based interface. “In short: [Git and Subversion’s] main concept is commits, which are states of a project at a given point in time,” Pijul co-developer Pierre-Etienne Meunier said. “Ours is patches, which changes to the state of a project.”

Because it uses the memory-safe Rust systems programming language, Pijul also offers safety. Git doesn’t offer mathematical guarantees on its operations, Meunier noted, and as a result, a commit could be different from what was expected.

“Take ‘cherry-picking’, for instance, the operation of selecting changes in another branch and applying them to your branch,” said Meunier. “When you work with patches, you can just pull a patch from that branch without pulling any other. It doesn’t mean that your code will automatically work, but at least you can do it.”

Pijul also is “truly distributed,” Meunier said. “No matter how co-authors behave, whether or not they plan and synchronize their branches carefully in advance, Pijul … works mostly in the same way in all cases: by exchanging and applying patches.”

While Pijul currently doesn’t support binary files, plans call for it to do so soon. It also is not interoperable with other systems, but would gain this capability from work by the Darcs team. The system uses the concept of implicit branching, in which the state of a repository is the nonordered set of patches that were applied since its creation. Developers of Pijul currently are writing a hosting platform to demonstrate ease of use, especially compared to current tools.

Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author