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
= proc.communicate()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
= proc.communicate()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
= proc.communicate()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:self.commit(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]:svn_client.commit(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]:svn_client.commit(dirpath)filepath
= 'myfile.txt' # 'D:\svn\myfolder\dirname\myfile.txt'if
svn_client.add(filepath)[0]:svn_client.commit(filepath)#
报错#
dirpath =
'd:/svn/dir_out_of_svn_workpath'#
if svn_client.add(dirpath)[0]:#
svn_client.commit(dirpath)
python将文件上传到svn_Python 一键commit文件、目录到SVN服务器相关推荐
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- 【FTP】java FTPClient 文件上传内容为空,文件大小为0
问题:如题所述,使用FTPClient上传至FTP服务器, 表现如下:①文件大小为0 ②上传很小的文件,但是要花费很长的时间,20K要花费2分钟甚至更久 ③没有任何的报错,没有任何的乱码 解决方法: ...
- php上传文件自动删除,jsp-解决文件上传后重启Tomcat时文件自动删除问题
吼吼,我遇到的问题是这样的...... 我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个.然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件.但是,重启项目,或者清理缓存之后, ...
- php上传文件的目录,php文件上传及下载附带显示文件及目录功能
主页面wenjianceshi.php 文件 *{ font-family:"微软雅黑";} #wai{width:400px; margin:0 auto; padding:0p ...
- Qt之QFtp 在客户端实现文件上传、下载、新建文件夹、重命名、删除和刷新等功能
简述 本来是打算用新的类QNetworkAccessManager实现的客户端的文件上传.下载.新建文件夹.重命名.删除和刷新等功能,但是QNetworkAccessManager没有提供原本在QFt ...
- 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题
解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...
- java实现MinIO文件上传,并将视频文件截图,将视频封面及视频通过MinIo上传到服务器中
java实现MinIO文件上传,并将视频文件截图,将视频封面及视频通过MinIo上传到服务器中 配置完毕,接下来开始代码编写. 说明 总过程分为两步. 1.配置MinIO的环境. 2.代码编写. 下面 ...
- jquery 文件上传插件_10个jQuery文件上传插件
jquery 文件上传插件 这篇热门文章于2016年7月更新,以反映文件上传插件的当前状态. 有关旧文章的评论已删除. 使用Ajax实施文件上传可能非常困难,特别是如果您需要拖放支持,图像预览或进度条 ...
- python 文件上传 web_pythonweb自动化三种文件上传方法
文件上传三种方式: (一)查看元素标签,如果是input,则可以参照文本框输入的形式进行文件上传 方法:和用户输入是一样的,使用send_keys 步骤:1.找到定位元素,2,输入文件路径 ele=d ...
最新文章
- 阶跃函数和冲击函数相关性质及傅立叶变换求取方法
- 游戏美术干货:各大MOBA类游戏视觉包装设计解析
- (转)svn检出的时候报 Unable to connect to a repository at URL错误
- Java面试之谈谈对Volatile的理解
- Java游戏用户登录注册_Java实现多用户注册登录的幸运抽奖
- 玩游戏?或许游戏正在拯救部分人
- Python写出一个字节,一个YouTube,我用Python怎么了!
- DE13 Finding Particular Solutions to Inhomogeneous ODEs
- JavaScript语言概况(一)
- python中avg函数的使用_PostgreSQL avg()函数
- sql server database mail
- python编写简单漏洞扫描器(通过实别服务版本号)
- Spring常见面试题总结(超详细回答)
- 武汉大学计算机学院应时老师,肖春霞 - 教师简历 CV- 武汉大学计算机学院
- c++ atuo_ptr 的实现原理
- Xmind 8 Pro破解版安装激活教程(Windows版)
- matlab错位相减,matlab随手记
- Tesseract-OCR下载和安装
- 新版骗分导论 - 第7 版
- 免费收录网站搜索引擎登录入口大全
热门文章
- vue身份证正则校验
- 包装类详解(装箱,拆箱)
- 安装vs2010后打开提示需要升级安装Service Pack 1
- 2022年国外LEAD收入情况
- android actionbar分割线,Android ActionBar和ToolBar的使用
- 帮豆包刷“天天爱消除”,“天天连萌”
- iOS操作系统的层次结构
- linux命令连接sslftp,Linux命令行下登录ssl加密的ftp
- 注解RequestMapping中produces属性
- 注解@RequestMapping 的 produces属性