#!/usr/bin/env python # encoding=utf-8 import subprocess import os import sys import base64 import time try: import argparse except: # HACK(Paulo Márcio): Isso é pra funcionar com python 2.4. Solaris usa esse lixo. import urllib2 import imp response = urllib2.urlopen('https://argparse.googlecode.com/hg/argparse.py') argparse_code = response.read() argparse = imp.new_module('argparse') exec argparse_code in argparse.__dict__ def touch(fname): for tries in range(1, 3): try: if sys.hexversion >= 0x03000000: with open(fname, 'a') as f: desc = fname if os.utime in os.supports_fd: desc = f.fileno() os.utime(desc) else: with file(fname, 'a'): os.utime(fname, None) break except: if tries == 3: print "Unexpected error:", sys.exc_info()[0] raise else: time.sleep(1) parser = argparse.ArgumentParser() parser.add_argument('--root', type=str, required=True) parser.add_argument('--svn-info', dest='svn_info', type=str, required=True) opt = parser.parse_args() valid = False with open(opt.svn_info, 'r') as f: for line in f.readlines(): if not line: continue valid = True uri, output_dir = line.strip().split(' ') output_dir = os.path.abspath(output_dir.replace('$(root)', opt.root)) svn_proc = subprocess.Popen(['svn', 'export', '--force', '--trust-server-cert', '--non-interactive', '--username', 'your.username', '--password', 'your.password', '--no-auth-cache', uri, output_dir], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = svn_proc.communicate() print out print err if svn_proc.returncode: raise Exception('ERROR: Can\'t export %s to %s!' % [uri, output_dir]) time.sleep(3) if not valid: raise Exception('ERROR: empty file .svn') for root, dirs, files in os.walk(opt.root): for file_name in files: touch(os.path.join(root, file_name))