SVN:递归地忽略一些目录

Pau*_*jan 102 svn version-control ignore

我不希望任何命名的目录builddist进入我的SVN,无论它在树中有多深.

这可能吗?在git我刚刚放

build
dist
Run Code Online (Sandbox Code Playgroud)

在我.gitignore的根部,它递归地忽略.我怎么用svn做这个?请不要告诉我在每个父母的目录上做一个propset ...

小智 54

从subversion 1.8开始,现在有一个svn:global-ignores属性,svn:ignore但是递归地工作(所以在你的顶级目录上设置它)

  • 我有点困惑 - `~/.subversion/config` 文件中有 `global-ignores`,还有 *inheritable* `svn:global-ignores` 属性设置在 SVN 存储库的目录中作为`svn:ignore` - 你能提供这些不同选项的摘要以及它们如何比较吗?`--recursive` 标志如何影响它们? (3认同)
  • 我已完成自己的研究,并在此质量检查答案中公布了我的发现:http://stackoverflow.com/a/86052/159145 (2认同)

Mic*_*ner 44

svn propset需要--recursive作为一个选项,这样你就可以做到这一点,有两个缺点:

  1. 你必须检查整个存储库(或至少其中的所有目录),和
  2. 您必须记住svn:ignore在添加新目录时设置属性


Kev*_*eid 41

这是不可能的.Subversion中只有两种忽略机制svn:ignore(非递归)和global-ignores(不是特定于存储库).

  • 评论者:正如提问者所说:"请不要告诉我在每个父母的领导上做一个专家......". (9认同)
  • svn propset --recursive svn:ignore svn_ignore_rules.其中svn_ignore_rules是一个包含忽略规则的文件 - 每行一个 (7认同)
  • 现在可以在Subversion 1.8中使用 (4认同)
  • 'svn propset --recursive svn:ignore --file svn_ignore_rules.' 对于我的svn-1.7.6,否则你会递归地忽略名为'svn_ignore_rules'的文件[编辑:按照下面评论中的'wytten'] (3认同)

Ste*_*art 16

这对我有用:

 svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
Run Code Online (Sandbox Code Playgroud)

  • 感谢这一点,效果很好......顺便说一下,我发现忽略*.txt和*.pdf的唯一方法是将这些模式放在一个文件中,然后使用'svn propset --file'选项 (2认同)

jsp*_*cal 12

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

[miscellany]
global-ignores = build dist
Run Code Online (Sandbox Code Playgroud)


小智 8

通过从版本控制中删除目录,可以忽略构建和分配.诀窍是使用--keep-local选项将目录保留在工作副本中.例如:

svn rm dist --keep-local
svn ci -m'removed build directory from version control'
Run Code Online (Sandbox Code Playgroud)

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

欢呼,乔


小智 6

例如文件夹结构:

Project/
Project/dist/

cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"
Run Code Online (Sandbox Code Playgroud)

在ignore命令之前对dist内容进行svn删除是很好的,因此对于branches dist将为空.

为我工作,今天进行测试. 这是一个解释它的页面


Bla*_*rad 5

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

在类Unix系统上,此区域在用户的主目录中显示为名为.subversion的目录.在Win32系统上,Subversion创建一个名为Subversion的文件夹,通常位于用户配置文件目录的Application Data区域内

请参阅配置选项

不幸的是,没有每个存储库选项来执行此操作.它基本上是每个用户或每个目录,所以多重svn:ignores可能是要走的路,尽管它很烦人.


Luc*_*rea 5

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

bin
gen
proguard
.classpath
.project
local.properties
Thumbs.db
*.apk
*.ap_
*.class
*.dex
Run Code Online (Sandbox Code Playgroud)

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

svn propset svn:ignore -R -F .svnignore .
Run Code Online (Sandbox Code Playgroud)

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

svn rm --keep-local <path>
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*Zhu 5

在 subversion 1.8 以上,可以为当前存储库设置 global-ignores。

svn propset svn:global-ignores build .
svn propset svn:global-ignores dist .
Run Code Online (Sandbox Code Playgroud)

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

build
dist
Run Code Online (Sandbox Code Playgroud)

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

svn propset svn:global-ignores -F .svnignore .
Run Code Online (Sandbox Code Playgroud)