SVN批量移动文件,并保留版本日志

Posted 詩和遠方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN批量移动文件,并保留版本日志相关的知识,希望对你有一定的参考价值。

场景

希望将SVN文件移动到其它文件夹下,且保存SVN日志。如果是少数几个文件还好 ,对每个文件分别用SVN的rename功能(或选中多个右键拖拽,详见此链接)即可:

但若文件非常多,且具有某类特殊属性,比如某文件夹下的,文件名都包含某关键词的文件就比较棘手,这个时候就体现出了命令行的优势,SVN可以用GUI方式操作的功能,都可以找到对应的命令。

SVN命令行

经查阅文档,SVN Rename命令的语法如下:

svn rename CURR_PATH NEW_PATH

下面看如何对某文件夹下的文件批量生成cmd命令并运行

PowerShell动态生成CMD命令并调动

# SVN文件,移动到新建的文件夹下,并保存日志信息
# 需求:KS-Code根目录下,文件名中不包含“脚本”的sql文件,转移到新的文件夹“增加字段”中
# 说明:新文件夹已经进入SVN版本管理体系

# 文件目录
$path = 'D:\\KS\\2019-BP\\KS-Code'
# 获取文件名
$dir = invoke-expression "dir $path *.sql"

foreach($_ in $dir)

	if($_.Name -notmatch "脚本") 
		
		# 路径,考虑空格异常,故前后加引号
		$oldpath = '"' + $path + '\\' + $_.Name + '"'
		$newpath = '"' + $path + '\\增加字段\\' + $_.Name + '"'
		
		# svn重命名命令: svn rename CURR_PATH NEW_PATH
		$cmd = "svn rename $oldpath $newpath"
		
		# 调用命令
		invoke-expression $cmd
	

说明

以上PowerShell脚本相关功能点说明:

  • invoke-expression将字符串当作脚本执行,即执行动态powershell脚本
  • 双引号字符串,出现变量名($variable)时会自动解析
  • 字符串本身含双引号的表示,上述方法是用单引号包起来(’"’),除此之外,还有两种方法:
    • 和sql一样,引号内的引号数量要加倍,如"""“代表一个双引号”
    • 用内容引号前加转义字符`,这样引号内的引号,就不用加倍了,"`""

以上是关于SVN批量移动文件,并保留版本日志的主要内容,如果未能解决你的问题,请参考以下文章

C# 批量处理文件(SVN版本控制版)

C# 批量处理文件(SVN版本控制版)

如何批量重写 SVN 日志?

HTML5培训机构技术文档 深度剖析版本管理工具

svn能看删除日志吗

svn怎么上传文件