Open4
(obsol.) Reposoup: Bareリポジトリを直接操作する
Git As Databaseをしていると、100万レコードを越えてきたあたりでファイルシステムのオーバヘッドがバカにできなくなってくる。チェックアウトを持たないbareリポジトリを活用してその辺を軽減できないだろうか。
... いやまぁ書き込み側でlibgit2なりなんなりを使うのが最速ではあるけど、ファイルシステムを直接インターフェースとして活用できるのもGit As Databaseの強みなので。。
ここまで書いて、実は worktree
とか sparse-checkout
でもうやりたいことは大体実現できるからそれで良い気がしてきた。やりたいことに近いのは worktree
かな。。
Indexなしでの読み取り
cat-file --filters
を使うことで、indexが無くても指定のリビジョンのファイルを取得できる。 ...これ自体は --filters
オプションの想定用途ではないように見えるが。。
GIT_DIR=photos.git git cat-file --filters HEAD:filelist.txt
通常のシチュエーションではindexを用意してアクセスした方が良いような気がする。
Indexの生成
read-tree
コマンドでindexを生成できる。
GIT_DIR=photos.git GIT_INDEX_FILE=index git read-tree HEAD
ユースケース的には無から生成する方が多い気がする。
GIT_DIR=photos.git GIT_INDEX_FILE=index git read-tree --empty
indexは手動指定しなくても良い