700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python将文件上传到svn_Python 一键commit文件 目录到SVN服务器

python将文件上传到svn_Python 一键commit文件 目录到SVN服务器

时间:2021-05-12 15:26:51

相关推荐

python将文件上传到svn_Python 一键commit文件 目录到SVN服务器

#!/usr/bin/env/ python#

-*- coding:utf-8 -*-__author__

= 'shouke'import

subprocessimport

os.pathclass

SVNClient:def

__init__(self):self.svn_work_path

= 'D:\svn\myfolder'if

not os.path.exists(self.svn_work_path):print('svn工作路径:%s

不存在,退出程序' % self.svn_work_path)exit()self.try_for_filure

= 1 # 提交失败,重试次数def

get_svn_work_path(self):return

self.svn_work_pathdef

set_svn_work_path(self,

svn_work_path):self.svn_work_path

= svn_work_pathdef

update(self):args

= 'cd /d ' + self.svn_work_path

+ ' & svn update'with

subprocess.Popen(args, shell=True,

universal_newlines = True,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

as proc:output

= municate()print('执行svn

update命令输出:%s' % str(output))if

not output[1]:print('svn

update命令执行成功' )return

[True,'执行成功']else:print('svn

update命令执行失败:%s' % str(output))return[False,

str(output)]def

add(self,

path):args

= 'cd /d ' + self.svn_work_path

+ ' & svn add ' + pathwith

subprocess.Popen(args, shell=True,

universal_newlines = True,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

as proc:output

= municate()print('执行svn

add命令输出:%s' %str(output))if

not output[1]

or ( not str(output)and

str(output).find('is

already under version control')

!= -1):print('svn

add命令执行成功' )return

[True,'执行成功']else:print('svn

add命令执行失败:%s' % str(output))return[False,

'svn add命令执行失败:%s' % str(output)]def

commit(self,

path):args

= 'cd /d ' + self.svn_work_path

+ ' & svn commit -m "添加版本文件"' + pathwith

subprocess.Popen(args, shell=True,

universal_newlines = True,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

as proc:output

= municate()print('执行svn

commit命令输出:%s' % str(output))if

not output[1]:print('svn

commit命令执行成功' )return

[True,'执行成功']else:print('svn

commit命令执行失败,正在重试:%s' % str(output))if

self.try_for_filure

!= 0:mit(path)self.try_for_filure

= self.try_for_filure

- 1return[False,

str(output)]filepath_list

= []#

获取目标目录下的文件|子目录|子文件路径def

get_subdir_or_subfile_paths(dirpath, excludes):globalfilepath_listif

not os.path.exists(dirpath):print('路径:%s

不存在,退出程序' % dirpath)exit()elif

not os.path.isdir(dirpath):print('路径:%s

不为目录' % dirpath)return[]for

name in os.listdir(dirpath):for

exclude in excludes.strip(',').split(','):if

not name.endswith(exclude):full_path

= os.path.join(dirpath, name)filepath_list.append(full_path)if

os.path.isdir(full_path):get_subdir_or_subfile_paths(full_path,

exclude)return

filepath_listif

__name__ == '__main__':svn_client

= SVNClient()svn_client.update()dirpath

= 'dirname'#

'D:\svn\myfolder\dirname'if

svn_client.add(dirpath)[0]:mit(dirpath)dirpath

= 'D:\svn\myfolder\dirname'#

''#

传递每个文件、目录的绝对路径,确保重复执行时,给定目录下新增的文件也可以被提交paths

= get_subdir_or_subfile_paths(dirpath, '.svn')

# .svn文件需要被过滤掉,因为无法提交成功for

path in paths:if

svn_client.add(path)[0]:mit(dirpath)filepath

= 'myfile.txt' # 'D:\svn\myfolder\dirname\myfile.txt'if

svn_client.add(filepath)[0]:mit(filepath)#

报错#

dirpath =

'd:/svn/dir_out_of_svn_workpath'#

if svn_client.add(dirpath)[0]:#

mit(dirpath)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。