命令行版SVN使用记录


前言

记录一下,最近弄配置表的自动化测试,思路是想着结合Jenkins和本地SVN,定时去看看哪些配置文件有更新,然后根据文件名来执行对应的测试用例,这篇主要是记录下SVN的操作,前面也写过一篇Python操作SVN的,这篇是用命令行的方式运行。


提示:以下是本篇文章正文内容,下面案例可供参考

环境

Win10+Python3.6

安装

需要先下载命令行工具
点击这里下载,也可以去它的主页下载
下载好解压之后可以需要配置下变量环境
在命令行下输入:

set SVN_CMD_HOME=解压路径\Apache-Subversion-1.14.0\bin
set path=%path%;%SVN_CMD_HOME%
svn help

执行 SVN help 命令能输出帮助信息就配置好了

正文

一、常用的SVN命令

检出

svn checkout [-depth ARG] [--ignore-externals] [-r rev] URL PATH

深度选项框跟-depth参数相关

如果希望忽略外部被选中,使用–ignore-externals选型。

如果你正在检出特定的修订版本,在URL后使用-r指定。

更新

svn info URL_of_WC
svn update [-r rev] PATH

更新多个项目在Subversion还不是原子操作,所以TortoiseSVN会首先找到版本库的HEAD修订版本,然后将所有项目更新到特定修订版本,防止出现混合修订版本的工作副本。

如果只有一个项目被选中更新,或选中的项目来自不同的版本库,TortoiseSVN只会更新到HEAD。

没有使用命令行选项,更新到修订版本也实现了更新命令,但提供了更多的选项。

更新到版本

svn info URL_of_WC
svn update [-r rev] [-depth ARG] [--ignore-externals] PATH

深度选项框跟-depth参数相关

如果希望忽略外部被选中,使用–ignore-externals选型。

提交

在TortoiseSVN,提交对话框使用Subversion命令,第一部分是检查工作副本哪些文件可能被提交,然后你可以检查列表,比较与BASE的区别,选择你希望提交包含的项目。

svn status -v PATH

如果选择了显示未版本控制的文件,TortoiseSVN会遵循忽略规则显示工作目录中所有未版本控制的文件和文件夹。这个特性在Subversion中没有等价操作,因为svn status 命令不扫描未版本控制的文件夹。

如果你选择了未版本控制的文件和文件夹,这些项目都会先增加到你的工作副本。

svn add PATH...

当你点击确认,开始执行Subversion提交。如果你不修改所有的文件检查框,TortoiseSVN 会递归提交工作副本。如果你取消选择一些文件,那么就必须使用非递归提交 (-N) ,每个路径都必须在命令行上单独指定。

svn commit -m "LogMessage" [-depth ARG] [--no-unlock] PATH...

日志消息是日志编辑框的内容。它可以为空。

如果选择了保持锁,就使用–no-unlock开关。

差异

svn diff PATH

如果你在右键菜单使用差异,就会将修改的文件与基础版本比较。控制台的命令输出也是执行这个操作,输出统一差异格式。然而,TortoiseSVN并不采用这种方式。TortoiseSVN 使用TortoiseMerge (或者你选择的比较差异程序)可视化的全文显示差异,所以它没有相同的控制台操作。

你可以使用TortoiseSVN,比较任意两个文件的差异,不管他们是否受版本控制。TortoiseSVN只是把这两个文件传递给已经选择的比较差异程序,让它比较差异。

显示日志

svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH
或
svn log -v -r M:N [--stop-on-copy] PATH

默认情况下,TortoiseSVN尝试用–limit方法取得100个日志消息。如果设置了让它使用旧借口,那么就使用第二种是获得100个日志消息。

如果选择了停止于复制/改名,就使用–stop-on-copy开关。

检查修改

svn status -v PATH
或
svn status -u -v PATH

只在你的工作副本执行初始的状态检查。如果你点击检查版本库,那么也检查版本库,查看哪些文件会被更新操作修改,它需要-u开关。

如果选择了显示未版本控制的文件,TortoiseSVN会遵循忽略规则显示工作目录中所有未版本控制的文件和文件夹。这个特性在Subversion中没有等价操作,因为svn status 命令不扫描未版本控制的文件夹。

已解决

svn resolved PATH

改名

svn rename CURR_PATH NEW_PATH

删除

svn delete PATH

恢复

svn status -v PATH

首先开始状态检查,查看你的工作副本有哪些项目可以被撤销。你可以复审文件列表,检查这些文件的修改,然后选择你要撤销的项目。

当你点击确认时,开始Subversion撤销操作。如果你不修改所有的文件检查框,TortoiseSVN 会递归撤销 (-R)工作副本的修改。如果你取消选择一些文件,那么就必须使用非递归撤销 ,每个路径都必须在命令行上单独指定。"

svn revert [-R] PATH...

清理

svn cleanup PATH

获得锁

svn status -v PATH

首先开始状态检查,查看你的工作副本有哪些项目可以被加锁。你可以选择想加锁的项目。

svn lock -m "LockMessage" [--force] PATH...

加锁信息是加锁编辑框的内容。它可以为空。"

如果选择了强制锁定 ,就使用–force开关。

释放锁

svn unlock PATH

添加

svn add PATH...

如果选择了一个文件夹,TortoiseSVN会首先会递归的访问可以添加的条目。

二、使用Python的OS模块执行

如果不需要返回数据则可以OS模块

import os

os.system('svn update path')

三、使用Python的subprocess模块执行

主要是收集命令的执行结果,根据结果来提取想要的信息

import subprocess

log = subprocess.Popen('svn updata path',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).stdout.readlines()
log[0].decode('gb2312')	

返回的是一个列表,如果返回的中文出现乱码,参考下面的方法

四、处理中文乱码

gb2312类型

# sample
>>> name = '游戏测试'
>>> encode_name = name.encode('gb2312')
>>> encode_name
b'\xd3\xce\xcf\xb7\xb2\xe2\xca\xd4'
>>> encode_name.decode('gb2312')
'游戏测试'

utf-8类型

# sample
>>> name = '游戏测试'
>>> encode_name = name.encode('utf-8')
>>> encode_name
b'\xe6\xb8\xb8\xe6\x88\x8f\xe6\xb5\x8b\xe8\xaf\x95'
>>> encode_name.decode('utf-8')
'游戏测试'

还有这样的utf-8:%E6%B8%B8%E6%88%8F%E6%B5%8B%E8%AF%95

sample1

上面无法转换,需要用到 urllib.parse库
sample2

五、提取命令行数据

提取更新文件的完整路径

import re
import subprocess

def get_table_path():
	tables = []
	svn_log = subprocess.Popen('svn updata path',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).stdout.readlines()
	for f in svn_log:
		file_path = re.search("Restord '(.*).xlsx'\r\n",f)
		if file_path:
			tables.append(file_path.group(1))
	return tables

结语

获取到更新的文件,第一步工作完成,后续执行只需要测那些有更新的文件即可

欢迎小伙伴关注微信公众号ID:gameTesterGz
或关注我的CSDN:https://blog.csdn.net/qq_32557025
谢谢各位的关注、点赞!
微信二维码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游戏测试-AJian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值