python 操作SVN 命令也可直接在cmd里执行
1、获取SVN 服务器上的文件列表
VNpath = 。。。。
SVNname = 。。。。。
Svnpassword = 。。。。。
import os
import re
# 检测空格# cmd命令需要增加 双引号因为会有空格出现的话
class Detectionspace():
def detectionspace(self, path):
if path.find(' ') >= 0:
path = "\"" + path + "\""
return path
else:
return path
# 获取SVN文件列表
class GetsvninfoCMD():
def getinbfo(self, cmdsvn):
r = os.popen(cmdsvn)
text = r.read()
r.close
content = [i for i in text.split('\n') if i != ''] # 获取的文件list
return content
# 获取的文件list
def getsvnfilelist():
SVNpaths = Detectionspace().detectionspace(SVNpath) # 检测空格
# --depth infinity 为递归检测 , 不加这个就检测当前目录下的东西不递归
cmdContent = "@svn list %s --depth infinity --username %s --password %s --no-auth-cache --non-interactive --trust-server-cert" % (
SVNpaths, SVNname, Svnpassword)
scnmess = GetsvninfoCMD().getinbfo(cmdContent) # 获取的文件list
return scnmess
## file = filepath.split('/')[-1] # 截取文件名 截取文件名字 filepath是全路径的文件 有需要循环添加代码即可
2、获取SVN文件的日志信息
import os
import re
# 检测空格# cmd命令需要增加 双引号因为会有空格出现的话
class Detectionspace():
def detectionspace(self, path):
if path.find(' ') >= 0:
path = "\"" + path + "\""
return path
else:
return path
# 获取的文件日志信息
class GetSVNinfos():
def getinbfo(self, cmdsvn):
rootLog = os.popen(cmdsvn)
res = rootLog.read() # 获取的文件日志信息
# print(res)
return res
# 获取S
VN日志信息
def svnloginfo(filepath):
filepaths = Detectionspace().detectionspace(filepath) # 检测空格
cmdContent = 'svn log -l 1 %s --username %s --password %s --no-auth-cache --non-interactive --trust-server-cert' % (
filepaths, SVNname, Svnpassword)
res = GetSVNinfos().getinbfo(cmdContent) # 获取的文件log
res = res.replace('-', '')
res = res.replace(' | ', '|')
res = res.replace('\n', '|')
res = res.replace('+0800', '')
res = res.split('|') # 日志信息是|分割的字符串
while '' in res: # 删除空元素
res.remove('')
return res
3、这个也是比较难的 SVN命令行获取单个文件 这是版主废了好久才整明白的 很重要
cmdContent = '@svn.exe cat "%s">SVN.xlsx --username %s --password %s --no-auth-cache --non-interactive --trust-server-cert' % (
"SVN路径下/XXX/SVN.xlsx", SVNname, Svnpassword)
# print(cmdContent)
os.system(cmdContent)
``
4、在SVN服务器上创建文件夹操作
cmd 调用即可
```python
svn mkdir "https://11.11.14.79/testApp/XXXXX/小工具/test" -m "SVN命令创建一个目录测试" --username XXXXXXX --password XXXXXXXX
5、SVN 上传单个文件,无版本控制的文件到SVN,
第一个双引号是要上传到SVN的本地文件所在路径,第二个双引号是 上传到SVN的地址,要确定到具体文件才行。
svn import "E:\TestConfiguraion_20190606\Configuration\config_xml_ddd\service\product_assemble_config_win64.xml" "https://10.1.14.79/testApp/配置管理/补丁包/product_assemble_config_win64.xml" --username xxxxxxxx --password xxxxxxxxxxxxx --non-interactive --trust-server-cert -m "[ADD]add the packages to svn files"