【SVN】命令行忽略不必要的文件和文件夹
SVN命令参考: https://www.cnblogs.com/wlsxmhz/p/5775393.html
我们需要明白命令行设置忽略文件和文件夹是通过设置svn:ignore属性设置的,propset(ps,pset)用于设置属性的值,propget(pg,pget)用于获取属性的值。用法如下:
svn pg svn:ignore #获取属性值
svn ps svn:ignore 'value' path #设置属性值
一、忽略单个目录
1.我们创建一个文件夹并且忽略该文件夹;
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ mkdir test1 #创见目录 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn status #查看状态 M . ? test1 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn propset svn:ignore 'test1' ./ 忽略该文件夹 property 'svn:ignore' set on '.' Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn status M .
测试
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ cd test1/ #进入被忽略的文件夹 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject/test1 $ echo xx >> xx.txt #创建一个文件 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject/test1 $ cat xx.txt xx Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn status #查看状态 M .
此后无论如何修改都不会管理test1文件夹,如果我们想加到索引里面,可以设置svn:ignore属性
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn propget svn:ignore #获取属性的值 test1 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn ps svn:ignore '' ./ #清空svn:ignore的值 property 'svn:ignore' set on '.' Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn status M . ? test1
2.有时候我们可能想提交文件夹 忽略文件夹内容(前提是文件夹未在版本控制内)
svn propset svn:ignore '*' test svn ci -m 'adding "test1" and ignore its contents.'
3、若已经创建了文件夹,并加入了版本控制,现在想忽略这个文件夹,但要保持文件夹的内容:
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn export test1/ ./test1-tmp #导出一个不受版本控制的目录 Export complete. Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ ls test.txt test1/ test1-tmp/ test2/ Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn rm test1 #删除目录 D test1 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn ci -m 'delete test1' #提交
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn status ? test1-tmp Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ mv ./test1-tmp/ ./test1 #重名名文件 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ ls test.txt test1/ test2/ Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn ps svn:ignore 'test1' ./ #将新文件忽略掉 property 'svn:ignore' set on '.' Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn status
对于没有加入版本控制的,可以直接设定成ignore,但不能对加入版本控制的文件和目录这么做。解决办法是,先删除再ignore, 上面的命令其实也是这个方式,只不过有导出再mv的过程。
二、忽略多个目录
如果有多个目录需要删除,逐个目录按照上面步骤操作,那么操作完成后,前面操作的目录执行svn st又会显示成 ? 状态,而最后执行的那个目录才不会显示出来,所以说这样前面的目录都白弄了
如果有多个目录需要同时忽略,需要这样弄
比如说我们加了几个目录:
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn st M . ? d1 ? d2 ? d3 ? d4 ? test1
方法一:给属性设置多个值
现在我们忽略掉上面的d1,d2,d3文件
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn ps svn:ignore " #设置 > d1 > d2 > d3 > " . property 'svn:ignore' set on '.' Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn st M . ? d4 ? test1 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn pg svn:ignore d1 d2 d3
注意:写值的时候不要一下将两个引号写完,否则回车会直接执行命令。
svn:ignore的值每行一个
方法二:通配符
属性值也可以使用通配符,但是通配符不可以加在末尾,只能加在前面,如下用通配符过滤掉d2目录:
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn ps svn:ignore 'd*' . #通配符加在末尾会报错 'd2' is not under version control svn: E155010: The node 'C:\Users\Administrator\Desktop\ww\danger\myProject\d2' was not found. Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn ps svn:ignore '*2' . #通配符加在前面不会报错 property 'svn:ignore' set on 'test2' property 'svn:ignore' set on '.' Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn st M . ? d1 ? d3 ? d4 ? test1 M test2 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/ww/danger/myProject $ svn pg svn:ignore d2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2017-07-20 Spring+SpringMVC+mybatis整合以及注解的使用(三)
2017-07-20 springMVC入门(一)
2017-07-20 Spring+SpringMVC+Mybatis整合(二)