[英]Problem with propset svn:ignore - possibly Vista related
据我了解,使用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下载页面上受支持的平台之一。
看起来微软以其无限的智慧改变了Windows Vista中通配符扩展的行为 :
因此,不是传入的转义通配符,而是扩展它:
在Win 95,98,2000,XP下,应用程序按预期运行:当参数类似于«* .txt»时,它会进行通配符扩展,当参数类似于«“* .txt”»时,它不会。 在Windows Vista下,通配符扩展始终发生,或者说,否则,双引号不会抑制它。
在Collabnet论坛上有关于这个问题的进一步讨论。
该命令应该按预期工作。
*
正在全球化,它不应该做。 所以,你正在运行:
svn propset svn:ignore [value] app config db doc lib log nbproject public ... tmp
(因为app是受影响的第一个文件夹,我猜它之前还有另一个文件夹)。
你可以试试2件事:
svn propset svn:ignore tmp -F .svnignore
svn propset svn:ignore tmp
。 这应该打开您的默认文本编辑器(如果已配置),以允许您编写和保存列表。 回复评论
由于您现在正在尝试更正设置,因此propedit
和propdel
可以正常工作 - 尤其是如果您在目录中进行了其他更改。
但是,如果你没有任何其他的改变需要担心(检查svn st
),使用svn revert -R
和svn propset
会更快。
这不回答你的svn问题,但为什么你试图忽略目录的所有内容? 在我看来,如果你想在构建中的某个点上建立一个临时目录,你应该将该目录作为构建的一部分而不是它从repo中存在。
您是否试图忽略它,因为它已经存在并且您无法删除它?
无论如何,从我的unix命令行,这对我来说在一个名为tmp的指令中忽略了未跟踪的文件
$ svn --version svn, version 1.5.1 (r32289) compiled Aug 28 2008, 10:00:12 $ svn propset svn:ignore '*' tmp
Windows会引用你的报价吗?
听起来像为windows编译的svn.exe二进制文件正在进行内置的globbing,这在unix构建中通常不会这样做,因为unix shell在构造命令行时应该进行通配。 我会考虑出乎意料的行为,特别是因为你似乎无法解决这个问题。
正如其他人指出的那样,您可以使用-F
选项提供*
,或者在文本编辑器中以交互方式提供。
但是,我认为你可能不会以最简单的方式解决这个问题。 为了忽略整个子目录,我会做这样的事情:
svn propset svn:ignore tmp .
这将设置svn:ignore
属性.
(当前目录, tmp/
的父tmp/
),它告诉它忽略tmp
子目录及其下面的所有内容。
您使用的是哪个版本的颠覆?
我在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
要使用“-F”替代方法在shell脚本中使用单行程,只需尝试以下操作:
echo "*" > .svnignore && svn propset svn:ignore <path> -F .svnignore && rm .svnignore
尝试没有尾部斜杠。 此外,必须将tmp目录本身添加到存储库中。
使用GUI SVN客户端是合理的(除非你是一个受虐狂!)。 如果你在Windows上TortoiseSVN应该是你的第一个停靠港。 右键单击要忽略的文件,然后单击“TortoiseSVN - > Properties”。 在属性对话框中,您可以通过单击“名称”的下拉箭头并选择“svn:ignore”来忽略整个目录。 然后在值框中只输入“*”。 这当然没有引号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.