SVN设置忽略文件和文件夹


被一个小小的设置征服的恐惧,遂花了一把时间,捣鼓,弄懂它。

TortoiseSVN 是 Subversion 版本控制系统的一个客户端

先查看一波 TortoiseSVN 帮助文档

在线链接:https://tortoisesvn.net/docs/release/TortoiseSVN_zh_CN/index.html
或者在本地的文件夹 -> “右键” -> TortoiseSVN -> Help

查看第4.14小节:忽略文件和目录(Ignoring Files And Directories)
得知:已版本控制的文件或目录不能够忽略!
在这里插入图片描述

查看第4.14.1小节:忽略列表中的模式匹配(Pattern Matching in Ignore Lists)
得知:不应该在模式中包含路径信息。模式匹配的目标是纯文本的文件名和文件夹名!
在这里插入图片描述


为什么要提及上面两点呢?
因为上面里两点很关键,不管是在 IDE 中设置忽略文件还是在客户端设置,都要遵守这个要求才会生效。

下面,以客户端的操作为例,说明如何"设置忽略文件/目录"
万变不离其宗,你自然会知道怎么在 IDE 中设置。

当我们打开一个通过svn导出的目录时,能看见文件的svn状态,如下:
在这里插入图片描述

其实忽略文件无非两种情况,一种是 未版本控制的文件,一种是 已版本控制的文件,下面一一说明。

忽略 未版本控制的文件

情景一:项目编译时产生的临时文件,如 target 目录
情景二:项目导入时 IDE 时产生的配置文件,如 .eclipse / .idea / .setting

当我们想忽略这些文件或目录时,在 IDE 上操作和在客户端操作是一样的。
直接"右键"文件或者目录 -> -> Add to ignore list(客户端) / 添加至svn:ignore(Eclipse) / Ignore(IDEA),搞定。注意:前提是“未版本控制的文件”
客户端为例,见下图:
在这里插入图片描述


你是否遇到一种尴尬,"右键"文件,但是 Ignore 的选项是灰色的无法点击。
你知道为什么吗?
回到文章开头,我们提到的已版本控制的文件或目录不能够忽略! 这下知道了吗?唯一的解释就是这个文件已经加入了版本控制。

忽略 已版本控制的文件

这种情况一般就是,别人把整个工程目录,包括IDE的配置目录啊,target目录啊等等一股脑都提交到svn上去,你导出到本地时,还没写一行代码,就已经有一堆文件提示被修改了。像target目录每次编译都会生成新的文件,提交时都会提示,强迫症表示很烦。我们想要忽略它们,那问题就变成了“忽略已版本控制的文件”,情况有所不同,见图:
在这里插入图片描述

“未版本控制的文件”加入 ignore list 没什么好说的,但“已版本控制的文件”需要先 unversion(取消版本控制)才能加入 ignore list。
为什么呢?
还是那句话,已版本控制的文件或目录不能够忽略!

unversion 就是取消版本控制,因为已版本控制的文件或目录不能够忽略! ,所以就需要先取消版本控制,让其变成“未版本控制的文件”,这样问题就变成了忽略未版本控制的文件

以上是客户端的操作,在IDE中是没有这个选项的。

如果是在IDE中操作,因为其没有 unversion 这个操作,只能通过 删除该文件/目录,提交commit,在本地新建一个新的文件并设置将其加入 ignore list,再commit(将ignore list提交)。这样,万事大吉,别人提交的时候也会应用这个 ignore list,再也不怕别人把target之类的文件传到svn了。
(温馨提示:删错了别慌,revision一下又回来了)


以上是设置单个文件/目录的忽略方式,或者说是有限个文件的操作。
当我们要全局应用忽略策略时,就要用另一种方式:使用模式匹配配置忽略(设置全局忽略、设置项目级忽略策略、设置目录级忽略策略)

使用模式匹配配置忽略

忽略配置支持正则表达式,这就要提到文章开头的第二点,不应该在模式中包含路径信息。模式匹配的目标是纯文本的文件名和文件夹名!
所以,正则用于匹配文件名或者目录名。就算配置成了路径也是无效的。(我猜你试过配置 target/** 等等想要忽略某个目录的文件,哈哈,这样真的没有作用)

设置全局忽略

直接在客户端的setting设置,本机的所有svn项目都生效。
在这里插入图片描述

设置项目级忽略策略

在项目根目录,右键空白 --> New -> Other -> 新建一个“svn:global-ignores”属性,这样整个项目所有匹配项都会被忽略。
在这里插入图片描述
在这里插入图片描述

设置目录级忽略策略

选中一个文件/目录,右键 --> New -> Other -> 新建一个“svn:ignore”属性,这样目录下所有匹配项都会被忽略。
在这里插入图片描述


说来道去,没提到IDE怎么设置。归根到底,通过IDE进行操作,其实也是这些逻辑。
我墙裂建议直接使用 客户端进行忽略文件的设置。

结论

说这么多,听懂了最好,听不懂的话,你要记住最最最重要的两个点:

  • 已版本控制的文件或目录不能够忽略!!!

  • 不应该在模式匹配中包含路径信息。模式匹配的目标是纯文本的文件名和文件夹名!!!

IDE的相关设定都会涉及到这两个点,当你纠结于为啥配置不生效时,请对号入座检查是否中坑。

refer:
https://blog.csdn.net/hemingwang0902/article/details/6904205


end

在使用SVN时,忽略文件设置无效通常是由以下几个原因导致的: 1. 设置语法错误:在忽略文件设置中,语法错误可能会导致设置无效。例如,文件夹文件路径不正确或缺少必要的字符。正确的设置语法应该是使用正斜杠(/)表示目录,使用星号(*)或问号(?)表示通配符。如果设置语法错误,SVN无法正确解析,并且设置将无效。 2. 设置未保存:在进行忽略文件设置后,必须记得保存设置。如果没有保存,那么设置将不会生效。保存设置的方法通常是在SVN客户端中点击“应用”或“保存”按钮。 3. 文件已经被版本控制:如果要忽略文件已经被添加到版本控制中,那么设置将无效。SVN不会忽略已经添加到版本控制的文件。解决这个问题的方法是,首先将文件从版本控制中移除(使用“svn remove”命令),然后再进行忽略文件设置。 4. 设置被覆盖:在某些情况下,忽略文件设置可能会被其他设置覆盖,导致设置无效。例如,如果在上级目录中已经设置忽略规则,并且该规则包括子目录,那么子目录中的忽略规则将不会生效。要解决这个问题,需要检查父级目录中的设置并进行相应修改。 总结来说,当SVN忽略文件设置无效时,我们需要检查设置的语法是否正确、是否保存了设置文件是否已经被版本控制、是否有其他设置覆盖了当前设置等。通过排查这些可能的原因,我们可以找到并解决问题,使忽略文件设置生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值