mrdavidlaing / vagrant-unison

Vagrant plugin to sync local files to VM using Unison over SSH
MIT License
37 stars 29 forks source link

Vagrant Unison Plugin

This is a Vagrant 1.1+ plugin that syncs files over SSH from a local folder to your Vagrant VM (local or on AWS). Under the covers it uses Unison

NOTE: This plugin requires Vagrant 1.1+,

Features

Usage

  1. You must already have Unison installed and in your path.
    • On Mac you can install this with Homebrew: brew install unison
    • On Unix (Ubuntu) install using sudo apt-get install unison
    • On Windows, download 2.40.102, unzip, rename Unison-2.40.102 Text.exe to unison.exe and copy to somewhere in your path.
  2. Install using standard Vagrant 1.1+ plugin installation methods.
    $ vagrant plugin install vagrant-unison
  3. After installing, edit your Vagrantfile and add a configuration directive similar to the below:

    
    Vagrant.configure("2") do |config|
    config.vm.box = "dummy"
    
    config.sync.host_folder = "src/"  #relative to the folder your Vagrantfile is in
    config.sync.guest_folder = "src/" #relative to the vagrant home folder -> /home/vagrant

end

1. Start up your starting your vagrant box as normal (eg: `vagrant up`)

## Start syncing Folders

Run `vagrant sync` to start watching the local_folder for changes, and syncing these to your vagrang VM.

Under the covers this uses your system installation of [Unison](http://www.cis.upenn.edu/~bcpierce/unison/), 
which must be installed in your path.

## Development

To work on the `vagrant-unison` plugin, clone this repository out, and use
[Bundler](http://gembundler.com) to get the dependencies:

$ bundle


Once you have the dependencies, verify the unit tests pass with `rake`:

$ bundle exec rake


If those pass, you're ready to start developing the plugin. You can test
the plugin without installing it into your Vagrant environment by just
creating a `Vagrantfile` in the top level of this directory (it is gitignored)
that uses it, and uses bundler to execute Vagrant:

$ bundle exec vagrant up $ bundle exec vagrant sync