富豪的git
ではGB級のバイナリが数千回数バイトだけ変更されたときに差分にしないのは富豪すぎるのでは...

古いものもUnixファイルとして普通にアクセスでっきるようにするとどうか

2022/5/1/src/abc.js
みたいなのでアクセスできるようにする
昔のファイルをgrepしたりfindしたりできる
同様の仕組みを実装したので未踏ジュニアのマイクラサーバは10分に1回バックアップしてて、過去の時点に巻き戻したりフォークしたりできる
どっかに解説書いたかな…
gitの話をしてるのですが

TimeMachineは信用できないし、あらゆる履歴が残ってるわけではないし、コマンドラインラインから古いファイルにアクセスなんてできましたっけ?

TimeMachineで試したことはないですけど、同じ仕組みでバックアップ取ったらコマンドラインで普通にアクセスできますよ

TimeMachineを例に挙げたことで混乱したならrsyncとかでもいいですよ、原理は同じ
>--link-destは、このオプションで指定したディレクトリ以下とコピー元を比較し、ファイルの所有者、タイムスタンプ、パーミッションなどすべてが一致するファイルであれば、指定されたディレクトリ内のファイルのハードリンクを作成します
rsyncでも何でもいいんですが、古いコードその他をそのままファイルとして残しておくやりかたを「富豪的git」と表現しているのですが...

「古いコードその他をそのままファイルとして残しておくやりかた」の具体的な実現方法として「
ハードリンクで全部残すシステム」がありますよね、それは既に実用的に使われてますよね、という話をしています

実用的に使ってる人はいるかもしれませんが、git用に広く利用されてはいないと思いますが

あらゆる古いファイルにファイルシステムでアクセスできる
pdumpfsというのを高林氏が作ってたことありますね

今も使ってるかどうかは知らんけど
これをこまめに動かせばgit専用の何かを作る必要はないかも
>pdumpfs はハードリンクのこの性質を利用して、差分によるバック アップを実現している。
これもハードリンクによる実現の一つですね

伝わってます

pdumpfsの実装も知ってます

gitを使いたいのがGitHub etcを使いたいからなら、TimeMachine etcとGitHub etcを連携できたら良い?

TimeMachineは使いたくないんですよ

何がバックアップされるのか不明だし、古いファイルが全部バックアップされるわけではないので。
TimeMachineでは、不要と判断された(?)バージョンは消えてしまいますよね
gitにぶっこんでる履歴データ(リポジトリのデータ)から上手いビューをつくることだと解釈していた

特に「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
これは想定してなかったですね...

便利なのかな?
思いつきなので正直わかりません

gitにぶっこんでることが前提
が、ここからして違いそう

というより別にgitでなくてもいい?
そうですね。gitに限る必要はなかったです

ただ、gitの場合、古いファイルがすぐ見えないことの問題が多いと思うのです

昨日のファイルを見るだけでもひと苦労しますから
grepやfindみたいな標準Unixコマンドが使えないのは苦痛じゃないですか?
Linuxのファイルシステムに
btrfsというものがあって、これには
スナップショットというファイルシステムツリーを一瞬で複製する機能があって、

はこれかなと思った

やってること自体はpdumpfs等と変わらないけどツリーごと共有してるのでとても速い
ハードリンクではないのでバックアップ用のコピーもいらない
こういう機構はファイルシステムレベルで実現するのが一番筋がいいと思う
まあ使うファイルシステムが固定される上にLinuxでしか動かないけど
前者はループバックマウントで一部回避できる
読み取り専用のツリーにもできる
専用の管理コマンドからしか変更できなかったはずなのでうっかり操作対策もちゃんとしてる
通常のディレクトリツリーとは異なる理に置かれるので理解が困難なのは難点か
>クローンを利用することで、オペレーティングシステムは、同じボリュームにあるファイルのコピーを追加のスペースを消費せずに効率よく作成できる。クローンファイルに対してなされた変更は、差分データとして保存されるため、ドキュメントの改訂やコピーに必要なストレージ容量が削減できる
ちゃんと差分にしてくれるのよさそう

btrfsはやってくれなかった気がする
具体的にどういうことをやってるのか詳しくないけど、目指してることは近そう

どっちもB-Treeベースだとも書いてた
差分をうまく見れる手法は大事だと思うのですが、差分しか保存しないのは貧乏だと思うのです

SCCSとか
RCSとか、太古の
VCSは差分しか保存してませんでしたが、いまどきそういう方式は時代遅れかもしれません

変更するたびに.historyにすべて保存される