微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

propset svn问题:忽略 – 可能与Vista相关

据我了解,使用SVN忽略目录内容的命令是这样的:

svn propset svn:ignore "*" tmp/

这应该设置tmp目录的内容的忽略属性,对不对? 换句话说,通配符被设置为tmp目录上的忽略值。 麻烦的是,这是我的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破?

一些说明:

自动导入Mercurial存储库(例如SVN Externals)

在Windows和Linux中使用相同(locale)git repo的最佳方法

使用gitosis来pipe理大量存储库的最简单(和最简单的)方法是什么?

Git预提交挂钩不在Windows上运行

Mercurial – 对服务器信息库进行更改时cpu占用率高

本机正在运行Windows Vista SP1

通过龟这个属性设置完美。

我正在使用Windows的Collabnet二进制文件

> svn --version

svn,version 1.5.2 (r32768)

compiled Aug 28 2008,19:05:34

更新:我刚刚在Windows XP机器上尝试过,它按预期工作。 所以无论这是一个Vista的具体问题,或者我的Vistaconfiguration有问题。 有没有人能够在Vista上重现这个问题? 我刚刚发现Vista未被列为CollabNet下载页面支持的平台之一。

git的Windows 7期待开发null找不到错误

将Github远程添加到GitKraken

Git在Windows中工作吗?

任何人都可以为开发人员推荐一个好的备份“系统”吗?

从服务器删除Git LFS存储?

该命令应该按照您的预期工作。

*正在变成globbed,它不应该这样做。 所以,你正在运行:

svn propset svn:ignore [value] app config db doc lib log nbproject public ... tmp

(因为应用程序是第一个受到影响的文件夹,我猜这里面还有另外一个文件夹)。

2件事你可以尝试:

指定一个列表文件: svn propset svn:ignore tmp -F .svnignore

只需指定路径: svn propset svn:ignore tmp 。 这应该打开您的认文本编辑器(如果已配置)以允许您编写并保存列表。

回复评论

既然你现在正在尝试纠正这个设置, propedit和propdel会正常工作 – 特别是如果你在目录中有其他的更改。

但是,如果你没有任何其他的变化(检查svn st ),使用svn revert -R和svn propset会更快。

看起来,微软以其无限智慧已经改变了Windows Vista中通配符扩展的行为 :

所以不是传入的通配符,而是扩展:

在Win 95,98,2000,XP下,应用程序按预期运行:参数类似«* .txt»时,通配符扩展,当参数类似于“”* .txt“»时,通配符扩展。 在Windows Vista下,通配符扩展始终发生,或者,否则,双引号不会压制它。

Collabnet论坛上有关于这个问题的进一步讨论。

这不能回答你的svn问题,但你为什么要忽略一个目录的所有内容? 在我看来,如果你想在构建中的某个时刻使用一个临时目录,那么你应该把这个目录作为构建的一部分,而不是从存储库中存在。

你想忽略它,因为它已经在那里,你不能删除它?

无论如何,从我的UNIX命令行,这对我来说忽略了一个名为tmp的diretory中未跟踪的文件

$ svn --version

svn,版本1.5.1(r32289)

2008年8月28日10:00:12编译

$ svn propset svn:忽略'*'tmp

Windows是否引用了你的引用?

这听起来像为Windows编译的svn.exe二进制文件正在执行内置的通配符,这是它通常不会在unix版本上做的事情,因为unix shell在构建命令行的时候会做globbing。 我会考虑这种意外的行为,尤其是因为你似乎无法解决这个问题。

正如其他人所指出的,您可以使用-F选项提供* ,或者在文本编辑器中交互式提供。

不过,我想你可能不会以最简单的方式去解决这个问题。 对于忽略整个子目录,我会做这样的事情:

svn propset svn:ignore tmp .

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

你正在使用哪个版本的颠覆?

我在Windows上尝试了1.5.2,它只改变了tmp目录的属性

[C:Temptemp] :svn propset svn:ignore "*" tmp/ property 'svn:ignore' set on 'tmp'

和:

[C:Temptemp] :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 – >属性”。 在属性对话框中,您可以通过单击“名称”的下拉箭头并选择“svn:ignore”来忽略整个目录。 然后在值框中输入“*”。 当然这全是没有引号的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐