オープンソース分散バージョン管理システム Pijul 1.0 ベータ公開
(pijul.org)-
パッチ理論に基づきつつ、高速でスケーラブル
-
Commutation
→ 各変更はバージョンIDを変えずに、順序に関係なく適用可能
→ git rebase や hg transplant よりもはるかにシンプルなワークフロー
→ branch に似た channels 機能があるが、他のシステムのように重要ではない。たとえば feature ブランチは、Pijul では単なる変更にすぎない
→ 履歴をきれいに保つことがデフォルト設定
- Merge correctness
→ Pijul はマージ時にいくつかの性質を保証
→ 最も重要なのは、行の順序が常に保持されること。ときどき行が入り混じる 3-way マージとは異なる
→ 順序を判定できない場合(同時編集のようなケース)は Conflict となり、"Automatic" または "No Conflict" になるシステムとの違い
- First-class conflicts
→ Pijul では Conflict は「マージ失敗」ではなく、標準的なケースとしてモデル化されている
→ 特に、2つの変更間で発生する Conflict は、1つの変更として解決される
- Partial Clones
→ Commutation を使うと、リポジトリの小さな部分集合だけを複製可能。実際にその部分集合に対する変更だけを適用することも可能
→ Partial Clone に対する作業では、大規模リポジトリにも容易に送れる Changes を生成する
3件のコメント
Gitは正直、現場では標準だから使ってはいるけど、かなり不便だった ーー RustベースのPijulに少しずつ乗り換えるべき時だ
svn と git の(分散リポジトリである点を除けば)最大の違いは、svn は diff を管理するのに対して git はスナップショットを管理するという点ですが、パッチ理論ということなので、なんとなく diff を管理する側なのではと思いますね。
パッチ理論(Theory of Patches)は、分散バージョン管理システムである Darcs を見れば分かります。
Darcs と Git を比較するときは、このように説明されます。
A set of changes that you record in Git is called a “commit”, while in Darcs it is called a “patch”.