#!/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服务器相关推荐

  1. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  2. 【FTP】java FTPClient 文件上传内容为空,文件大小为0

    问题:如题所述,使用FTPClient上传至FTP服务器, 表现如下:①文件大小为0 ②上传很小的文件,但是要花费很长的时间,20K要花费2分钟甚至更久 ③没有任何的报错,没有任何的乱码 解决方法: ...

  3. php上传文件自动删除,jsp-解决文件上传后重启Tomcat时文件自动删除问题

    吼吼,我遇到的问题是这样的...... 我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个.然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件.但是,重启项目,或者清理缓存之后, ...

  4. php上传文件的目录,php文件上传及下载附带显示文件及目录功能

    主页面wenjianceshi.php 文件 *{ font-family:"微软雅黑";} #wai{width:400px; margin:0 auto; padding:0p ...

  5. Qt之QFtp 在客户端实现文件上传、下载、新建文件夹、重命名、删除和刷新等功能

    简述 本来是打算用新的类QNetworkAccessManager实现的客户端的文件上传.下载.新建文件夹.重命名.删除和刷新等功能,但是QNetworkAccessManager没有提供原本在QFt ...

  6. 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题

    解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...

  7. java实现MinIO文件上传,并将视频文件截图,将视频封面及视频通过MinIo上传到服务器中

    java实现MinIO文件上传,并将视频文件截图,将视频封面及视频通过MinIo上传到服务器中 配置完毕,接下来开始代码编写. 说明 总过程分为两步. 1.配置MinIO的环境. 2.代码编写. 下面 ...

  8. jquery 文件上传插件_10个jQuery文件上传插件

    jquery 文件上传插件 这篇热门文章于2016年7月更新,以反映文件上传插件的当前状态. 有关旧文章的评论已删除. 使用Ajax实施文件上传可能非常困难,特别是如果您需要拖放支持,图像预览或进度条 ...

  9. python 文件上传 web_pythonweb自动化三种文件上传方法

    文件上传三种方式: (一)查看元素标签,如果是input,则可以参照文本框输入的形式进行文件上传 方法:和用户输入是一样的,使用send_keys 步骤:1.找到定位元素,2,输入文件路径 ele=d ...

最新文章

  1. 阶跃函数和冲击函数相关性质及傅立叶变换求取方法
  2. 游戏美术干货:各大MOBA类游戏视觉包装设计解析
  3. (转)svn检出的时候报 Unable to connect to a repository at URL错误
  4. Java面试之谈谈对Volatile的理解
  5. Java游戏用户登录注册_Java实现多用户注册登录的幸运抽奖
  6. 玩游戏?或许游戏正在拯救部分人
  7. Python写出一个字节,一个YouTube,我用Python怎么了!
  8. DE13 Finding Particular Solutions to Inhomogeneous ODEs
  9. JavaScript语言概况(一)
  10. python中avg函数的使用_PostgreSQL avg()函数
  11. sql server database mail
  12. python编写简单漏洞扫描器(通过实别服务版本号)
  13. Spring常见面试题总结(超详细回答)
  14. 武汉大学计算机学院应时老师,肖春霞 - 教师简历 CV- 武汉大学计算机学院
  15. c++ atuo_ptr 的实现原理
  16. Xmind 8 Pro破解版安装激活教程(Windows版)
  17. matlab错位相减,matlab随手记
  18. Tesseract-OCR下载和安装
  19. 新版骗分导论 - 第7 版
  20. 免费收录网站搜索引擎登录入口大全

热门文章

  1. vue身份证正则校验
  2. 包装类详解(装箱,拆箱)
  3. 安装vs2010后打开提示需要升级安装Service Pack 1
  4. 2022年国外LEAD收入情况
  5. android actionbar分割线,Android ActionBar和ToolBar的使用
  6. 帮豆包刷“天天爱消除”,“天天连萌”
  7. iOS操作系统的层次结构
  8. linux命令连接sslftp,Linux命令行下登录ssl加密的ftp
  9. 注解RequestMapping中produces属性
  10. 注解@RequestMapping 的 produces属性