109

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

这可能吗?在 git 我只是把

build
dist

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

4

15 回答 15

63

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

于 2015-02-10T07:11:54.003 回答
44

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

  1. 您必须检查整个存储库(或至少其中的所有目录),并且
  2. 您必须记住在svn:ignore添加新目录时设置属性
于 2010-01-10T17:54:13.460 回答
41

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

于 2010-01-09T23:24:27.013 回答
16

这对我有用:

 svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
于 2012-02-09T12:53:20.853 回答
15

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

[miscellany]
global-ignores = build dist
于 2010-01-09T23:19:00.560 回答
9

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

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

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

干杯,乔

于 2011-03-24T20:20:45.283 回答
6

例如文件夹结构:

Project/
Project/dist/

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

最好在忽略命令之前对 dist 内容进行 svn delete,这样对于分支,dist 将为空。

为我工作,今天测试。 这是解释它的页面

于 2012-08-15T09:47:03.767 回答
5

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

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

请参阅配置选项

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

于 2010-01-09T23:18:22.183 回答
5

您首先必须移动到工作副本的顶部文件夹并在那里创建一个文件(例如 .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/

于 2014-10-14T22:51:36.830 回答
5

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

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 .
于 2015-11-13T01:20:19.520 回答
2

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

入口列表:

file1 
directory1
file2
etc...

然后应用以下命令

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

directory 是您的目录的名称,您也可以对目录/子目录进行子分类。或使用 * 来记下您所在的当前目录。

这是假设你使用 bash 作为你的 shell

于 2013-01-24T07:02:25.750 回答
2
svn propset --recursive svn:ignore svn_ignore_rules .

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

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

svn_ignore_rules 也可以被认为是签入到 repo 中,以便其他对 repo 具有写访问权限的用户可以重用

于 2013-03-16T23:30:20.703 回答
1
cd parent_dir #包含要递归忽略的文件夹的目录
svn propedit svn:ignore 。#将打开svn-prop.tmp
登记文件夹
^X
是
commit -m '忽略目标直接'
于 2013-03-26T06:56:07.950 回答
0

一种方法是向 pre-commit 或 post-commit 挂钩添加某种检查,但如果您不拥有 repo 服务器,请直接注意。

于 2011-03-10T12:27:36.007 回答
0

由于这个可能常见的问题似乎没有解决方案,我想分享我们的解决方案。正如其他人已经明确指出的那样,您可以使用该svn:ignore属性,这适用于单个目录(因此不适用于新目录),或者您可以使用该属性global-ignores适用于单个用户(但不属于存储库)。

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

REGEDIT4

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

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

于 2011-11-16T10:51:01.650 回答