设置父目录的svn:ignore
属性:
svn propset svn:ignore dirname .
svn propedit svn:ignore .
svn rm --keep-local dirname
。(我得到的 SVN 状态输出很多,我费了好大劲才发现这个问题。) - Erik Aronestysvn propset svn:ignore -F file.txt .
- petervazsvn propget svn:ignore
或 svn propset svn:ignore dirname .
命令检查是否已经忽略了某些路径,因为这些命令可能会覆盖当前的忽略路径。最好使用 svn propedit svn:ignore .
命令来编辑忽略列表。如果您已经覆盖了 svn:ignore,请使用 svn proplist -v <PATH>|<URL>
命令获取特定路径的当前值,然后将其复制/粘贴回 svn propedit svn:ignore .
中以恢复之前的设置。 - bucabay这是一个目录结构的示例:
\project
\source
\cache
\other
当你在项目
中看到你的缓存目录没有被添加并且显示为这样时。
> svn status
M source
? cache
设置忽略属性,请执行:
svn propset svn:ignore cache .
其中 svn:ignore
是您要设置的属性名称,cache
是该属性的属性值,.
是要在其上设置此属性的目录。它应该是需要属性的 cache
目录的父目录。
要检查已设置的属性:
> svn proplist
Properties on '.':
svn:ignore
为了查看 svn:ignore
的值:
> svn propget svn:ignore
cache
删除先前设置的属性:
svn propdel svn:ignore
需要强调的是:
在命令行中,您不能使用
svn add *
这也会添加被忽略的文件,因为命令行扩展了 *
,因此 svn add
认为您想要添加所有文件。因此,请改用以下命令:
svn add --force .
svn add --force *
不会起作用。要使用点号,而不是星号。 - manuell由于我花了一段时间来尝试让它工作,需要注意的是,如果文件已经存在于SVN中,则需要使用svn delete
命令将其删除,然后编辑svn:ignore
属性。
我知道这似乎很明显,但它们在我的svn status
列表中仍然显示为?
,而我以为它只会在本地忽略它们。
稍微扩展一下,如果你使用svn命令行工具进行操作,你需要输入:
svn propedit svn:ignore path/to/dir
打开您选择的文本编辑器,然后键入“*”以忽略其中的所有内容,保存并退出 - 这将包括目录本身在svn中,但忽略其中的所有文件,要忽略目录,请使用父目录的路径,然后在文件中输入目录名称。保存后,运行更新('svn up'),然后检查适当的路径。
在父目录上设置svn:ignore
属性:
$ cd parentdir
$ svn ps svn:ignore . 'cachedir'
这将覆盖任何当前的 svn:ignore
值。您可以使用以下方法编辑该值:
$ svn pe svn:ignore .
这将打开您的编辑器。您可以每行添加多个模式。
您可以使用以下命令查看当前值:
$ svn pg svn:ignore .
如果您使用GUI,则应该有一个菜单选项来执行此操作。
svn ps svn:ignore . 'cachedir'
改为svn ps svn:ignore 'cachedir' .
可以解决cachedir is not under version control
的问题。请注意,这里不提供任何额外的解释或内容。 - DiCaprio非常感谢以上所有的贡献。
我想分享一些来自我的经验,关于如何忽略文件。
已在版本控制下的文件夹
在svn import和svn co文件之后,我们通常需要做第一次设置。
所有的运行时缓存、附件文件夹都将被纳入版本控制。 因此,在使用 svn ps svn:ignore 之前,我们需要将其从仓库中删除。
对于 SVN 版本 1.5 及以上,我们可以使用 svn del --keep-local your_folder
,
但对于早期版本,我的解决方案是:
.svn
隐藏文件夹)当需要忽略多个文件夹时
svn:ignore
的文件夹如果需要编辑文本文件,则需要使用 svn pe
命令,您可以使用以下命令设置您的文本编辑器(如 vi):
export SVN_EDITOR=vi
文件看起来可能就像这样简单:
runtime
cache
attachments
assets
svn propset svn:ignore -F .ignorethesefiles .
,它将使用文件的内容。我喜欢保留它,这样你就知道什么被忽略了。编辑需要后续的 propset。 - Gerard ONeill如果您的目录 foo
已经在版本控制下,请使用以下命令先将其移除:
svn rm --keep-local foo
svn propset svn:ignore foo .
...如果您想要忽略多个目录(比如build/
,temp/
和 *.tmp
文件),您可以通过两步骤来实现(先忽略第一个目录,然后编辑忽略属性,参见此处的其他答案),或者您可以编写以下内容来实现:
svn propset svn:ignore "build
temp
*.tmp" .
在命令行上执行。