使用svn:ignore属性,有没有一种方法可以根据我不想忽略的模式指定我想要忽略的内容?换句话说,我想忽略除了 .xyz结尾的文件之外的所有内容.我该怎么做呢(如果可能的话)?
我探索的一个选项是提交我想要版本化的所有内容,然后将目录上的svn:ignore属性设置为'*',这意味着没有其他文件,但我已经提交的内容将被版本化.这是我能想到的最好的,但它感觉很脏,如果我确实需要添加另一个文件作为版本,我必须进行多次提交...一个删除svn:ignore属性,另一个添加/提交新文件,然后第三个更改svn:忽略回'*'.
你的意见?
tom*_*mka 18
看看http://www.thoughtspark.org/node/38.显然你可以使用"!" 在角色群体中否定其含义.因此,如果要忽略除.java结尾的文件之外的所有内容,请将以下模式设置为svn:ignore:
*[!j][!a][!v][!a]
*.java?*
Run Code Online (Sandbox Code Playgroud)
这是我所知道的唯一解决方案.您可以显式添加文件,即使它们被忽略也是如此.
您需要在所有子目录上添加该设置.
# 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.
Run Code Online (Sandbox Code Playgroud)
这是我在属性bin文件夹上设置svn:ignore匹配除apk文件以外的所有内容:
*[!a][!p][!k]
*a[!p][!k]
*ap[!k]
Run Code Online (Sandbox Code Playgroud)
如果有完整的RegExp支持你可以使用负面的lookbehind,但这很少实现(例如不在JavaScript中)并且效率低下.