IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> SVN如何删除文件名包含空格的文件 -> 正文阅读

[开发工具]SVN如何删除文件名包含空格的文件

前言

SVNGit 两个常用的版本管理工具都有 addcommit 命令,但是这两个命令的含义是不同的,git add 命令添加的是变化的文件,不管是增加的文件、删除的文件还是更新的文件,使用 git add 命令之后都可以放到暂存区,而 svn add 命令只能影响新增和变化的文件,对原在库中现已删除的文件没有影响,想要真正删除文件需要在执行 svn commit 命令之前先执行 svn delete 命令。

SVN删除文件

SVN 删除文件需要指定文件名字,而使用在一些自动化脚本中时,被删除的文件都是其他脚本自动删除的,要想获得这些文件的名字,可以利用 svn st 命令来查询,然后搭配管道再使用 svn del 命令来删除这些文件。

$ svn st
!       test/A.txt
!       test/B.txt
!       test/C Blank.txt
!       test/DD.txt
M       test/E.txt
?       test/F.txt
A       test/G.txt

svn st 命令的结果对每个变化文件显示一行,第一列是文件状态,第二列及后面的部分是文件名

  • !:表示已经删除的文件
  • M:表示文件内容发生变化的文件
  • ?:表示一个新文件,不在原版本库中
  • A:表示本次新增的文件

要想删除文件只需要把 ! 开头的文件删除就可以了,常规命令如下:

svn st | grep ^! | awk '{print " --force "$2}' | xargs -r svn del

这个命令就是要生成 svn del --force test/A.txt 命令然后执行,这样就能达到删除文件的目的了

基于这个目的,一般自动化部署的机器上的svn提交命令如下:

svn st | grep ^! | awk '{print " --force "$2}' | xargs -r svn del
svn add . --no-ignore --force
svn commit -m "build message"

被删除的文件名带空格

上述命令能处理绝大部分的情况,但是如果被删除的文件中包含空格,那么执行命令时就会报错:

$ svn st | grep ^! | awk '{print " --force "$2}' | xargs -r svn del
svn: E125001: 'test/C' does not exist

为什么会报错的呢?就是说因为文件 test/C Blank.txt 的名字中包含了空格,使用 awk '{print " --force "$2}' 把空格后半部分的文件名丢掉了,所以只要处理一下这种情况就可以了,处理命令如下:

svn st | grep ^! | awk '{$1="";print $0 }' | awk '$1=$1' | awk '{print " --force ""\""$0"\""}' | xargs -r svn del
  • svn st 显示个文件状态
  • grep ^! 过滤出原在版本库中但现已删除的文件
  • awk '{$1="";print $0 }' 去掉每行信息中第一列的状态值
  • awk '$1=$1' 去掉数据开头和结尾的空格
  • awk '{print " --force ""\""$0"\""}' 拼接文件名,并在前后添加引号,--force "test/C Blank.txt"
  • xargs -r svn del 利用管道传递文件名将文件删除

总结

  • svn st 命令可以查询 SVN 当前目录下各个文件的状态
  • svn del 命令用于删除原版本库中的文件
  • 如果待删除的文件名包含空格可使用 svn st | grep ^! | awk '{$1="";print $0}' | awk '$1=$1' | awk '{print " --force ""\""$0"\""}' | xargs -r svn del

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

互发声明并非只是打打嘴架,应该是在相互试探着对方的底线,各自盘算着多方的利益,双方也都是极其聪明的人,背后都有强大的团队提供支持,博弈啊博弈,每一方都会选择对自己最有利的行动~

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:04:10  更:2022-08-06 11:05:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/22 2:36:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码