使用pysvn与SVN进行交互

利用pysvn使用代码与SVN进行交互

一、从远端仓库检出到本地

import time
import pysvn
import datetime


def get_login(realm, username, may_save):
    retcode = True  # True,如果需要验证;否则用False
    username = 'python'  # 用户名
    password = '123456'  # 密码
    save = False  # True,如果想之后都不用验证;否则用False
    return retcode, username, password, save


# TODO 这里的 ssl_server_trust_prompt 函数需要自己定义, 详见:https://www.e-learn.cn/content/wangluowenzhang/1654243
def ssl_server_trust_prompt(trust_dict):
    return (True  # server is trusted
            , trust_dict["failures"]
            , True)  # save the answer so that the callback is not called again


client = pysvn.Client()
client.callback_ssl_server_trust_prompt = get_login
client.callback_ssl_server_trust_prompt = ssl_server_trust_prompt

# TODO 当检测到版本有变动时在从远端仓库下载, 检出
client.update(r'C:\Users\yueguang\Desktop\project_A')

# 本地仓库,状态
entry = client.info(r'C:\Users\yueguang\Desktop\project_A')
print(u'SVN路径:', entry.url)
print(u'最新版本:', entry.commit_revision.number)
print(u'提交人员:', entry.commit_author)
print(u'更新日期:', datetime.datetime.fromtimestamp(entry.commit_time))

t = time.localtime(entry.commit_time)    #最新提交的时间
print('最新提交的时间:', time.strftime('%Y-%m-%d %H:%M:%S', t))
print("-------------ok")

执行结果:

在这里插入图片描述

二、获取远端仓库的版本等信息,不用检出

import pysvn


def get_login(realm, username, may_save):
    retcode = True  # True,如果需要验证;否则用False
    username = 'python'  # 用户名
    password = '123456'  # 密码
    save = False  # True,如果想之后都不用验证;否则用False
    return retcode, username, password, save


# TODO 这里的 ssl_server_trust_prompt 函数需要自己定义, 详见:https://www.e-learn.cn/content/wangluowenzhang/1654243
def ssl_server_trust_prompt(trust_dict):
    return (True  # server is trusted
            , trust_dict["failures"]
            , True)  # save the answer so that the callback is not called again


client = pysvn.Client()
client.callback_ssl_server_trust_prompt = get_login
client.callback_ssl_server_trust_prompt = ssl_server_trust_prompt

entries_list = client.ls('https://yueguang.jiean.net/svn/test/project_A')
print('-'*90)
print(entries_list)

for en in entries_list:
    print()

    print('文件的仓库路径 -----> ',en.name)    #文件属性
    print('文件大小 -----> ',en.size)    #文件属性
    print('文件更新时间 -----> ', en.time)    #文件属性
    print('最新的提交者 -----> ',en.last_author)    #文件属性
    print('文件的revision 版本 -----> ', en.created_rev)    #文件的revision
    print('文件类型 -----> ', en.kind)    #文件类型,file,dir,none,unknown 可以通过str(kind)=='file'判断
    print('en.time 类型 ----------:', type(en.time))
    print('en.created_rev 类型 ----------:', type(en.created_rev))

    print()
    print('-'*90)

执行结果:
在这里插入图片描述

三、检测状态,获取各种新增、删除、修改、冲突、未版本化的状态

import pysvn


def get_login(realm, username, may_save):
    retcode = True  # True,如果需要验证;否则用False
    username = 'python'  # 用户名
    password = '123456'  # 密码
    save = False  # True,如果想之后都不用验证;否则用False
    return retcode, username, password, save


# TODO 这里的 ssl_server_trust_prompt 函数需要自己定义, 详见:https://www.e-learn.cn/content/wangluowenzhang/1654243
def ssl_server_trust_prompt(trust_dict):
    return (True  # server is trusted
            , trust_dict["failures"]
            , True)  # save the answer so that the callback is not called again


client = pysvn.Client()
client.callback_ssl_server_trust_prompt = get_login
client.callback_ssl_server_trust_prompt = ssl_server_trust_prompt

"""
    changes ---> 是一个列表,显示的是本地仓库文件 、文件夹的路径信息
"""
changes = client.status(r'C:\Users\yueguang\Desktop\project_A')  # 检测状态,获取各种新增、删除、修改、冲突、未版本化的状态
print(changes)

print()
for f in changes:
    if f.text_status == pysvn.wc_status_kind.added:  # 新增
        print(f.path, 'A')
    elif f.text_status == pysvn.wc_status_kind.deleted:  # 删除
        print(f.path, 'D')
    elif f.text_status == pysvn.wc_status_kind.modified:  # 修改
        print(f.path, 'M')
    elif f.text_status == pysvn.wc_status_kind.conflicted:  #冲突
        print(f.path, 'C')
    elif f.text_status == pysvn.wc_status_kind.unversioned:  # 未版本化
        print(f.path, 'U')

执行结果:
在这里插入图片描述

四、相关资源

1、Windows10环境下使用VisualSVN server搭建SVN服务器:https://blog.csdn.net/qq_32786873/article/details/80535567
2、pysvn安装包下载:链接一 、链接二
3、python学习-SVN常用命令:https://blog.csdn.net/mjx91282041/article/details/11630643
4、SVN-钩子祥解与配置:https://www.cnblogs.com/gaohj/p/3154448.html
5、Svn提交后触发Jenkins自动构建:http://pysvn.tigris.org/project_downloads.html

发布了25 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/CSDN_Mr_H/article/details/96436456