7 ポイント 投稿者 xguru 2022-01-21 | 3件のコメント | WhatsAppで共有
  • パッチ理論に基づきつつ、高速でスケーラブル

  • Commutation

→ 各変更はバージョンIDを変えずに、順序に関係なく適用可能

git rebasehg 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件のコメント

 
maxn0d3 2022-12-05

Gitは正直、現場では標準だから使ってはいるけど、かなり不便だった ーー RustベースのPijulに少しずつ乗り換えるべき時だ

 
galadbran 2022-01-21

svn と git の(分散リポジトリである点を除けば)最大の違いは、svn は diff を管理するのに対して git はスナップショットを管理するという点ですが、パッチ理論ということなので、なんとなく diff を管理する側なのではと思いますね。

 
xguru 2022-01-21

パッチ理論(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”.