Welcome, guest | Sign In | My Account | Store | Cart
# -*- coding: utf8 -*-
# author: Jiri Zahradil, jiri.zahradil@gmail.com

import os, time, sys, os.path

def svn(cmdline):
    SVNBINARY = r"svn" # your path to svn binary
    print "run: svn "+cmdline
    os.system(SVNBINARY +" "+cmdline)
    
def mylistdir(path):
    return (f for f in os.listdir(path) if (f and not f.startswith(".") and not os.path.isdir(f)))
    
path_to_watch = "." if (len(sys.argv)<=1) else sys.argv[1]
start_dir = os.getcwd()

try:
    os.chdir(path_to_watch)
    path_to_watch = "."
    print "Watching",os.getcwd()    
    before = dict ([(f, os.path.getmtime(f)) for f in mylistdir(path_to_watch)])
    svn("add -q "+" ".join(before))
    svn("ci -q . -m \"watching start\"")
    msg = " -m \"auto-commit\""    
    while 1: 
        time.sleep (5) 
        after = dict ([(f, os.path.getmtime(f)) for f in mylistdir(path_to_watch)])
        
        modified = [f for f,ts in after.iteritems() if ts>before.get(f,ts)]
        added = [f for f in after if not f in before] 
        removed = [f for f in before if not f in after]
        if added:
            svn("add -q "+" ".join(added))
            print "Added: ", ", ".join (added)            
        if removed:
            svn("rm -q "+ " ".join(removed))
            print "Removed: ", ", ".join (removed)            
        if modified:
            print "Modified: ", ", ".join (modified)
            
        if added or removed or modified:
            svn("ci -q ."+msg)
    
        before = after      
    pass

finally:
    os.chdir(start_dir)

History