windows propset svn:ignore出现问题-可能与Vista相关

jmp7cifd  于 2023-03-04  发布在  Windows
关注(0)|答案(8)|浏览(176)

据我所知,使用SVN忽略目录的 content 的命令如下:

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...]

这是不对的,我是不是做错了什么(或者疯了),或者我的svn在Windows上坏了?

一些注解:

> svn --version svn, version 1.5.2 (r32768) compiled Aug 28 2008, 19:05:34

***更新:***我刚刚在Windows XP计算机上尝试了此方法,结果正常。因此,这可能是Vista特有的问题,也可能是我的Vista配置有问题。是否有其他人能够在Vista上重现此问题?我刚刚发现CollabNet downloads page上未将Vista列为受支持的平台之一。

yebdmbv4

yebdmbv41#

看起来微软,在他们的无限智慧,有changed the behavior of wildcard expansion in Windows Vista
因此,它不是传入转义通配符,而是进行扩展:
在Win 95、98、2000、XP下,应用程序按预期运行:当参数类似于 .txt时,它会进行通配符扩展,而当参数类似于".txt”时,它不会。在Windows Vista下,通配符扩展总是发生,或者换句话说,双引号不会抑制它。

Collabnet论坛将进一步讨论这一问题。

r7xajy2e

r7xajy2e2#

命令***应该***按预期工作。
*正在进行全局绑定,这是不应该的。因此,您正在运行:
svn propset svn:ignore [value] app config db doc lib log nbproject public ... tmp
(由于app是第一个受影响的文件夹,我猜在它之前还有另一个文件夹)。
你可以尝试两件事:
1.指定列表文件:svn propset svn:ignore tmp -F .svnignore
1.只需指定路径:svn propset svn:ignore tmp。这应该会打开默认的文本编辑器(如果已配置),允许您写入和保存列表。

答复评论

由于您现在正尝试更正设置,propeditpropdel可以正常工作--特别是在目录中有其他更改的情况下。
但是,如果您不需要担心任何其他更改(选中svn st),那么使用svn revert -Rsvn propset会更快。

72qzrwbm

72qzrwbm3#

在我看来,svn.exe二进制文件在windows环境下编译时会执行内置的globbing操作,而这在unix环境下是不可能的,因为unix shell在命令行编译时会执行globbing操作,我认为这是意料之外的行为,尤其是你似乎无法绕过globbing操作.
正如其他人所指出的,您可以使用-F选项或在文本编辑器中交互地提供*
然而,我认为你可能不会用最简单的方法来做这件事。为了忽略整个子目录,我会做这样的事情:

svn propset svn:ignore tmp .

这将设置.(当前目录,tmp/的父目录)上的svn:ignore属性,该属性告诉它忽略tmp子目录及其下的所有内容。

ioekq8ef

ioekq8ef4#

这并没有回答你的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是否在拖延您的报价?

cwtwac6a

cwtwac6a5#

您使用的是哪个版本的subversion?
我在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
jk9hmnmh

jk9hmnmh6#

要在使用“-F”替代选项的shell脚本中使用一行程序,只需尝试以下操作:

echo "*" > .svnignore && svn propset svn:ignore <path> -F .svnignore && rm .svnignore
ovfsdjhp

ovfsdjhp7#

尝试不带斜杠,并且,tmp目录本身必须添加到存储库中。

jogvjijk

jogvjijk8#

使用GUI SVN客户端是合理的(除非你是个受虐狂!).如果你使用的是Windows TortoiseSVN应该是你的第一个调用端口.右键点击你想忽略的文件,然后点击“TortoiseSVN -〉属性”.在属性对话框中你可以通过点击“名称”的下拉箭头并选择“svn:ignore”来忽略整个目录.然后在值框中输入“*”代表全部.当然,这都是没有引号的.

相关问题