&引用;svn添加*”;甚至添加那些被忽略的文件

&引用;svn添加*”;甚至添加那些被忽略的文件,svn,ignore,Svn,Ignore,我使用svn add*将文件添加到svn中,它添加了配置文件,该文件肯定是添加为忽略的 lyuba@lyuba-laptop:/workspace/project$ svn propget svn:ignore .sass-cache config.js 什么会导致问题?您是否尝试提交config.js以查看它是否真的被忽略了?我认为,如果您特别告诉svn向版本控制添加一个文件,它将克服忽略问题。在UNIX和Linux中,如果您说 svn add * 然后shell将展开目录中的所有文件,程

我使用svn add*将文件添加到svn中,它添加了配置文件,该文件肯定是添加为忽略的

lyuba@lyuba-laptop:/workspace/project$ svn propget svn:ignore
.sass-cache
config.js

什么会导致问题?

您是否尝试提交config.js以查看它是否真的被忽略了?我认为,如果您特别告诉svn向版本控制添加一个文件,它将克服忽略问题。

在UNIX和Linux中,如果您说

svn add *
然后shell将展开目录中的所有文件,程序将看到与您键入的相同的内容

svn add file-a.txt file-b.txt file-c.txt
这意味着Subversion命令认为您已经明确列出了要添加的文件。在本例中,它将添加它,即使可能设置了
svn:ignore
属性

从(我的重点):

Subversion使用忽略模式来确定哪些文件不应作为较大的递归添加或导入操作的一部分扫入版本控制系统

我发现它包含了一个非常好的解决方案。由于答案实际上并没有回答这个问题,我不认为它是重复的。 简而言之,请使用unix工具的强大功能(在windows上与cygwin配合使用):


svn status | grep'?'| sed's/^.*/svn add/'| bash

超级老问题,但我刚才遇到了这个问题,我找到的解决方案没有在这里列出。阿德里安·史密斯的答案是正确的。我认为文档和SVN本身在5年内已经看到了很多更新。这是我在图书馆里找到的

即使设置了
svn:ignore
,如果在命令中使用shell通配符,也可能会遇到问题。在Subversion对Shell通配符进行操作之前,Shell通配符被扩展为一个明确的目标列表,因此运行
svn子命令*
就像运行
svn子命令file1 file2 file3…
。对于
svn add
命令,其效果类似于传递
--no ignore
选项。因此,不要使用通配符,而是使用
svn add--force.
对未版本的内容进行批量调度以进行添加。显式目标将确保当前目录不会因为已经处于版本控制之下而被忽略,并且
--force
选项将导致Subversion在该目录中爬行,添加未版本化的文件,同时仍遵守
svn:ignore
属性和
global ignores
运行时配置变量。如果您不希望对要添加的内容进行完全递归爬网,请确保为
svn add
命令提供
--depth files
选项


简短的版本是use
svn add--force.
这对我来说非常有效。

使用此命令而不是
svn add--force*

svn add --force ./

在本例中,svn本身解析目录中的所有文件,并考虑被忽略的文件,但当您使用*时,您会明确告诉svn添加所有文件。

尝试提交并不是查找btw的方法,如果添加了它,它将被提交。svn:ignore是为了防止添加它。如何让svn添加最近创建的所有文件,并同时保持ignore?如果我添加了一些文件,这些文件不是在中,而是在(例如)scss/pages/_comparison.scss中,则您建议的命令不会添加它们。相反,它说svn:warning:“.”已经在版本控制下。我也有同样的问题。问题是,在将dir添加到svn之前,无法设置要忽略的文件。但是,一旦添加了
add-深度为空(并且设置了
svn:ignore
模式),您不能使用
add--深度无限
问题最终没有解决,我说服我的团队转向git。非常高兴!