Pijul
パッチベースの分散VCS
圏論と関係がある
Darcsの影響を受けている
Darcsと同じパッチベース
開発者
Pierre-Étienne Meunier、Florent Becker
https://www.ecured.cu/images/thumb/9/9a/AnoPicoSurcado_Guayaqui.jpg/260px-AnoPicoSurcado_Guayaqui.jpg
ミゾハシカッコウですmrsekut.icon
Pijulのコマンド
A Categorical Theory of Patches
Twitter
Pijul Nest
Pijul版のGitHubみたいなやつ
これがPijulのリポジトリ
Rust実装
一応githubにもあるが、更新されていない
docs
PijulのRepository構造
Tree
追跡しているファイル群
Pristine
追跡対象ファイルの、Repositoryに記録されている状態
Patchが記録されれば、Pristineが更新される
Working Copy
現在のファイルの状態そのもの
Patch
PristineとWorking Copyの差分が保存されたもの
捕捉
Gitでいうstaging areaなるものは存在しない
branchのことはchannelと呼ぶ
Darcsの以下のような問題を解決するために生まれた
パフォーマンス問題
プロジェクトが大きくなると重くなる
Gitとコマンドが違う
commitじゃなくてrecordだったり
logじゃなくchangesだったり
branch機能がない
install
Pijul
alphaでもいくつかversionが更新されているっぽい
Twitterで確認すると良いかも
2021/1/14現在の最新はalpha.28
$ cargo install pijul --version 1.0.0-alpha.28でうまくいった
何が言いたいのかと言うとDocsは頻繁には更新されてないのであてにならないmrsekut.icon
パッチベースのやつ
今から開発始めるぞのタイミングでpijul addをする
pijul recordで変更を記録する
一つづつ答える
「一つづつ」ってなに?行ごと、どのタイミングで聞かれるの?
#??
「パッチベース」が何を意味しているのかがわかっていない
Darcsの方を調べたほうがわかりやすいのが出てくるかもしれないmrsekut.icon
パッチ理論ってなんやねん
ぐぐったらホモトピー型理論と関連のある論文が出てきた ref
Gitと比べて何がいいの?
cherry-pickがしやすい、ってどういう意味?
A. パッチベースなのでrebaseやcherry-pickのような操作で、履歴の書き換えが不要という意味mrsekut.icon
パッチごとに永続的なIDを持っている
Gitのcommit idは後から上書きできてしまうmrsekut.icon
GItと比べて何が微妙なの?
Branchの概念がわかりにくい
なんのでためにBranchがある?
圏論との関連
論文
A Categorical Theory of Patches
https://arxiv.org/abs/1311.3903
Darcsにあった計算量の問題を改善
パッチ圏を構成 ref
ファイルが対象
パッチが射
互いにコンフリクトしないパッチは同時に適用出来てかつ適用の順序に依らないことが押し出しに一致する
さらにこのパッチ圏を拡張(余完備化)することでコンフリクトが起きないように出来る。
https://pijul.org/posts/2020-11-07-towards-1.0/#are-edge-labels-minimal
参考
Pijul という VCS を体験した - Qiita
概要や、基本的なコマンドなど
いいmrsekut.icon
分散VCSのモデル、あるいはPijulについて | κeenのHappy Hacκing Blog
概要
『バージョン管理 with Pijul』
Pijul - The Mathematically Sound Version Control System Written in Rust
https://jpn.small-business-tracker.com/pijul-strives-be-simpler-safer-git-627424
https://lukas-prokop.at/articles/2022-07-26-trying-out-pijul