vagrant-unison2 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +37 -9
- data/lib/vagrant-unison2/command.rb +2 -3
- data/lib/vagrant-unison2/config.rb +37 -20
- data/lib/vagrant-unison2/ssh_command.rb +4 -4
- data/lib/vagrant-unison2/unison_sync.rb +1 -1
- data/lib/vagrant-unison2/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f9c0f38337bb5960bb29c8da31e978a23695887
|
4
|
+
data.tar.gz: 966b97b53ea314c8461d8690bcaa507dad9b6bc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3abcb7f645f70a8b3f006b79f10d106ef9365ebdf15c84279c787db7567d8b461293a4f37bc6305293960a62c4fc24cd064102395c039a4ebd430c5117ab86ee
|
7
|
+
data.tar.gz: e4e96ea90142df5d27c9d67a07d7b435a02f55d22e7e74937150d134a8c0b565c1cae94423636645dbc8a7649d78b3e0cfdeae33964e077c5d40823f9beb04b5
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# Vagrant Unison 2 Plugin
|
2
2
|
|
3
|
-
This is a [Vagrant](http://www.vagrantup.com) 1.
|
3
|
+
This is a [Vagrant](http://www.vagrantup.com) 1.7+ plugin that syncs files over SSH from a local folder
|
4
4
|
to your Vagrant VM (local or on AWS). Under the covers it uses [Unison](http://www.cis.upenn.edu/~bcpierce/unison/)
|
5
5
|
|
6
|
-
**NOTE:** This plugin requires Vagrant 1.
|
6
|
+
**NOTE:** This plugin requires Vagrant 1.7+,
|
7
7
|
|
8
8
|
## Features
|
9
9
|
|
@@ -11,22 +11,40 @@ to your Vagrant VM (local or on AWS). Under the covers it uses [Unison](http://
|
|
11
11
|
|
12
12
|
## Usage
|
13
13
|
|
14
|
-
1. You must already have [Unison](http://www.cis.upenn.edu/~bcpierce/unison/) installed
|
14
|
+
1. You must already have [Unison](http://www.cis.upenn.edu/~bcpierce/unison/) installed on your path on your host and guest machines, and it must be the same version of Unison on both.
|
15
15
|
* On Mac you can install this with Homebrew: `brew install unison`
|
16
|
-
|
16
|
+
* This will install unison 2.48.3
|
17
|
+
* On Ubuntu:
|
18
|
+
* [Xenial (16.04)](https://launchpad.net/ubuntu/xenial/+source/unison): `sudo apt-get install unison`
|
19
|
+
* Ubuntu Trusty (14.04):
|
20
|
+
* `sudo add-apt-repository ppa:eugenesan/ppa`
|
21
|
+
* `sudo apt-get update`
|
22
|
+
* `sudo apt-get install unison=2.48.3-1~eugenesan~trusty1`
|
23
|
+
* Other 64-bit Linux:
|
24
|
+
* Install package from `http://ftp5.gwdg.de/pub/linux/archlinux/extra/os/x86_64/unison-2.48.3-2-x86_64.pkg.tar.xz`. (Install at your own risk, this is a plain http link. If someone knows of a signed version, checksum, or https host let me know so I can update it).
|
17
25
|
* On Windows, download [2.40.102](http://alan.petitepomme.net/unison/assets/Unison-2.40.102.zip), unzip, rename `Unison-2.40.102 Text.exe` to `unison.exe` and copy to somewhere in your path.
|
18
|
-
1. Install using standard Vagrant 1.1+ plugin installation methods.
|
26
|
+
1. Install using standard Vagrant 1.1+ plugin installation methods.
|
19
27
|
```
|
20
|
-
$ vagrant plugin install vagrant-
|
28
|
+
$ vagrant plugin install vagrant-unison2
|
21
29
|
```
|
22
30
|
1. After installing, edit your Vagrantfile and add a configuration directive similar to the below:
|
23
|
-
```
|
31
|
+
```ruby
|
24
32
|
Vagrant.configure("2") do |config|
|
25
33
|
config.vm.box = "dummy"
|
26
34
|
|
35
|
+
# Required configs
|
27
36
|
config.unison.host_folder = "src/" #relative to the folder your Vagrantfile is in
|
28
37
|
config.unison.guest_folder = "src/" #relative to the vagrant home folder -> /home/vagrant
|
29
|
-
|
38
|
+
|
39
|
+
# Optional configs
|
40
|
+
# File patterns to ignore when syncing. Ensure you don't have spaces between the commas!
|
41
|
+
config.unison.ignore = "Name {.DS_Store,.git,node_modules}" # Default: none
|
42
|
+
# SSH connection details for Vagrant to communicate with VM.
|
43
|
+
config.unison.ssh_host = "10.0.0.1" # Default: '127.0.0.1'
|
44
|
+
config.unison.ssh_port = 22 # Default: 2222
|
45
|
+
config.unison.ssh_user = "deploy" # Default: 'vagrant'
|
46
|
+
# `vagrant unison-sync-polling` command will restart unison in VM if memory usage gets above this threshold (in MB).
|
47
|
+
config.unison.mem_cap_mb = 500 # Default: 200
|
30
48
|
|
31
49
|
end
|
32
50
|
```
|
@@ -79,6 +97,16 @@ You should run a unison-cleanup
|
|
79
97
|
|
80
98
|
Running Unison with -ignorearchives flag is a bad idea, since it will produce conflicts.
|
81
99
|
|
100
|
+
### Uncaught exception `bad bigarray kind`
|
101
|
+
|
102
|
+
The error is:
|
103
|
+
```
|
104
|
+
Unison failed: Uncaught exception Failure("input_value: bad bigarray kind")
|
105
|
+
```
|
106
|
+
|
107
|
+
This is caused when the unison on your host and guest were compiled with different versions of ocaml. To fix ensure that
|
108
|
+
both are compiled with the same ocaml version. [More Info Here](https://gist.github.com/pch/aa1c9c4ec8522a11193b)
|
109
|
+
|
82
110
|
### Skipping files changed on both sides
|
83
111
|
|
84
112
|
This is most often caused in my experience by files that get changed by different users with different permissions.
|
@@ -113,7 +141,7 @@ creating a `Vagrantfile` in the top level of this directory (it is gitignored)
|
|
113
141
|
that uses it, and uses bundler to execute Vagrant:
|
114
142
|
|
115
143
|
```
|
116
|
-
$ bundle exec vagrant up
|
144
|
+
$ bundle exec vagrant up
|
117
145
|
$ bundle exec vagrant unison-sync
|
118
146
|
```
|
119
147
|
|
@@ -141,8 +141,7 @@ module VagrantPlugins
|
|
141
141
|
|
142
142
|
def watch_vm_for_memory_leak(machine)
|
143
143
|
ssh_command = SshCommand.new(machine)
|
144
|
-
|
145
|
-
Thread.new(ssh_command.ssh, unison_mem_cap_mb) do |ssh_command_text, mem_cap_mb|
|
144
|
+
Thread.new(ssh_command.ssh, machine.config.unison.mem_cap_mb) do |ssh_command_text, mem_cap_mb|
|
146
145
|
while true
|
147
146
|
sleep 15
|
148
147
|
total_mem = `#{ssh_command_text} 'free -m | egrep "^Mem:" | awk "{print \\$2}"' 2>/dev/null`
|
@@ -156,7 +155,7 @@ module VagrantPlugins
|
|
156
155
|
# Debugging: uncomment to log every loop tick
|
157
156
|
# puts "Unison running as #{pid} using #{mem_unison} mb"
|
158
157
|
if mem_unison > mem_cap_mb
|
159
|
-
puts "Unison using #{mem_unison}
|
158
|
+
puts "Unison using #{mem_unison}MB memory is over limit of #{mem_cap_mb}MB, restarting"
|
160
159
|
`#{ssh_command_text} kill -HUP #{pid} 2>/dev/null`
|
161
160
|
end
|
162
161
|
end
|
@@ -23,31 +23,48 @@ module VagrantPlugins
|
|
23
23
|
# @return [String]
|
24
24
|
attr_accessor :repeat
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
# SSH host.
|
27
|
+
#
|
28
|
+
# @return [String]
|
29
|
+
attr_accessor :ssh_host
|
30
|
+
|
31
|
+
# SSH port.
|
32
|
+
#
|
33
|
+
# @return [String]
|
34
|
+
attr_accessor :ssh_port
|
35
|
+
|
36
|
+
# SSH user.
|
37
|
+
#
|
38
|
+
# @return [String]
|
39
|
+
attr_accessor :ssh_user
|
32
40
|
|
33
|
-
|
34
|
-
#
|
35
|
-
|
41
|
+
# Memory usage cap in MB
|
42
|
+
# Restart Unison in the VM when it's consuming more than this
|
43
|
+
# amount of memory (in MB)
|
44
|
+
# @return [int]
|
45
|
+
attr_accessor :mem_cap_mb
|
36
46
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
47
|
+
def initialize(region_specific=false)
|
48
|
+
@host_folder = UNSET_VALUE
|
49
|
+
@guest_folder = UNSET_VALUE
|
50
|
+
@ignore = UNSET_VALUE
|
51
|
+
@repeat = UNSET_VALUE
|
52
|
+
@ssh_host = UNSET_VALUE
|
53
|
+
@ssh_port = UNSET_VALUE
|
54
|
+
@ssh_user = UNSET_VALUE
|
55
|
+
@mem_cap_mb = UNSET_VALUE
|
56
|
+
end
|
44
57
|
|
45
58
|
def finalize!
|
46
59
|
# The access keys default to nil
|
47
|
-
@host_folder = nil
|
48
|
-
@guest_folder = nil
|
49
|
-
@ignore = nil
|
50
|
-
@repeat = 1
|
60
|
+
@host_folder = nil if @host_folder == UNSET_VALUE
|
61
|
+
@guest_folder = nil if @guest_folder == UNSET_VALUE
|
62
|
+
@ignore = nil if @ignore == UNSET_VALUE
|
63
|
+
@repeat = 1 if @repeat == UNSET_VALUE
|
64
|
+
@ssh_host = '127.0.0.1' if @ssh_host == UNSET_VALUE
|
65
|
+
@ssh_port = 2222 if @ssh_port == UNSET_VALUE
|
66
|
+
@ssh_user = 'vagrant' if @ssh_user == UNSET_VALUE
|
67
|
+
@mem_cap_mb = 200 if @mem_cap_mb == UNSET_VALUE
|
51
68
|
|
52
69
|
# Mark that we finalized
|
53
70
|
@__finalized = true
|
@@ -8,14 +8,14 @@ module VagrantPlugins
|
|
8
8
|
def ssh
|
9
9
|
%W(
|
10
10
|
ssh
|
11
|
-
|
11
|
+
#{@machine.config.unison.ssh_user}@#{@machine.config.unison.ssh_host}
|
12
12
|
#{ssh_args}
|
13
13
|
).compact.join(' ')
|
14
14
|
end
|
15
15
|
|
16
16
|
def ssh_args
|
17
17
|
%W(
|
18
|
-
-p #{@machine.
|
18
|
+
-p #{@machine.config.unison.ssh_port}
|
19
19
|
#{proxy_command}
|
20
20
|
-o StrictHostKeyChecking=no
|
21
21
|
-o UserKnownHostsFile=/dev/null
|
@@ -24,8 +24,8 @@ module VagrantPlugins
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def uri(unison_paths)
|
27
|
-
username = @machine.
|
28
|
-
host = @machine.
|
27
|
+
username = @machine.config.unison.ssh_user
|
28
|
+
host = @machine.config.unison.ssh_host
|
29
29
|
|
30
30
|
"ssh://#{username}@#{host}/#{unison_paths.guest}"
|
31
31
|
end
|
@@ -10,7 +10,7 @@ module VagrantPlugins
|
|
10
10
|
|
11
11
|
# Create the guest path
|
12
12
|
machine.communicate.sudo("mkdir -p '#{guest_path}'")
|
13
|
-
machine.communicate.sudo("chown #{machine.
|
13
|
+
machine.communicate.sudo("chown #{machine.config.unison.ssh_user} '#{guest_path}'")
|
14
14
|
|
15
15
|
ssh_command = SshCommand.new(machine)
|
16
16
|
shell_command = ShellCommand.new(machine, unison_paths, ssh_command)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-unison2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Laing
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-03-
|
13
|
+
date: 2016-03-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: listen
|