【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

 

posted @ 2018-07-20 14:22  QiaoZhi  阅读(4525)  评论(0编辑  收藏  举报