Do-It-Yourself Dropbox based on Mercurial:
#!/bin/sh set -o errexit # Exit as soon as a command returns an error hg pull --update hg commit --addremove --message "Update from $(hostname)" $@ hg push
How to use it:
$ hg clone <remote repo> ./shared $ cd shared $ cp ..../sync.sh . # sync.sh is the script above $ touch file1 file2 $ ./sync.sh # This will add file1 & file2 $ rm file2 $ ./sync.sh # This will delete file2 $ touch file3 file4 $ ./sync.sh file3 # This will add file3 but not file4
I also have a script
update.sh that doesn’t synchronize remotely:
#!/bin/sh hg commit --addremove --message "Update from $(hostname)" $@
If you’re using an editor that writes temporary files in the directory like Vim or Emacs don’t forget to add the relevant regex in the directory’s .hgignore.