Vagrantにはホストマシンのファイルをゲストマシンに同期する機能があります。これを使って、ホストのソースコードをゲストに同期しつつも、ゲスト側にいらないファイルは同期しないということをやってみます。
まず、ドキュメントに出てくる1つ目の例ですが、これはVagrantfileがあるディレクトリと同じディレクトリにある.git
を同期しないという指定になります。
Vagrant.configure("2") do |config|
config.vm.synced_folder ".", "/vagrant", type: "rsync",
rsync__exclude: ".git/"
end
もし、subproject/.git
を同期したくないときは、こうします。
Vagrant.configure("2") do |config|
config.vm.synced_folder "subproject", "/subproject", type: "rsync",
rsync__exclude: ".git/"
end
そして、複数のファイルを同期したくないときは配列にするとできます。
config.vm.synced_folder "scala-project", "/scala-project", type: "rsync",
rsync__exclude: [
".idea/",
".idea_modules/",
"project/project/",
"project/target/",
"target/",
]
なお、Vagrantでは除外パスの先頭にスラッシュをつけると完全一致に、つけないと後方一致になるようです。
たとえば、下の例では、scala-project/*target/
が除外されるようです。
config.vm.synced_folder "scala-project", "/scala-project", type: "rsync",
rsync__exclude: [
"target/",
]
一方、下の例では完全一致になり、scala-project/target/
が除外されます。
config.vm.synced_folder "scala-project", "/scala-project", type: "rsync",
rsync__exclude: [
"/target/",
]
このへんの実装はvagrant/helper.rb at 808a86a918b73cf07bcc2823d09580840bf5b4cc · mitchellh/vagrantにあります。