使用windows批处理,解决多个svn库提交和更新的需求

一 项目背景

虽然现在git用的越来越多,但我还是经常使用svn,因为使用Visual Svn server可以很容易搭建属于自己的svn库服务器,用于同步多台设备。现在租用一个云服务器,价格不高,用于搭建svn服务器足足够了。

但是要经常进入多个svn库进行提交和更新,效率还是有些低了,于是想起,写个windows批处理,点击一次,就完成所有工作,不就可以大大提高效率了吗?

二 准备工作

想要使用批处理完成svn命令,就需要安装svn时,选择命令行工具,如下:

因为默认是不安装的。

接下来就可以编写批处理脚本了。

三 具体步骤

1 创建批处理文件

比如,在e盘创建一个DoSvn.bat文件。

再创建一个DirList.txt,用于保存要处理的svn库目录。

2 编写批处理

在DoSvn.bat,编写代码如下:

shell 复制代码
@echo off
setlocal enabledelayedexpansion

rem 设置根目录
set root_dir=e:\

rem 循环更新目录并提交
for /f "delims=" %%a in ('type "e:\DirList.txt"') do (
	echo -------------------------------------------------------
	rem 显示当前目录
	echo %%a
	cd "%%a"
	
	rem ---------------------------------
	rem 1、提交新增的内容
	
	svn add * --force
	svn ci -m " "
	
	rem ---------------------------------
	rem 2、提交已删除的内容
	
	set "deleted_files="
	
	rem 使用svn status命令获取状态,解析内容
	for /f "tokens=1* delims= " %%i in ('svn status') do (
		rem 如果第1列为!,将文件保存到删除列表
		if "%%i"=="!" (
			rem echo %%j
			set "deleted_files=%%j !deleted_files!"
		)
	)

	if defined deleted_files (
		rem 删除文件
		svn delete !deleted_files!
		
		rem 提交更改
		svn commit -m " "
		echo deleted: !deleted_files!
	) 
	
	rem ---------------------------------
	rem 3、更新
	
	svn update	
	
	cd %root_dir%	
	
    rem 确保删除 delFiles.txt 文件,且不提交
    if exist delFiles.txt (
        del delFiles.txt
    )
)
pause

endlocal

3 编写目录列表内容

e:\DirList.txt为目录列表,如下:

shell 复制代码
E:\code.c
......

需要输入完整路径。

4 测试

刚开始,可以仅在DirList.txt中,输入一个路径,用于测试。

全部正常后,再写多个路径,完成批量路径处理。

注意事项

  1. 此前的批处理,因为先更新,后提交,导致删除的文件,又被恢复了。如下:

    之后改成先提交再更新的方式,解决了该问题。
  2. 初次运行脚本时,有时候会等比较久,或许提示需要先清除。后面就好了。

五 总结

编写这个批处理脚本,完成的主要功能如下:

  1. 遍历一个包含目录路径的文本文件。
  2. 对每个目录执行 SVN 操作,包括添加新文件、删除已缺失文件,提交这些更改。
  3. 更新目录以获取最新的版本。
    有了这个脚本,就不用每次手动挨个进目录点击提交和更新了,效率杠杠滴。
    这个批处理脚本,我也上传到资源了,赚个积分,实际上大家手动写文件也行,下不下载的无所谓。
    点击如下链接即可。
    svn配置管理:批量处理多个svn库目录,包括新增文件、提交删除文件、更新文件
相关推荐
say_fall7 分钟前
精通C语言(2.结构体)(内含彩虹)
c语言·开发语言·windows
长源Gingko18 分钟前
Windows中在QTCreator中调试,提示缺少debug information files问题的解决
windows·qt
white-persist36 分钟前
MCP协议深度解析:AI时代的通用连接器
网络·人工智能·windows·爬虫·python·自动化
影子24012 小时前
Windows Server2016 服务器安装JDK,一直卡在“应用程序正在为首次使用作准备,请稍候” ,导致jdk安装失败解决方案
运维·服务器·windows·jdk
wan5555cn3 小时前
Windows 11系统鼠标键盘被禁用问题的全面解决方案
windows·笔记·深度学习·计算机外设
生物小卡拉3 小时前
R脚本——Deseq2差异表达分析--v1.0
windows·经验分享·笔记·学习·信息可视化·数据分析
love530love5 小时前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
java之迷14 小时前
Windows环境下,源码启动+本地部署和启动开源项目Ragflow失败SRE模块
windows·docker·开源
摩羯座-1856903059416 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
zym大哥大1 天前
高并发内存池
服务器·数据库·windows