generated at
富豪的git
gitでdiffだけ保存するのは貧乏発想である
ではGB級のバイナリが数千回数バイトだけ変更されたときに差分にしないのは富豪すぎるのでは...bsahd
古いものもUnixファイルとして普通にアクセスでっきるようにするとどうか 増井俊之
2022/5/1/src/abc.js みたいなのでアクセスできるようにする
昔のファイルをgrepしたりfindしたりできる
gitfsというのがある
FUSEベース

それAppleがMac OS X v10.5以降搭載してるTime Machineではnishio
同様の仕組みを実装したので未踏ジュニアのマイクラサーバは10分に1回バックアップしてて、過去の時点に巻き戻したりフォークしたりできる
どっかに解説書いたかな…
gitの話をしてるのですが 増井俊之
TimeMachineは信用できないし、あらゆる履歴が残ってるわけではないし、コマンドラインラインから古いファイルにアクセスなんてできましたっけ? 増井俊之
TimeMachineで試したことはないですけど、同じ仕組みでバックアップ取ったらコマンドラインで普通にアクセスできますよnishio
単なるハードリンクなので普通のファイル同様ですから
TimeMachineを例に挙げたことで混乱したならrsyncとかでもいいですよ、原理は同じ
>--link-destは、このオプションで指定したディレクトリ以下とコピー元を比較し、ファイルの所有者、タイムスタンプ、パーミッションなどすべてが一致するファイルであれば、指定されたディレクトリ内のファイルのハードリンクを作成します
rsyncでも何でもいいんですが、古いコードその他をそのままファイルとして残しておくやりかたを「富豪的git」と表現しているのですが... 増井俊之
「古いコードその他をそのままファイルとして残しておくやりかた」の具体的な実現方法として「ハードリンクで全部残すシステム」がありますよね、それは既に実用的に使われてますよね、という話をしていますnishio
実用的に使ってる人はいるかもしれませんが、git用に広く利用されてはいないと思いますが 増井俊之
あらゆる古いファイルにファイルシステムでアクセスできるpdumpfsというのを高林氏が作ってたことありますね 増井俊之
今も使ってるかどうかは知らんけど
これをこまめに動かせばgit専用の何かを作る必要はないかも
>pdumpfs はハードリンクのこの性質を利用して、差分によるバック アップを実現している。
これもハードリンクによる実現の一つですねnishio
もしかして「ハードリンク」が伝わってない??nishio
伝わってます 増井俊之
pdumpfsの実装も知ってます 増井俊之
gitを使いたいのがGitHub etcを使いたいからなら、TimeMachine etcとGitHub etcを連携できたら良い?yosider
TimeMachineは使いたくないんですよ 増井俊之
何がバックアップされるのか不明だし、古いファイルが全部バックアップされるわけではないので。
TimeMachineでは、不要と判断された(?)バージョンは消えてしまいますよね

gitにぶっこんでる履歴データ(リポジトリのデータ)から上手いビューをつくることだと解釈していたsta
特に「yyyy/mm/ddごとに全部のファイルをもうエクスポートしておく」とか
ファイル数やサイズはエグくなりそうだが、今どきの性能なら問題ないだろう
ここが(こういう考え方が)富豪的
最初からそれを提案しているのですが 増井俊之
中身が全く同じファイルはハードリンク使えばサイズ削減できそうか
そう思います 増井俊之
枯れたファイルは多いだろうし
例: 私のtextリポジトリ
2018/04/01から4年くらい運用しているとする(厳密な期間は覚えてない)
富豪的gitをすると、たとえば
ビュー1: 2018/04/01~2022/05/01までのファイルが全部展開されてアクセスできるようになる
20180401/
……
……
2022/05/01/
……
ビュー2: diary.txtについて全期間を見る
diary.txt/
20180401/diary.txt
20180406/diary.txt
……
2022/05/01/diary.txt
これは想定してなかったですね... 増井俊之
便利なのかな?
思いつきなので正直わかりませんsta
gitにぶっこんでることが前提
が、ここからして違いそうsta
というより別にgitでなくてもいい?
そうですね。gitに限る必要はなかったです 増井俊之
ただ、gitの場合、古いファイルがすぐ見えないことの問題が多いと思うのです 増井俊之
昨日のファイルを見るだけでもひと苦労しますから
grepやfindみたいな標準Unixコマンドが使えないのは苦痛じゃないですか?

Linuxのファイルシステムにbtrfsというものがあって、これにはスナップショットというファイルシステムツリーを一瞬で複製する機能があって、kokyakugahontounihitsuyoudattamonoはこれかなと思ったkuuote
実体は同じだけどファイルシステムが必要に応じてコピーしてくれる(CopyOnWrite)
やってること自体はpdumpfs等と変わらないけどツリーごと共有してるのでとても速い
ハードリンクではないのでバックアップ用のコピーもいらない
こういう機構はファイルシステムレベルで実現するのが一番筋がいいと思う
まあ使うファイルシステムが固定される上にLinuxでしか動かないけど
堅牢なNASの構築にはいいかと
前者はループバックマウントで一部回避できる
読み取り専用のツリーにもできる
専用の管理コマンドからしか変更できなかったはずなのでうっかり操作対策もちゃんとしてる
複製したツリーに解説付けておけばバージョン管理システムとして使えると思う
通常のディレクトリツリーとは異なる理に置かれるので理解が困難なのは難点か

>類似するバックアップツール
> Dumpfs / pdumpfs
>クローン
>クローンを利用することで、オペレーティングシステムは、同じボリュームにあるファイルのコピーを追加のスペースを消費せずに効率よく作成できる。クローンファイルに対してなされた変更は、差分データとして保存されるため、ドキュメントの改訂やコピーに必要なストレージ容量が削減できる
ちゃんと差分にしてくれるのよさそうkuuote
btrfsはやってくれなかった気がする
具体的にどういうことをやってるのか詳しくないけど、目指してることは近そうnishio
どっちもB-Treeベースだとも書いてた

差分をうまく見れる手法は大事だと思うのですが、差分しか保存しないのは貧乏だと思うのです 増井俊之
SCCSとかRCSとか、太古のVCSは差分しか保存してませんでしたが、いまどきそういう方式は時代遅れかもしれません 増井俊之

VSCodeLocal Historyという拡張がある
変更するたびに.historyにすべて保存される