• 【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:UsersAdministratorDesktopwwdangermyProjectd2' 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
  • 相关阅读:
    相机
    播放音乐
    录音
    NSURLConnection下载
    UITableView
    UIPageControl
    UIScrollView
    ajax禁止浏览器缓存
    java替换word2003
    退出登录
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/9341228.html
Copyright © 2020-2023  润新知