富豪的git
古いものもUnixファイルとして普通にアクセスでっきるようにするとどうか 増井俊之.icon
2022/5/1/src/abc.js みたいなのでアクセスできるようにする
昔のファイルをgrepしたりfindしたりできる
同様の仕組みを実装したので未踏ジュニアのマイクラサーバは10分に1回バックアップしてて、過去の時点に巻き戻したりフォークしたりできる
どっかに解説書いたかな…
gitの話をしてるのですが 増井俊之.icon
TimeMachineは信用できないし、あらゆる履歴が残ってるわけではないし、コマンドラインラインから古いファイルにアクセスなんてできましたっけ? 増井俊之.icon
TimeMachineで試したことはないですけど、同じ仕組みでバックアップ取ったらコマンドラインで普通にアクセスできますよnishio.icon
TimeMachineを例に挙げたことで混乱したならrsyncとかでもいいですよ、原理は同じ
--link-destは、このオプションで指定したディレクトリ以下とコピー元を比較し、ファイルの所有者、タイムスタンプ、パーミッションなどすべてが一致するファイルであれば、指定されたディレクトリ内のファイルのハードリンクを作成します rsyncでも何でもいいんですが、古いコードその他をそのままファイルとして残しておくやりかたを「富豪的git」と表現しているのですが... 増井俊之.icon
「古いコードその他をそのままファイルとして残しておくやりかた」の具体的な実現方法として「ハードリンクで全部残すシステム」がありますよね、それは既に実用的に使われてますよね、という話をしていますnishio.icon 実用的に使ってる人はいるかもしれませんが、git用に広く利用されてはいないと思いますが 増井俊之.icon
あらゆる古いファイルにファイルシステムでアクセスできるpdumpfsというのを高林氏が作ってたことありますね 増井俊之.icon 今も使ってるかどうかは知らんけど
これをこまめに動かせばgit専用の何かを作る必要はないかも
pdumpfs はハードリンクのこの性質を利用して、差分によるバック アップを実現している。 これもハードリンクによる実現の一つですねnishio.icon
もしかして「ハードリンク」が伝わってない??nishio.icon 伝わってます 増井俊之.icon
pdumpfsの実装も知ってます 増井俊之.icon
gitを使いたいのがGitHub etcを使いたいからなら、TimeMachine etcとGitHub etcを連携できたら良い?yosider.icon
TimeMachineは使いたくないんですよ 増井俊之.icon
何がバックアップされるのか不明だし、古いファイルが全部バックアップされるわけではないので。
TimeMachineでは、不要と判断された(?)バージョンは消えてしまいますよね
gitにぶっこんでる履歴データ(リポジトリのデータ)から上手いビューをつくることだと解釈していたsta.icon
特に「yyyy/mm/ddごとに全部のファイルをもうエクスポートしておく」とか
ファイル数やサイズはエグくなりそうだが、今どきの性能なら問題ないだろう
ここが(こういう考え方が)富豪的
最初からそれを提案しているのですが 増井俊之.icon
中身が全く同じファイルはハードリンク使えばサイズ削減できそうか そう思います 増井俊之.icon
枯れたファイルは多いだろうし
例: 私のtextリポジトリ
https://gyazo.com/f4bc1afa75094f8c66d00b7603f2e2a1
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
これは想定してなかったですね... 増井俊之.icon
便利なのかな?
思いつきなので正直わかりませんsta.icon
gitにぶっこんでることが前提
が、ここからして違いそうsta.icon
というより別にgitでなくてもいい?
そうですね。gitに限る必要はなかったです 増井俊之.icon
ただ、gitの場合、古いファイルがすぐ見えないことの問題が多いと思うのです 増井俊之.icon
昨日のファイルを見るだけでもひと苦労しますから
grepやfindみたいな標準Unixコマンドが使えないのは苦痛じゃないですか?
Linuxのファイルシステムにbtrfsというものがあって、これにはスナップショットというファイルシステムツリーを一瞬で複製する機能があって、/vim-jp-emojis/kokyakugahontounihitsuyoudattamono.iconはこれかなと思ったkuuote.icon やってること自体はpdumpfs等と変わらないけどツリーごと共有してるのでとても速い
ハードリンクではないのでバックアップ用のコピーもいらない
こういう機構はファイルシステムレベルで実現するのが一番筋がいいと思う
まあ使うファイルシステムが固定される上にLinuxでしか動かないけど
前者はループバックマウントで一部回避できる
読み取り専用のツリーにもできる
専用の管理コマンドからしか変更できなかったはずなのでうっかり操作対策もちゃんとしてる
通常のディレクトリツリーとは異なる理に置かれるので理解が困難なのは難点か
類似するバックアップツール
クローン
クローンを利用することで、オペレーティングシステムは、同じボリュームにあるファイルのコピーを追加のスペースを消費せずに効率よく作成できる。クローンファイルに対してなされた変更は、差分データとして保存されるため、ドキュメントの改訂やコピーに必要なストレージ容量が削減できる
ちゃんと差分にしてくれるのよさそうkuuote.icon
btrfsはやってくれなかった気がする
具体的にどういうことをやってるのか詳しくないけど、目指してることは近そうnishio.icon
どっちもB-Treeベースだとも書いてた
差分をうまく見れる手法は大事だと思うのですが、差分しか保存しないのは貧乏だと思うのです 増井俊之.icon
SCCSとかRCSとか、太古のVCSは差分しか保存してませんでしたが、いまどきそういう方式は時代遅れかもしれません 増井俊之.icon 変更するたびに.historyにすべて保存される
https://gyazo.com/92b599dad03ecd419e5e5b4f25b5bf05