当前位置:网站首页>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
互发声明并非只是打打嘴架,应该是在相互试探着对方的底线,各自盘算着多方的利益,双方也都是极其聪明的人,背后都有强大的团队提供支持,博弈啊博弈,每一方都会选择对自己最有利的行动~
边栏推荐
- Pytorch's LSTM parameters explained
- 软件测试的基本理论知识(软件测试面试基础知识)
- 行为型模式-策略模式
- 转转反爬攻防战
- 链表的实现
- LayaBox---TypeScript---声明合并
- 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
- qq邮箱日发5万邮件群发技术(qq邮箱怎样定时发送邮件)
- Facebook's automated data analysis solution saves worry and effort in advertising
- R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化堆叠的柱状图(stacked bar plot)、lab.pos参数指定柱状图的数值标签的位置,lab.col参数指定数值标
猜你喜欢

软件测试与质量 之白盒测试

The perceptron perceptron of Li Hang's "Statistical Learning Methods" notes

【云原生】快出数量级的性能是怎样炼成的?就提升了亿点点

Verilog的随机数系统任务----$random

The heavyweights are coming!Spoilers for the highlights of the Alibaba Cloud Life Science and Intelligent Computing Summit

全新荣威RX5,27寸大屏吸引人,安全、舒适一个不落

周鸿祎称微软抄袭 360 安全模式后发文否认;英特尔CEO基辛格回应市值被AMD超越:股价下跌是咎由自取|极客头条...

Do you agree with this view?Most businesses are digitizing just to ease anxiety

You Only Hypothesize Once: 用旋转等变描述子估计变换做点云配准(已开源)

Using the TCP protocol, will there be no packet loss?
随机推荐
图形化矩阵,矩阵到底长什么样?
LayaBox---TypeScript---声明合并
阿里CTO程立:阿里巴巴开源的历程、理念和实践
神通数据库,批量插入数据的时候失败
从零开始Blazor Server(5)--权限验证
迭代器失效问题
软件测试与质量 之白盒测试
Facebook's automated data analysis solution saves worry and effort in advertising
软件测试之发现和解决bug
开源一夏 | GO语言框架中如何快速集成日志模块
2022.7.25-7.31 AI行业周刊(第108期):值钱比赚钱更重要
周鸿祎称微软抄袭 360 安全模式后发文否认;英特尔CEO基辛格回应市值被AMD超越:股价下跌是咎由自取|极客头条...
R语言使用ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、设置theme主题参数自定义表格中表头内容的填充色(使用colnames.style参数)
Two-dimensional array piecemeal knowledge sorting
Application scenarios of js anti-shake function and function throttling
In the whole development of chi V853 board tried to compile QT test
npm ERR! 400 Bad Request - PUT xxx - Cannot publish over previously published version “1.0.0“.
行为型模式-模板方法模式
c#反射和特性
要长续航还是更安全?海豹与深蓝SL03对比导购