当前位置:网站首页>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
互发声明并非只是打打嘴架,应该是在相互试探着对方的底线,各自盘算着多方的利益,双方也都是极其聪明的人,背后都有强大的团队提供支持,博弈啊博弈,每一方都会选择对自己最有利的行动~
边栏推荐
- 第十六章 协程
- The realization of the list
- 8月份的.NET Conf 活动 专注于 .NET MAUI
- MySql tens of millions of paging optimization, fast insertion method of tens of millions of data
- MySql千万级分页优化,快速插入千万数据方法
- QT专题:组合会话框和文本编辑器
- 用正向迭代器封装实现反向迭代器
- Implementation of mysql connection pool
- R语言时间序列数据算术运算:使用log函数将时间序列数据的数值对数化、使用diff函数计算对数化后的时间序列数据的逐次差分(计算价格的对数差分)
- sqlmap安装教程用w+r打开(sqlyog安装步骤)
猜你喜欢
Naive Bayesian Method of Li Hang's "Statistical Learning Methods" Notes
The perceptron perceptron of Li Hang's "Statistical Learning Methods" notes
QT专题:事件机制event基础篇
npm ERR! 400 Bad Request - PUT xxx - Cannot publish over previously published version “1.0.0“.
yolov7创新点
The realization of the list
链表的实现
Spearman's correlation coefficient
Shell脚本实现多选DNS同时批量解析域名IP地址(新更新)
This article takes you to understand the commonly used models and frameworks of recommender systems
随机推荐
李航《统计学习方法》笔记之朴素贝叶斯法
js防抖函数和函数节流的应用场景
MySql tens of millions of paging optimization, fast insertion method of tens of millions of data
Facebook's automated data analysis solution saves worry and effort in advertising
软件测试的基本理论知识(软件测试面试基础知识)
第十六章 协程
【OpenCV】-霍夫变换
图形化矩阵,矩阵到底长什么样?
Use the scrapy to climb to save data to mysql to prevent repetition
迭代器失效问题
如何安装dosbox(pycharm详细安装教程)
如何选择一块真正“好用的、性能高”的远程控制软件
基于列表的排队与叫号系统
The perceptron perceptron of Li Hang's "Statistical Learning Methods" notes
Pytorch's LSTM parameters explained
LayaBox---TypeScript---模块
转转反爬攻防战
身为程序猿——谷歌浏览器的这些骚操作你真的废吗!【熬夜整理&建议收藏】[通俗易懂]
R语言ggplot2可视化:基于aes函数中的fill参数和shape参数自定义绘制分组折线图并添加数据点(散点)、使用theme函数的legend.position函数配置图例到图像右侧
The k-nearest neighbor method in the notes of Li Hang's "Statistical Learning Methods"