如何svn:忽略受源代码管理的文件?

如何svn:忽略受源代码管理的文件?,svn,Svn,svn:ignore属性忽略不受源代码管理的文件,因此它们不会在svn状态下出现?(它们根本不会出现,如果执行添加,它们也会被忽略) 但是,如果我想忽略一个受源代码管理的文件,该怎么办?svn:忽略不会忽略它。 例如,我想做的是设置一个配置文件,将其添加到svn,这样当系统必须部署在测试或实时服务器(它是一个web应用程序)上时,它就在那里,但对于本地环境开发,我需要修改配置文件,以使用我的本地设置进行设置 但我不想提交这些更新,所以,我该怎么做 svn delete只会将它们从存储库中删除,在

svn:ignore属性忽略不受源代码管理的文件,因此它们不会在
svn状态下出现
(它们根本不会出现,如果执行
添加
,它们也会被忽略)

但是,如果我想忽略一个受源代码管理的文件,该怎么办?svn:忽略不会忽略它。
例如,我想做的是设置一个配置文件,将其添加到svn,这样当系统必须部署在测试或实时服务器(它是一个web应用程序)上时,它就在那里,但对于本地环境开发,我需要修改配置文件,以使用我的本地设置进行设置

但我不想提交这些更新,所以,我该怎么做


svn delete
只会将它们从存储库中删除,在测试服务器上执行
svn更新时,它会删除配置文件,这不是我想要的。

一种方法是使用svn:externals。 您将链接到包含配置文件的路径。在Buildserver上,您可以使用“忽略外部”选项签出


无论如何,我通常只是删除构建脚本中的文件。虽然不是很优雅,但可以完成这项工作。

不幸的是,在svn中这并不是那么容易做到的。我所看到的最接近的答案是被接受的,但这意味着你也必须把你的其他文件放入变更列表中。不幸的是,一些svn IDE插件()似乎对变更列表没有很好的支持。

更改时不打算提交的文件(如配置文件)应被视为模板文件,其名称反映了这种处理方式。将例如“.template”附加到文件名,并在存储库中具有文件的默认内容。签出工作副本后,每个用户都必须手动将此文件复制到工作版本(不带“.template”扩展名),并可以选择更改内容。不能将此工作文件添加到存储库中(某些使用
svnlook
命令的服务器端预提交钩子脚本可以确保这一点)


如果更改此模板文件,则会出现问题。每个用户都必须响应此更改(可能什么也不做,但可能更改其工作文件)。有一些方法可以自动提醒用户模板的更改(使用用户端的更新后钩子脚本),但这可能是过火了。当有人更改模板时,它应该只通知所有其他人有关更改的信息,就这样。

SVN不是部署系统,而是源代码管理系统。有非常好的工具来制作和检查发行版(比如
automake
);使用它们,你的问题就会消失。