我不希望任何名为build
或dist
的目录进入我的SVN,无论树有多深。
这可能吗?在git我只是把
build
dist
在我的.gitignore
根目录下,它会递归忽略。我怎么用svn做这个?请不要告诉我在每个父母的目录上做一个propset ...
答案 0 :(得分:49)
从subversion 1.8开始,现在有svn:global-ignores
属性,它的作用类似于svn:ignore
但递归(所以在你的顶级目录中设置它)
答案 1 :(得分:44)
svn propset
选择--recursive
,因此您可以执行此操作,但有两个缺点:
svn:ignore
属性答案 2 :(得分:41)
不可能这样做。 Subversion中只有两个忽略机制,svn:ignore
(非递归)和global-ignores
(不是特定于存储库)。
答案 3 :(得分:16)
这对我有用:
svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
答案 4 :(得分:12)
添加到〜/ .subversion / config或/ etc / subversion / config文件中:
[miscellany]
global-ignores = build dist
答案 5 :(得分:8)
可以通过从版本控制中删除目录来忽略构建和目录。诀窍是使用--keep-local选项将目录保留在工作副本中。例如:
svn rm dist --keep-local
svn ci -m'removed build directory from version control'
subversion将不再跟踪该目录,但它仍将存在于工作副本中以保存编译器输出等。
欢呼声, 乔
答案 6 :(得分:6)
例如文件夹结构:
Project/
Project/dist/
cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"
在ignore命令之前对dist内容进行svn删除是很好的,所以对于branches dist将是空的。
为我工作,今天进行测试。 Here is the page explaining it a bit
答案 7 :(得分:5)
为了忽略所有存储库中的所有此类文件,您可以向每个用户的配置文件添加global-ignores
。
在类Unix系统上,这个区域 显示为名为的目录 .subversion在用户的家中 目录。在Win32系统上, Subversion创建一个名为的文件夹 颠覆,通常在里面 用户的应用程序数据区域 个人资料目录
不幸的是,没有per-repository选项可以做到这一点。它基本上是每个用户或每个目录,所以多个svn:ignores
可能是要走的路,尽管它很烦人。
答案 8 :(得分:5)
首先必须移动到工作副本的顶层文件夹并在那里创建一个文件(例如.svnignore),您应该在其中放置您想要忽略的所有模式,例如(对于Android项目):< / p>
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/
答案 9 :(得分:4)
在subversion 1.8 over中,可以为当前存储库设置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 .
答案 10 :(得分:2)
创建一个文件并将忽略添加到其中
则会忽略列表:
file1
directory1
file2
etc...
然后应用以下命令
for n in directory; do svn propset svn:ignore -F ignore-list $n; done
目录是您的目录的名称,您可以对目录/子目录进行子分类。或者使用*来记录您所在的当前目录。
这假设您使用bash作为shell
答案 11 :(得分:2)
svn propset --recursive svn:ignore svn_ignore_rules .
其中svn_ignore_rules是一个包含忽略规则的文件 - 每行一个
当然,每次向repo添加新目录时都必须重新运行它
svn_ignore_rules也可以被视为已检入仓库,可由具有对仓库的写入权限的其他用户重新使用
答案 12 :(得分:1)
cd parent_dir #the directory containing folder to be ignored recursively svn propedit svn:ignore . #will open up svn-prop.tmp enlist folder(s) ^X Y commit -m 'ignore targeted direcoty'
答案 13 :(得分:0)
一种方法是在提交前或提交后挂钩添加某种检查,但如果您不拥有repo服务器则直接注意。
答案 14 :(得分:0)
由于似乎没有解决这个可能常见的问题,我想分享我们的解决方案。正如其他人已经明确指出的那样,您可以使用svn:ignore
属性,这适用于单个目录(因此不适用于新目录),或者您使用适用于单个用户的global-ignores
(但不属于存储库)。
为了让生活更轻松,我创建了一个名为Settings.Svn.reg
的reg文件,并将其添加到存储库的根目录中。现在每个人都可以双击这个regfile一次,并完成设置。
REGEDIT4
[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"
我真的很感激SVN存储库中的解决方案,所以如果有人知道,你愿意分享吗?