据我了解,忽略使用SVN的目录的内容的命令是:
svn propset svn:ignore "*" tmp/
这应该在tmp
目录的内容上设置ignore属性,对吗?换句话说,通配符设置为tmp目录中的ignore值。麻烦的是,这是我的Windows盒子上发生的事情:
> svn propset svn:ignore "*" ./tmp
property 'svn:ignore' set on 'app'
property 'svn:ignore' set on 'config'
property 'svn:ignore' set on 'db'
property 'svn:ignore' set on 'doc'
property 'svn:ignore' set on 'lib'
property 'svn:ignore' set on 'log'
property 'svn:ignore' set on 'nbproject'
property 'svn:ignore' set on 'public'
[etc...]
那不对。我做错了什么(或者可能是疯了),还是我的Windows上的svn坏了?
有些说明:
> svn --version
svn, version 1.5.2 (r32768)
compiled Aug 28 2008, 19:05:34
更新: 我刚刚在Windows XP计算机上试过这个,它按预期工作。因此,这是Vista特定问题,或者我的Vista配置存在问题。还有其他人能够在Vista上重现这个问题吗?我刚刚发现Vista未被列为CollabNet downloads page支持的平台之一。
答案 0 :(得分:8)
看起来微软凭借其无限的智慧,拥有changed the behavior of wildcard expansion in Windows Vista:
因此,不是传入转义的通配符,而是扩展它:
在Win 95,98,2000,XP下,应用程序按预期运行:当参数类似于«* .txt»时,它会进行通配符扩展,当参数类似于«“* .txt”»时,它不会。在Windows Vista下,通配符扩展始终发生,或者说,否则,双引号不会抑制它。
Collabnet forum 会对此问题进行进一步讨论。
答案 1 :(得分:5)
命令应该 按预期工作。
*
正在全球化,它不应该做。所以,你正在运行:
svn propset svn:ignore [value] app config db doc lib log nbproject public ... tmp
(因为app是受影响的第一个文件夹,我猜它之前还有另一个文件夹)。
svn propset svn:ignore tmp -F .svnignore
svn propset svn:ignore tmp
。这应该打开您的默认文本编辑器(如果已配置),以允许您编写和保存列表。回复评论
由于您现在正在尝试更正设置,propedit
和propdel
可以正常工作 - 尤其是如果目录中有其他更改。
但是,如果您不需要担心任何其他更改(请检查svn st
),使用svn revert -R
和svn propset
会更快。
答案 2 :(得分:3)
这不回答你的svn问题,但为什么你试图忽略目录的所有内容?在我看来,如果你想在构建中的某个点上建立一个临时目录,你应该将目录作为构建的一部分,而不是从存储库中存在。
你是否试图忽略它,因为它已经存在并且你无法删除它?
无论如何,从我的unix命令行开始,这对我来说在一个名为tmp的指令中忽略未跟踪的文件
$ svn --version svn, version 1.5.1 (r32289) compiled Aug 28 2008, 10:00:12 $ svn propset svn:ignore '*' tmp
Windows会引用你的报价吗?
答案 3 :(得分:3)
听起来像为windows编译的svn.exe二进制文件正在进行内置的globbing,这在unix构建中通常不会这样做,因为unix shell在构造命令时应该进行通配线。我会考虑这种意想不到的行为,特别是因为你似乎无法解决这个问题。
正如其他人所指出的那样,您可以使用*
选项提供-F
,也可以在文本编辑器中以交互方式提供。{/ p>
但是,我认为你可能不会以最简单的方式解决这个问题。为了忽略整个子目录,我会做这样的事情:
svn propset svn:ignore tmp .
这会在svn:ignore
(当前目录,.
的父目录)上设置tmp/
属性,告诉它忽略tmp
子目录及其下的所有内容。< / p>
答案 4 :(得分:2)
您使用的是哪种版本的颠覆?
我在Windows上尝试过1.5.2,它只更改了tmp目录中的属性:
[C:\Temp\temp] :svn propset svn:ignore "*" tmp/
property 'svn:ignore' set on 'tmp'
和
[C:\Temp\temp] :svn proplist *
svn: Skipping argument: '.svn' ends in a reserved name
Properties on 'tmp':
svn:ignore
答案 5 :(得分:1)
对于使用“-F”替代方法在shell脚本中使用的单行,只需尝试:
echo "*" > .svnignore && svn propset svn:ignore <path> -F .svnignore && rm .svnignore
答案 6 :(得分:0)
尝试没有尾部斜杠。此外,必须将tmp目录本身添加到存储库中。
答案 7 :(得分:0)
使用GUI SVN客户端是合理的(除非你是受虐狂!)。如果你在Windows上TortoiseSVN应该是你的第一个停靠港。右键单击要忽略的文件,然后单击“TortoiseSVN - &gt; Properties”。在属性对话框中,您可以通过单击“名称”的下拉箭头并选择“svn:ignore”来忽略整个目录。然后在值框中只输入“*”。这当然没有引号。