当前位置:网站首页>SVN如何删除文件名包含空格的文件
SVN如何删除文件名包含空格的文件
2022-08-02 10:09:00 【AlbertS】
前言
SVN
和 Git
两个常用的版本管理工具都有 add
和 commit
命令,但是这两个命令的含义是不同的,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
互发声明并非只是打打嘴架,应该是在相互试探着对方的底线,各自盘算着多方的利益,双方也都是极其聪明的人,背后都有强大的团队提供支持,博弈啊博弈,每一方都会选择对自己最有利的行动~
边栏推荐
- 38岁女儿不恋爱没有稳定工作老母亲愁哭
- Rear tube implements breadcrumb function
- qq邮箱日发5万邮件群发技术(qq邮箱怎样定时发送邮件)
- 行为型模式-策略模式
- 使用较广泛的安全测试工具有哪些?
- List-based queuing and calling system
- 如何选择一块真正“好用的、性能高”的远程控制软件
- The love-hate relationship between C language volatile keyword, inline assembly volatile and compiler
- Getting Started with SCM from Scratch (1): Summary of Background Knowledge
- 向量点积(Dot Product),向量叉积(Cross Product)
猜你喜欢
利用二维数据学习纹理三维网格生成(CVPR 2020)
【技术分享】OSPFv3基本原理
iNFTnews | Seeing the two sides of the metaverse, what is the true Internet and the Internet of value?
第十七章 Excel操作
向量点积(Dot Product),向量叉积(Cross Product)
21年毕业转行软件测试,从0收入到月薪过万,我真的很幸运...
软件测试X模型
HikariCP数据库连接池,太快了!
牛客刷题——剑指offer(第三期)
Supervised learning of Li Hang's "Statistical Learning Methods" Notes
随机推荐
One Summer of Open Source | How to Quickly Integrate Log Modules in GO Language Framework
软件测试的基本理论知识(软件测试面试基础知识)
2022.7.25-7.31 AI行业周刊(第108期):值钱比赚钱更重要
Pytorch's LSTM parameters explained
HikariCP数据库连接池,太快了!
一款优秀的中文识别库——ocr
软件测试X模型
【术语科普】关于集成工作台那些难懂的词儿,看这篇秒懂!
行为型模式-策略模式
R language ggplot2 visualization: based on the fill parameter and shape parameter in the aes function, custom draw a grouped line chart and add data points (scatter points), use the legend.position fu
迭代器失效问题
R language ggplot2 visualization: use the ggbarplot function of the ggpubr package to visualize the stacked bar plot, the lab.pos parameter specifies the position of the numerical label of the bar cha
练习16-两道模拟题
The ggline function of the R language ggpubr package visualizes grouped line graphs, the add parameter is mean_se and dotplot to visualize line graphs of different level averages, and adds error bars
8月份的.NET Conf 活动 专注于 .NET MAUI
MySql tens of millions of paging optimization, fast insertion method of tens of millions of data
8月份的.NET Conf 活动 专注于 .NET MAUI
LayaBox---TypeScript---声明合并
链表的实现
图形化矩阵,矩阵到底长什么样?