据我所知,使用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上坏了?
一些注解:
- 计算机正在运行Windows Vista SP1
- 通过Tortoise设置此属性非常有效。
- 我使用的是Collabnet binaries for 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列为受支持的平台之一。
8条答案
按热度按时间yebdmbv41#
看起来微软,在他们的无限智慧,有changed the behavior of wildcard expansion in Windows Vista:
因此,它不是传入转义通配符,而是进行扩展:
在Win 95、98、2000、XP下,应用程序按预期运行:当参数类似于 .txt时,它会进行通配符扩展,而当参数类似于".txt”时,它不会。在Windows Vista下,通配符扩展总是发生,或者换句话说,双引号不会抑制它。
Collabnet论坛将进一步讨论这一问题。
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
。这应该会打开默认的文本编辑器(如果已配置),允许您写入和保存列表。答复评论
由于您现在正尝试更正设置,
propedit
和propdel
可以正常工作--特别是在目录中有其他更改的情况下。但是,如果您不需要担心任何其他更改(选中
svn st
),那么使用svn revert -R
和svn propset
会更快。72qzrwbm3#
在我看来,svn.exe二进制文件在windows环境下编译时会执行内置的globbing操作,而这在unix环境下是不可能的,因为unix shell在命令行编译时会执行globbing操作,我认为这是意料之外的行为,尤其是你似乎无法绕过globbing操作.
正如其他人所指出的,您可以使用
-F
选项或在文本编辑器中交互地提供*
。然而,我认为你可能不会用最简单的方法来做这件事。为了忽略整个子目录,我会做这样的事情:
这将设置
.
(当前目录,tmp/
的父目录)上的svn:ignore
属性,该属性告诉它忽略tmp
子目录及其下的所有内容。ioekq8ef4#
这并没有回答你的svn问题,但是你为什么要忽略一个目录中的所有内容呢?在我看来,如果你想在构建的某个时候得到一个临时目录,你应该把这个目录作为构建的一部分,而不是从repo中得到.
您是否试图忽略它,因为它已经存在,您无法删除它?
无论如何,从我的unix命令行,这为我工作忽略未跟踪的文件在一个名为 tmp 的目录:
Windows是否在拖延您的报价?
cwtwac6a5#
您使用的是哪个版本的subversion?
我在Windows上试用了1.5.2,它只更改了tmp目录上的属性:
以及:
jk9hmnmh6#
要在使用“-F”替代选项的shell脚本中使用一行程序,只需尝试以下操作:
ovfsdjhp7#
尝试不带斜杠,并且,tmp目录本身必须添加到存储库中。
jogvjijk8#
使用GUI SVN客户端是合理的(除非你是个受虐狂!).如果你使用的是Windows TortoiseSVN应该是你的第一个调用端口.右键点击你想忽略的文件,然后点击“TortoiseSVN -〉属性”.在属性对话框中你可以通过点击“名称”的下拉箭头并选择“svn:ignore”来忽略整个目录.然后在值框中输入“*”代表全部.当然,这都是没有引号的.