Git Virtual File System(GVFS) の使い方
GVFS (Git Virtua File System) の使い方を日本語で載せておく。 また、GVFS 利用時の注意点もまとめておく (注意点や制限事項などは 2018/5/28 時点でのもの)。
利用条件
- 使用 OS が Windows 10 Version 1703 以降であること
GVFS は OS の仕組みを利用しているため、現時点で Windows 10 (Version 1703) 以降でなければ使用できない。
- Visual Studio Team Services を使用すること
GVFS に対応するためには、使用する Git サービスが GVFS プロトコルに対応している必要がある。現時点では、Microsoft が提供している Visual Studio Team Services (VSTS) のみが対応しており、GitHub などでは利用することができない *1。
インストール方法
GVFS を利用するには、マイクロソフトが作成している GVFS対応版の Git for Windows を使用する必要がある。Git 公式 (http://www.git-scm.org) で公開されているものでは使用できないので注意が必要。
GVFS 対応版の Git for Windows は以下の GitHub 上のリポジトリから入手できる。このリポジトリは基本的に Git-for-Windows/Git の fork であり、GVFS 以外についての機能は同じである。
- Microsoft/Git (https://github.com/Microsoft/git/releases)
Git for Windows インストール後、GVFS をインストールする。GVFS は以下の GitHub 上のリポジトリからダウンロードできる。
- Microsoft/GVFS (https://github.com/Microsoft/GVFS/releases)
制限事項
現在の GVFS には利用上の制限が 2 つ存在する (正確には 3 つ存在する)
- リポジトリで clean/smudge フィルターが有効でないこと
- リポジトリの直下 (ルート) に "* text" の行を含む .gitattributes ファイルが存在すること
- 改行コードの変換が無効であること (* text=false)
特に最後の改行コードについては、Visual Studio によって自動的に作成される .gitattributes ファイルでは "* text=auto" となっており注意が必要である。*2
改行コードの設定が問題で失敗した場合は、以下のエラー コードが表示される。
Error: Could not complete checkout of branch: master, fatal: CRLF conversions not supported when running under GVFS
使い方
Git クローンする時に git clone
の代わりに gvfs clone
を使えばよい。
実行結果の例を以下に示す。
PS C:\Works\GVFSTest> gvfs clone <Repository Url> Clone parameters: Repo URL: <Repository Url> Branch: Default Cache Server: Default Local Cache: C:\.gvfsCache Destination: C:\Works\GVFSTest\MonoBuildTest Authenticating...Succeeded Querying remote for config...Succeeded Using cache server: None (<Repository Url>) Cloning...Succeeded Fetching commits and trees from origin (no cache server)...Succeeded Attaching PrjFlt to volume...Succeeded Validating repo...Succeeded Mounting...Succeeded Registering for automount...Succeeded
取得後は、通常の Git コマンドが使用できる。 なお、git clone した場合は直下にコードリポジトリのソースコードが表示されるが、GVFS の場合は "<root>\src" 配下に作成されるのでコマンド実行時は注意が必要 ("cd <root>\src" すること)。
なお、ローカルからリポジトリを削除したい場合、フォルダーを削除する前にリポジトリ配下で次のコマンドを実行してアンマウントしなければならない。*3
gvfs unmount
macOS と Linux 対応について
macOS と Linux への対応については、Microsoft と GitHub が共同で作業を進めている状況だが、現時点では対応していない。
- GVFS Updates: More Performance, More Availability (https://blogs.msdn.microsoft.com/devops/2017/11/15/updates-to-gvfs/)
状況としては、macOS 対応のほうが進んでいる様子。