繁体   English   中英

propset svn的问题:忽略 - 可能与Vista有关

[英]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件事:

  1. 指定列表文件: svn propset svn:ignore tmp -F .svnignore
  2. 只需指定路径: svn propset svn:ignore tmp 这应该打开您的默认文本编辑器(如果已配置),以允许您编写和保存列表。

回复评论

由于您现在正在尝试更正设置,因此propeditpropdel可以正常工作 - 尤其是如果您在目录中进行了其他更改。

但是,如果你没有任何其他的改变需要担心(检查svn st ),使用svn revert -Rsvn 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM