SVN:recursion地忽略一些目录

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

这可能吗? 在混帐我只是把

 build dist 

在我的.gitignore在根,它recursion地忽略。 我如何做到这一点与SVN? 请不要告诉我每个父母的目录

从Subversion 1.8开始,现在有了svn:global-ignores属性,它像svn:ignore一样工作,但recursion地(在顶级目录中设置)

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

  1. 你必须检查整个存储库(或者至less在其中的所有目录),和
  2. 你必须记得当你添加一个新的目录的时候设置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'