随着svn:ignore属性,有没有我可以指定我想在此基础上,我不想忽略忽略模式有什么办法? 换句话说,我想不顾一切,但在名为.xyz结尾的文件。 我怎么会去这样做(如果它甚至有可能)?
我已经探索一种选择是犯我想要的一切进行版本控制,然后设置的svn:忽略目录属性为“*”,从而意味着没有其他的文件,但我已经承诺将进行版本控制。 这是我能拿出最好的,但如果我做过需要添加其他文件为版本,我不得不进行多次承诺......一个删除了svn感觉在那个肮脏的:忽略属性,另一添加/提交新文件(S),然后第三个改变的svn:忽略回“*”。
你的意见?
没有,没有独家配套像你描述。 本文列出了模式匹配的可能性。 它不限于:
-
?
- 匹配任何单个字符 -
*
-匹配任何字符串,包括空串 -
[
-开始通过终止的字符类定义]
,用于匹配字符的子集
类似的问题被问已经在这里 。
看一看http://www.thoughtspark.org/node/38 。 很明显,你可以用“!” 在字符组否定它的意义。 所以,如果你想忽略除非.java结尾的文件的一切,设置以下模式的svn:忽视:
*[!j][!a][!v][!a]
*.java?*
这是我知道的唯一的解决办法。 即使被忽略,虽然你可以明确地添加文件。
您将需要补充的是设置在所有子目录虽然。
# Create a repository with property ignore *
[wlynch@orange ~] cd /tmp
[wlynch@orange /tmp] svnadmin create foo
[wlynch@orange /tmp] svn co file:///tmp/foo co
Checked out revision 0.
[wlynch@orange /tmp] cd co
[wlynch@orange co] svn propset svn:ignore \* .
property 'svn:ignore' set on '.'
# Create 3 files
[wlynch@orange co] touch a
[wlynch@orange co] touch b
[wlynch@orange co] touch c
# We can add all 3 of these files in one transaction
[wlynch@orange co] svn status
M .
[wlynch@orange co] svn add a
A a
[wlynch@orange co] svn add b
A b
[wlynch@orange co] svn status
M .
A a
A b
[wlynch@orange co] svn add c
A c
[wlynch@orange co] svn ci
Sending .
Adding a
Adding b
Adding c
Transmitting file data ...
Committed revision 1.
这是我的设置bin
文件夹svn:ignore
属性匹配除了APK文件的所有内容:
*[!a][!p][!k]
*a[!p][!k]
*ap[!k]
如果将有充分的RegExp的支持,你可以使用负回顾后,但是这很少反正实现(例如未在JavaScript)和效率低下。
我和下面的作品摆脱的其他建议一些怪癖。
*.?
*.??
*.???
*.[!j]???
*.?[!a]??
*.??[!v]?
*.???[!a]
*.?????*
通过线说明的行如下:
- 忽略了一个字母的扩展名的一切
- 忽略了两个字母扩展一切
- 忽略具有三个字母的扩展一切
- 忽略具有四个字母的扩展都在扩展的第一个字母是不是Ĵ
- 忽略具有四个字母的扩展都在扩展的第二个字母不是
- 忽略具有四个字母的扩展都在扩展的第三个字母不是V
- 忽略具有四个字母的扩展都在延伸的第四封信是不是
- 忽略具有五个字母的扩展或更多的东西
限制:
- 这也将阻塞的.java为此目录
- 遗憾的是我没能忽略文件不带扩展名,因为这也将阻止目录。
好了,我不知道如果我错过了什么,但你可以使用任何你想要的方式:
svn propset svn:ignore "*~" .
您可以查看:
svn propget svn:ignore .
另一种方法是使用别名/脚本提交时,可以做复杂的分析。
最好的解决办法,我觉得用我自己是完全的源文件的版本树从构建树分开。 这样你就不会产生在你的版本目录树的事情。 然后,你只能使用svn:ignore
无视文本编辑器,例如产生简单的假象。
编辑:
对不起我的第一个解决方案的错误,我误解你的帖子。 其他两个途径似乎相关,即使不是你想要什么?