svn:忽略属性忽略不受源代码管理的文件,因此它们在svn status
中不会带有?
(它们根本不会出现,如果您执行add
,它们也会被忽略)
但是,如果我想忽略处于源代码管理下的文件,怎么办?svn:忽略不会忽略它。
例如,我想要做的是设置一个配置文件,并将它添加到svn中,所以当系统必须部署到测试或活动服务器(它是一个web应用程序)时,它就在那里了,但是对于本地环境的开发,我需要修改配置文件来用我的本地设置来设置它。
但我不希望这些更新被提交,那么,我该怎么办呢?
svn delete
将从存储库中删除它们,当在测试服务器上执行svn update
时,它将删除配置文件,这不是我想要的。
发布于 2012-02-15 08:34:20
当更改时不打算提交的文件(如配置文件)应被视为模板文件,其名称反映了这种处理。例如,将".template“追加到文件名,并在存储库中包含文件的默认内容。签出工作副本后,每个用户都必须手动将该文件复制到工作版本(没有".template“扩展名),并且可以选择更改内容。不能将此工作文件添加到存储库中(使用svnlook
命令的某些服务器端预提交钩子脚本可以确保这一点)。
如果更改此模板文件,则会出现问题。每个用户都必须响应此更改(可能什么也不做,但可能更改了他们的工作文件)。有一些方法可以自动提醒用户模板更改(使用用户端的更新后钩子脚本),但这可能是过火了。当有人更改模板时,它应该将更改通知所有其他人,仅此而已。
发布于 2012-02-15 08:02:59
一种方法是使用svn:externals。您将链接到包含配置文件的路径。在Buildserver上,您可以使用“--忽略--外部”选项签出。
无论如何,我通常只是删除构建脚本中的文件。不太优雅,但能做好这项工作。
发布于 2012-02-15 08:09:49
不幸的是,这在svn中不是那么容易做到的。我所见过的最接近的是对this question的公认答案,但这意味着您还必须将其他文件放入变更列表中。不幸的是,一些svn插件(subversive I'm looking at you!)似乎没有对变更者的良好支持。
https://stackoverflow.com/questions/9296457
复制