#!/usr/bin/env python # -*- coding:utf-8 -*- import pysvn import locale import datetime import sys import os import json from ftplib import FTP def setlocale(): language_code, encoding = locale.getdefaultlocale() if language_code is None: language_code = 'en_GB' if encoding is None: encoding = 'UTF-8' if encoding.lower == 'utf': encoding = 'UTF-8' locale.setlocale( locale.LC_ALL, '%s.%s' % (language_code, encoding)) def get_login( realm, username, may_save ): return True, 'test', 'test', True def svncheckout(): client = pysvn.Client() client.callback_get_login = get_login ret = client.checkout(url,path) def svnupdate(path): client = pysvn.Client() ret = client.update(path) #print ret return ret def svninfo(path): client = pysvn.Client() entry = client.info(path) Version = "Version: %s" % entry.commit_revision.number Author = "Author: %s" % entry.commit_author Update = "Update Date: %s" % str(datetime.datetime.fromtimestamp(entry.commit_time))[:-7] f = file('log.txt','a') f.write(Version+'\n'+Author+'\n'+Update+'\n'+'-'*32+'\n') f.close() if __name__ == "__main__": #path = "/home/yhq/python/svntest" path = r"D:\virualsvn" url = "http://192.168.5.110:808/svn/test/" #setlocale() #svncheckout() svnupdate(path) svninfo(path) ############ _XFER_FILE = 'FILE' _XFER_DIR = 'DIR' class Xfer(object): '''' @note: upload local file or dirs recursively to ftp server ''' def __init__(self): self.ftp = None def __del__(self): pass def setFtpParams(self, ip, uname, pwd, port = 21, timeout = 60): self.ip = ip self.uname = uname self.pwd = pwd self.port = port self.timeout = timeout def initEnv(self): if self.ftp is None: self.ftp = FTP() print '### connect ftp server: %s ...'%self.ip self.ftp.connect(self.ip, self.port, self.timeout) self.ftp.login(self.uname, self.pwd) print self.ftp.getwelcome() def clearEnv(self): if self.ftp: self.ftp.close() print '### disconnect ftp server: %s!'%self.ip self.ftp = None def uploadDir(self, localdir='./', remotedir='./'): if not os.path.isdir(localdir): return self.ftp.cwd(remotedir) for file in os.listdir(localdir): src = os.path.join(localdir, file) if os.path.isfile(src): self.uploadFile(src, file) elif os.path.isdir(src): try: self.ftp.mkd(file) except: sys.stderr.write('the dir is exists %s'%file) self.uploadDir(src, file) self.ftp.cwd('..') def uploadFile(self, localpath, remotepath='./'): if not os.path.isfile(localpath): return print '+++ upload %s to %s:%s'%(localpath, self.ip, remotepath) self.ftp.storbinary('STOR ' + remotepath, open(localpath, 'rb')) def __filetype(self, src): if os.path.isfile(src): index = src.rfind('\\') if index == -1: index = src.rfind('/') return _XFER_FILE, src[index+1:] elif os.path.isdir(src): return _XFER_DIR, '' def upload(self, src): filetype, filename = self.__filetype(src) self.initEnv() if filetype == _XFER_DIR: self.srcDir = src self.uploadDir(self.srcDir) elif filetype == _XFER_FILE: self.uploadFile(src, filename) self.clearEnv() if __name__ == '__main__': #srcDir = r"C:\sytst" srcDir = r"D:\xshell" #srcFile = r'C:\sytst\sar.c' xfer = Xfer() xfer.setFtpParams('192.168.5.110', '', '') xfer.upload(srcDir) xfer.upload(srcFile)
python 更新svn 並 ftp更新到服務器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.