Git Virtual File System

Microsoft/GVFS : https://github.com/Microsoft/GVFS.git

WindowsでのGitが余りにも遅いと言われるからか、MSがGit用の仮想ファイルシステムを作り始めてしまったようです。

簡単に言うと、GVFSを使ってCloneすると実際にはその時点では実際には何も落ちてきていなくて、必要なときに必要なファイルだけダウンロードするので、「遅い」ローカルファイルに多数のファイルが実施には無く、Gitコマンドとのやりとりは実際のファイルシステムでは無く、GVFSが受け持つので、Gitのチェックアウトやステータスコマンドのレスポンスが向上するという仕組みのようです。

この仕組みだけ読むと、ローカルでビルドしようとしたら全部のオブジェクトをダウンロードしてしまうので、結局いつも通りなのでは?と言おう疑問がわくのですが、どうなんですかね。ただ実際のところGVFSがfscacheの変わりをすると考えるとそれでもそれなりのレスポンス向上は望めるのかもしれません。

また、現状使用するに当たってはGVFS用のGit for Windowsも必要になっています。(以下)

https://github.com/Microsoft/git/releases/tag/gvfs.preview

まぁこれはGVFSが安定してリリースとなれば、本体側にマージされるんじゃ無いでしょうか。現状メインのコントリビューターはかわらないので。

MSがGit for Windowsをフォークしたので何事かと思っていたらこういうことだったらしい。

GVFSは現状バイナリの配布は無く、ソースのビルドから始める必要があり、ビットロッカーもサポートしていません。当然プロダクション環境で使える物でも無いので、使ってみたい方は、GitHubのレポジトリのreadme.mdをよく読んで頂いてその手順で作業すれば良いんじゃ無いでしょうか。

私はそこまで速度に対する不満が無いので、しばらくは様子見かな。

追記(9:10):

Brian HarryがBlogにこれの開発いきさつを書いています。

Scaling Git (and some back story)

これによるとWindowsやOfficeのような巨大なコードベースに対応させるために自分たちが必要としたことが書かれており、これはちょっと期待しても良いのかもしれません。

また、実装がFUSEのようなWindowsの新しいフィルタドライバに依存して使用して作られていることが触れられています。(この辺の話かなhttps://msdn.microsoft.com/ja-jp/windows/hardware/drivers/ifs/file-system-filter-drivers)

参考:Announcing GVFS (Git Virtual File System)

コメントを残す