dog

A loyal and faithful synchronisation tool that you can rely on.
README

This simple tool allows to watch distributed directories and gather
the changes in a central Git repository, where every watched directories
appear as sub-directories.

Example

# Machine A, watch the current directory and make it available
# as `<global-name-A>` globally
dog watch <global-name-A> <server-url>

# Machine B, watch the current directory and make it available
# as `<global-name-B>` globally
dog watch <global-name-B> <server-url>

The on the server, the Git repository corresponding to <server-url>
will have the file hierarchy:

<global-name-A>/<files watched on machine A>
<global-name-B>/<files watched on machine B>
...

With the full history of changes.

Running the server

The easiest way to run a dog server is to run:

docker run -it --rm -p 22:22 \
  -v <secrets>/id_rsa.pub:/root/.ssh/authorized_keys \
  -v <git-repo>:/data \
  samoht/dogd

Or you can use the dog listen commands.

Running the client

dog watch --root=<directory-to-watch> <global-name> <ssh-server-url>:/data

For one-shot updates, you can use dog watch --once or simply:

cd <directory-to-watch> && git init && \
  git add * && git commit -a -m "Dog" && \
  git push <ssh-server-url>:/data <global-name> --force
Install
Sources
dog-0.2.1.tbz
md5=feef8463ad7fc380a3a433807c87fcac
Dependencies
git
>= "1.4.10"
irmin-unix
< "0.12.0"
irmin
>= "0.10.0" & < "0.12"
lwt
>= "2.4.5" & < "2.7.0"
topkg
build
ocaml
>= "4.02.3"
Reverse Dependencies