代码之家  ›  专栏  ›  技术社区  ›  Paul Tarjan

SVN:递归忽略一些目录

  •  98
  • Paul Tarjan  · 技术社区  · 16 年前

    我不想要任何名为 build dist 不管树有多深都要进入我的SVN。

    这有可能吗?我刚把钱投进去

    build
    dist
    

    在我的 .gitignore 在根目录,它递归地忽略。如何使用SVN?请不要告诉我在每个父目录上做一个propset…

    15 回复  |  直到 9 年前
        1
  •  48
  •   twin    11 年前

    到第1.8版,现在 svn:global-ignores 像这样工作的财产 svn:ignore 但是递归地(所以在顶级目录中设置它)

        2
  •  44
  •   Michael Hackner    16 年前

    svn propset --recursive 作为一种选择,你可以这样做,有两个缺点:

    1. 您必须签出整个存储库(或者至少签出其中的所有目录),并且
    2. 你必须记住设置 svn:ignore 每当添加新目录时属性
        3
  •  41
  •   Kevin Reid    16 年前

    这是不可能的。颠覆只有两种忽视机制, svn:ignore (非草书)和 global-ignores (不特定于存储库)。

        4
  •  16
  •   Stewart    9 年前

    这对我很有用:

     svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
    
        5
  •  12
  •   jspcal    16 年前

    添加到~/.subversion/config或/etc/subversion/config文件:

    [miscellany]
    global-ignores = build dist
    
        6
  •  8
  •   jsharit    15 年前

    可以通过从版本控制中删除目录来忽略build和dist目录。技巧是使用--keep-local选项将目录保留在工作副本中。例如:

    svn rm dist --keep-local
    svn ci -m'removed build directory from version control'
    

    Subversion将不再跟踪该目录,但它仍将在您的工作副本中,以保存编译器输出等。

    干杯, 乔

        7
  •  6
  •   marian    14 年前

    例如,文件夹结构:

    Project/
    Project/dist/
    
    cd Project
    svn propset svn:ignore '*' dist/
    svn ci -m "content of dist ignored"
    

    在ignore命令之前对dist内容执行svn删除是很好的,因此对于分支,dist将为空。

    为我工作,今天测试。 Here is the page explaining it a bit

        8
  •  5
  •   Blair Conrad    16 年前

    为了忽略所有存储库中的所有此类文件,可以添加 global-ignores 到您的每用户配置文件。

    在类Unix系统上,这个区域 显示为名为 .subversion在用户家中 目录。在Win32系统上, Subversion创建名为 颠覆,通常在 用户的应用程序数据区域 配置文件目录

    Configuration Options

    不幸的是,没有针对每个存储库的选项来执行此操作。基本上是每个用户,或者每个目录,所以 svn:ignores 可能是一条路,尽管可能很烦人。

        9
  •  5
  •   Luccas Correa    11 年前

    首先,您必须移动到工作副本的顶部文件夹,并在其中创建一个文件(例如.svnignore),在该文件夹中,您应该放置所有要忽略的模式,例如(对于Android项目):

    bin
    gen
    proguard
    .classpath
    .project
    local.properties
    Thumbs.db
    *.apk
    *.ap_
    *.class
    *.dex
    

    然后运行以下命令(请记住,您必须位于工作副本的顶部文件夹中):

    svn propset svn:ignore -R -F .svnignore .
    

    这仅适用于尚未受版本控制的文件夹和文件。如果希望正在进行版本控制的文件夹(或文件)也开始被忽略,请通过运行以下命令将其从版本控制中删除:

    svn rm --keep-local <path>
    

    从这篇解释一切的伟大文章中得到了所有这些: http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/

        10
  •  4
  •   John Zhu    10 年前

    在Subversion 1.8 over中,可以为当前存储库设置全局忽略。

    svn propset svn:global-ignores build .
    svn propset svn:global-ignores dist .
    

    还可以创建一个名为.svnignore的文件夹,并写入条件。

    build
    dist
    

    记住每行有一个条件,设置build/*或dist/debug是徒劳的。 然后执行命令:

    svn propset svn:global-ignores -F .svnignore .
    
        11
  •  2
  •   jncc99    13 年前

    创建一个文件并将忽略项添加到其中

    输入列表:

    file1 
    directory1
    file2
    etc...
    

    然后应用以下命令

    for n in directory; do svn propset svn:ignore -F ignore-list $n; done
    

    目录是目录的名称,您还可以对目录/子目录进行子分类。或者使用*记下当前目录。

    这是假设您使用bash作为外壳

        12
  •  2
  •   georg    13 年前
    svn propset --recursive svn:ignore svn_ignore_rules .
    

    其中svn_ignore_rules是一个包含忽略规则的文件——每行一个

    当然,每次向repo添加新目录时都必须重新运行它。

    svn_-ignore_规则也可以被视为签入回购协议,以便对回购协议具有写访问权限的其他用户重新使用。

        13
  •  1
  •   Moin Haidar    13 年前
    cd parent_dir包含要递归忽略的文件夹的目录
    SVN属性SVN:忽略。#将打开SVN-PROP.TMP
    登记文件夹
    ^ x
    Y
    提交-m“忽略目标目录”
    
        14
  •  0
  •   8DH    15 年前

    一种方法是向提交前或提交后挂钩添加某种检查,但如果您不拥有repo服务器,则直接注意到这一点。

        15
  •  0
  •   martinstoeckli    14 年前

    由于这个可能很常见的问题似乎没有解决方案,我想和大家分享一下我们的解决方案。其他人已经明确表示,您可以使用 svn:ignore 属性,这适用于单个目录(因此不适用于新目录),或者您使用 global-ignores 它适用于单个用户(但不属于存储库)。

    为了让生活更轻松,我创建了一个名为 Settings.Svn.reg 并将其添加到存储库的根目录中。现在每个人都可以双击这个regfile一次,并完成设置。

    REGEDIT4
    
    [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
    "global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"
    

    我非常感谢SVN存储库中的解决方案,所以如果有人知道,您愿意分享它吗?