#!/usr/bin/env ruby
# Erik Kastner - git-r-up.rb
# daemon to watch for changes in a directory and sync them to a directory under source control (like rails + git)
# also adds and commits files to git (just git init in the FETCH_ROOT)
require'rubygems'require'simple-daemon'require'git'require'syslog'PUBLIC_ROOT="/u/apps/app/current/public"FETCH_ROOT="/home/app/website"deflog(msg);Syslog.open($0,Syslog::LOG_PID|Syslog::LOG_CONS){|s| s.debug msg };endclassWatcher< SimpleDaemon::BaseSimpleDaemon::WORKING_DIRECTORY="/tmp/git-watcher"defself.start
log "Starting Watcher"
g =Git.open(FETCH_ROOT)loopdo
unless g.status.untracked.empty? && g.status.changed.empty?
log "changed files"begin%x{cp -r #{FETCH_ROOT}/* #{PUBLIC_ROOT}}
g.add
g.commit("auto from watcher")rescue=> e
log e.inspect
end
sleep(7)# give git time to do it's thing
end
sleep(2)endenddefself.end
puts "Stopping Watcher"endendWatcher.daemonize