#!/usr/bin/ptyhon#coding:utf-8classSvnCmd(object):#初始化属性,svnpath为svn的全路径。def__init__(self,svnpath,tagname='default'):importcommandsimporttimeself.svnpath=svnpathself.tagname=tagnameself.time=str(time.asctime(time.localtime(time.time())))#svn状态方法defsvnst(self):importosimportcommandsos.chdir(self.svnpath)status,r=commands.getstatusoutput('/usr/bin/svnst')[0],commands.getstatusoutput('/usr/bin/svnst')[1]returnstatus,r#svn预提交方法defsvnpreci(self):importosimportcommandsos.chdir(self.svnpath)commands.getoutput('''/usr/bin/svnst|grep-e'?'|awk'{print$2}'|xargssvnadd''')commands.getoutput('''/usr/bin/svnst|grep-e'!'|awk'{print$2}'|xargssvndelete''')status,r=commands.getstatusoutput('/usr/bin/svnst')[0],commands.getstatusoutput('/usr/bin/svnst')[1]returnstatus,r#svn提交defsvnci(self):importosimportcommandss.chdir(self.svnpath)cmd_svnci='''/usr/bin/svnst|grep-e'M'-e'A'-e'D'|/bin/awk'{print\$2}'|xargssvnci-m"svn'''+self.time+'_'+self.tagname+'"'printcmd_svncicommands.getoutput(cmd_svnci)#status,r=commands.getstatusoutput('/usr/bin/svnst')[0],commands.getstatusoutput('/usr/bin/svnst')[1]result=commands.getstatusoutput('/usr/bin/svnst')status,r=result[0],result[1]returnstatus,r#svn更新defsvnupdate(self):importosimportcommandsos.chdir(self.svnpath)#status,r=commands.getstatusoutput('/usr/bin/svnupdate')[0],commands.getstatusoutput('/usr/bin/svnupdate')[1]result=commands.getstatusoutput('/usr/bin/svnupdate')status,r=result[0],result[1]returnstatus,r#svn版本号defsvnrevision(self):importosimportcommandsos.chdir(self.svnpath)#status,r=commands.getstatusoutput('/usr/bin/svninfo')[0],commands.getstatusoutput('/usr/bin/svninfo')[1].split('\n')[6]result=commands.getstatusoutput('/usr/bin/svninfo')status,r=result[0],result[1].split('\n')[6]returnstatus,r#svn更新时间defsvnupdatetime(self):importosimportcommandsos.chdir(self.svnpath)#status,r=commands.getstatusoutput('/usr/bin/svninfo')[0],commands.getstatusoutput('/usr/bin/svninfo')[1].split('\n')[-2]result=commands.getstatusoutput('/usr/bin/svninfo')status,r=result[0],result[1].split('\n')[-2]returnstatus,r#svn快速回退上一个版本,整个版本回顾,不是临时回滚defsvnrollback(self):importosimportcommandslately_reversion=int(self.svnrevision()[1].split(':')[1])last_reversion=int(lately_reversion)-1os.chdir(self.svnpath)rollcmd='/usr/bin/svnmerge-r'+str(lately_reversion)+':'+str(last_reversion)+'.'printrollcmdresult=commands.getstatusoutput(rollcmd)status,r=result[0],result[1]returnstatus,r