Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 在subversion中递归忽略整个源代码树中的文件_Svn_Tortoisesvn_Version Control - Fatal编程技术网

Svn 在subversion中递归忽略整个源代码树中的文件

Svn 在subversion中递归忽略整个源代码树中的文件,svn,tortoisesvn,version-control,Svn,Tortoisesvn,Version Control,我对颠覆并不陌生,但到目前为止,我一直使用乌龟,从未使用过通信线路。我的问题是,我如何忽略来自整个源而不仅仅是根的所有文件,如*.o 例如,如果我有以下文件: /myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o 如果svn在根目录中propedit svn:ignore“.”并添加*.o,它将忽略myfile.o,但不会忽略/folder1/myfile2.o、/folder1/folder1.

我对颠覆并不陌生,但到目前为止,我一直使用乌龟,从未使用过通信线路。我的问题是,我如何忽略来自整个源而不仅仅是根的所有文件,如*.o

例如,如果我有以下文件: /myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o

如果svn在根目录中propedit svn:ignore“.”并添加*.o,它将忽略myfile.o,但不会忽略/folder1/myfile2.o、/folder1/folder1.1/myfile3.o、/folder2/myfile4.o。是否有一种方法可以为整个项目添加*.o(我不能为整个存储库添加,我知道这是可以做到的,因为这个项目与许多其他项目都在存储库中)

如果我需要澄清,请告诉我。谢谢

编辑

下面提供的原始答案是在Subversion v1.8之前给出的,它引入了一种设置默认存储库级别ignore(称为
svn:global ignores
)的方法,而无需覆盖/替换根目录和每个子目录上的
svn:ignore
属性。从1.8开始,实现所需功能的最佳方法是调用以下命令(归功于tmanhante):

在早期版本(以及更高版本)中,您仍然可以使用下面原始答案中指出的方法;但是,请注意,这假设您可以替换/覆盖每个子目录上的
svn:ignore
属性。。。对于小型/新建的存储库来说,这可能很好,但如果您有一个大型/旧的存储库,其中一些子目录可能具有独立的
svn:ignore
属性,而您不希望覆盖这些属性,那么这可能不是您想要的

原始答案

您可以将“-R”或“-recursive”选项与“svn propset”一起使用,如下命令所示:

svn propset svn:ignore '*.o' . --recursive svn propset svn:忽略“*.o”--递归的 更多信息

对于这两种情况,可以使用以下命令了解有关svn propset的更多信息:

svn help propset svn帮助道具集
只是一个更新:Subversion 1.8.0引入了继承属性和存储库指定的配置(用于自动道具和忽略),也可以在本例中使用

您可以在根路径中设置新的
svn:global ignores
属性。它将“仅影响以属性设置路径为根的子树”

此新属性的设置类似于
svn:ignore

    svn propset svn:global-ignores '*.o' .

如@hackmaster.a在评论中所指出的,更多信息可在上找到。

,在接受的答案中给出的示例具有删除所有以前的
svn:ignore
设置的副作用。使用
propedit
而不是
propset
也不起作用

递归添加多个文件的正确方法是将它们的名称放在一个列表中,在
svn:ignore
属性集中用
svn propset svn:ignore“[list]”分隔开新行

例如:

    svn propset svn:ignore -R "*.pkl
    > *.class
    > Thumbs.db
    > data.tmp" .
当然,
只是shell提示


此命令将递归地更改当前目录及其每个子文件夹的
svn:ignore
属性。

谢谢,效果很好!我仍然掌握着他们文档的窍门。正如我所说的,到目前为止,我只使用了乌龟,这为您提供了很好的对话框和解释:)。您还有--force
svn propset svn:ignore“*.pdb*.db”c:\portal\--recursive--force
如果您有其他svn:ignore设置,则接受的答案将清除它们。你可能想知道我想附和hackmaster的警告并感谢他提供的链接解决方案。仅供参考,我选择了位于~/.subversion/config中的全局配置解决方案。hackmaster的注释应该固定在这个线程的顶部。“可接受的答案”,其中包含对存储库(至少部分存储库)进行包装的说明,这不是一件好事;)使用1.7.4挥拍出所有svn:ignore我真的想知道如何使用自动道具设置它?我已经添加了
bin
debug
obj
svn:global ignores
,但之后,当我
svn-propget svn:global ignores
时,它只返回
obj
(最后一个),如何忽略多个文件/文件夹@卢克:原因是您多次调用
svnpropset
命令。每次调用
propset
时,它都会用传递的新值替换属性的先前值。您需要做的是在单个
propset
调用中添加所有忽略规则,或者使用而不是
propset
。有关详细信息,请查看该命令的文档。
    svn propset svn:ignore -R "*.pkl
    > *.class
    > Thumbs.db
    > data.tmp" .