我不希望任何目录被命名build
或dist
进入我的 SVN,无论它在树中有多深。
这可能吗?在 git 我只是把
build
dist
在我.gitignore
的根,它递归地忽略。我如何用 svn 做到这一点?请不要告诉我在每个父目录上做一个 propset ...
我不希望任何目录被命名build
或dist
进入我的 SVN,无论它在树中有多深。
这可能吗?在 git 我只是把
build
dist
在我.gitignore
的根,它递归地忽略。我如何用 svn 做到这一点?请不要告诉我在每个父目录上做一个 propset ...
从 subversion 1.8 开始,现在有svn:global-ignores
一个像递归一样工作的属性svn:ignore
(所以在你的顶级目录中设置它)
svn propset
--recursive
作为一个选项,所以你可以这样做,有两个缺点:
svn:ignore
添加新目录时设置属性这是不可能的。Subversion 中只有两种忽略机制,svn:ignore
(它是非递归的)和global-ignores
(它不是特定于存储库的)。
这对我有用:
svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
添加到您的 ~/.subversion/config 或 /etc/subversion/config 文件中:
[miscellany]
global-ignores = build dist
可以通过从版本控制中删除目录来忽略 build 和 dist 目录。诀窍是使用 --keep-local 选项将目录保留在工作副本中。例如:
svn rm dist --keep-local
svn ci -m'removed build directory from version control'
该目录将不再被 subversion 跟踪,但它仍将存在于您的工作副本中以保存编译器输出等。
干杯,乔
例如文件夹结构:
Project/
Project/dist/
cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"
最好在忽略命令之前对 dist 内容进行 svn delete,这样对于分支,dist 将为空。
为我工作,今天测试。 这是解释它的页面
为了忽略所有存储库中的所有此类文件,您可以将 a 添加global-ignores
到每个用户的配置文件中。
在类 Unix 系统上,该区域显示为用户主目录中名为 .subversion 的目录。在 Win32 系统上,Subversion 创建一个名为 Subversion 的文件夹,通常位于用户配置文件目录的 Application Data 区域内
请参阅配置选项
不幸的是,没有针对每个存储库的选项来执行此操作。它基本上是每个用户或每个目录的,所以倍数svn:ignores
可能是要走的路,尽管它可能很烦人。
您首先必须移动到工作副本的顶部文件夹并在那里创建一个文件(例如 .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/
在 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 .
创建一个文件并将您的忽略添加到其中
入口列表:
file1
directory1
file2
etc...
然后应用以下命令
for n in directory; do svn propset svn:ignore -F ignore-list $n; done
directory 是您的目录的名称,您也可以对目录/子目录进行子分类。或使用 * 来记下您所在的当前目录。
这是假设你使用 bash 作为你的 shell
svn propset --recursive svn:ignore svn_ignore_rules .
其中 svn_ignore_rules 是一个包含忽略规则的文件——每行一个
当然,每次向仓库添加新目录时都必须重新运行它
svn_ignore_rules 也可以被认为是签入到 repo 中,以便其他对 repo 具有写访问权限的用户可以重用
cd parent_dir #包含要递归忽略的文件夹的目录 svn propedit svn:ignore 。#将打开svn-prop.tmp 登记文件夹 ^X 是 commit -m '忽略目标直接'
一种方法是向 pre-commit 或 post-commit 挂钩添加某种检查,但如果您不拥有 repo 服务器,请直接注意。
由于这个可能常见的问题似乎没有解决方案,我想分享我们的解决方案。正如其他人已经明确指出的那样,您可以使用该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 存储库中的解决方案,所以如果有人知道,您愿意分享吗?