SVN:recursion地忽略一些目录
我不希望任何名为build
或dist
目录进入我的SVN,无论它在树中有多深。
这可能吗? 在混帐我只是把
build dist
在我的.gitignore
在根,它recursion地忽略。 我如何做到这一点与SVN? 请不要告诉我每个父母的目录
从Subversion 1.8开始,现在有了svn:global-ignores
属性,它像svn:ignore
一样工作,但recursion地(在顶级目录中设置)
svn propset
需要 – --recursive
作为选项,所以你可以做到这一点,有两个缺点:
- 你必须检查整个存储库(或者至less在其中的所有目录),和
- 你必须记得当你添加一个新的目录的时候设置
svn:ignore
属性
这是不可能的。 在Subversion中只有两个忽略机制, svn:ignore
(非recursion)和global-ignores
(不是特定于存储库)。
这适用于我:
svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
添加到你的〜/ .subversion / config或/ etc / subversion / config文件中:
[miscellany] global-ignores = build dist
通过从版本控制中删除目录,可以忽略构build和扩展。 诀窍是使用–keep-local选项将目录保留在工作副本中。 例如:
svn rm dist --keep-local svn ci -m'removed build directory from version control'
该目录将不再被subversion跟踪,但它仍然会在你的工作副本中保存编译器输出等。
欢呼,乔
为了忽略所有存储库中的所有这些文件,您可以为每个用户的configuration文件添加一个global-ignores
。
在类Unix系统上,这个区域在用户的主目录中显示为一个名为.subversion的目录。 在Win32系统上,Subversion创build一个名为Subversion的文件夹,通常位于用户configuration文件目录的Application Data区域内
请参阅configuration选项
不幸的是,没有每个库的选项来做到这一点。 它基本上是每个用户或每个目录,所以多个svn:ignores
是可能的方式去,尽可能恼人。
例如文件夹结构:
Project/ Project/dist/ cd Project svn propset svn:ignore '*' dist/ svn ci -m "content of dist ignored"
在ignore命令之前做一个svn删除dist内容是很好的,所以对于分支dist将是空的。
为我工作,今天testing。 这个页面解释了一下
您首先必须移动到工作副本的顶层文件夹,然后在那里创build一个文件(比如说.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/
创build一个文件并添加你的忽略
则会忽略列表:
file1 directory1 file2 etc...
然后应用以下命令
for n in directory; do svn propset svn:ignore -F ignore-list $n; done
目录是你的目录的名字,你可以分类以及目录/子目录。 或者使用*来logging你当前的目录。
这是假设你正在使用bash作为你的shell
svn propset --recursive svn:ignore svn_ignore_rules .
其中svn_ignore_rules是包含忽略规则的文件 – 每行一个
当然,你必须重新运行它,每次你添加一个新的目录到你的仓库
svn_ignore_rules也可以被认为是检入到repo中,可以被其他有repo的写入权限的用户重新使用
在Subversion 1.8中,可以为当前的存储库设置全局忽略。
svn propset svn:global-ignores build . svn propset svn:global-ignores dist .
您也可以创build一个名为.svnignore的文件夹,并写入条件。
build dist
记住每行一个条件,设置build / *或dist / debug是徒劳的。 然后执行命令:
svn propset svn:global-ignores -F .svnignore .
一种方法是在提交前或提交后的钩子上添加某种检查,但是如果您不拥有repo服务器,则直接提示。
由于似乎没有解决这个可能共同的问题,我想分享我们的解决scheme。 正如其他人已经明确,您可以使用svn:ignore
属性,这适用于单个目录(因此不适用于新的目录),或者使用global-ignores
适用于单个用户(但不属于到存储库)。
为了让生活更容易,我创build了一个名为Settings.Svn.reg
的reg文件,并将其添加到存储库的根目录。 现在每个人都可以双击这个regfile一次,并完成设置。
REGEDIT4 [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany] "global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"
我真的很感谢SVN仓库中的一个解决scheme,所以如果有人知道,你会不会喜欢分享它?
cd parent_dir#包含要被忽略的文件夹的目录recursion svn propedit svn:忽略。 #将打开svn-prop.tmp 登记文件夹 ^ X ÿ 承诺-m'忽视有针对性的direcoty'