====== unison ======
* first build [[ocaml]]
* download unison source from http://www.cis.upenn.edu/~bcpierce/unison/
* extract and navigate to the root source folder
* type these commands
make UISTYLE=text
sudo cp unison /usr/local/bin/
* preference/configuration file will be saved at ~/Library/Application\ Support/Unison/default.prf
===== running unison after you already copied files =====
:!: %%Notice the // double slashes on both sides of the ssh hostname%%
By the time you copy files and start to run a unison command you realize that it doesn't know about anything you did yet. It will bother you with questions about the props (properties) of each and every file, unless you run this once (WARNING - make sure you have both directories in sync first because you will be forcing one):
unison /local/path ssh://hostname//remote/path -force /local/path -batch
The force switch tells unison which version you want to use, and the batch switch means to ask no questions.
===== typical example (after initial sync) =====
:!: %%Notice the // double slashes on both sides of the ssh hostname%%
**sync.sh**
#!/bin/bash
unison /local/path ssh://hostname//remote/path
===== command not found errors using ssh =====
When using ssh with unison, you are creating a non-interactive shell. If unison is installed to /usr/local/bin/unison, you may not have that in your path when using a non-interactive shell. I've tried various solutions to fix this, but the easiest one for me was to symlink to /usr/bin/unison:
# the error...
bash: unison: command not found
Fatal error: Lost connection with the server
# the fix (on the host you are connecting to)...
ln -s /usr/local/bin/unison /usr/bin/unison