【问题标题】:How to svn:ignore a file that is under source control?如何svn:忽略源代码控制下的文件?
【发布时间】:2012-02-15 15:45:38
【问题描述】:

svn:ignore 属性会忽略不受源代码控制的文件,因此它们不会出现在 svn status? 中(它们根本不会出现, 并且如果您执行 add) 也会被忽略

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

但我不希望提交此更新,那么,我该怎么办?

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

【问题讨论】:

  • SVN 不是部署系统,它是一个源代码控制系统。有非常好的工具来制作和检查分布(例如automake);使用它们,您的问题就会消失。

标签: svn


【解决方案1】:

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

如果更改此模板文件,则会出现问题。每个用户都必须响应此更改(可能什么都不做,但可能会更改他们的工作文件)。有一些方法可以自动提醒用户模板更改(使用用户端 post-update-hook 脚本),但这可能只是矫枉过正。当有人更改模板时,它应该只通知所有其他人有关更改,仅此而已。

【讨论】:

    【解决方案2】:

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

    无论如何,我通常只是删除构建脚本中的文件。不是很优雅,但能胜任。

    【讨论】:

      【解决方案3】:

      不幸的是,这在 svn 中并不是那么容易做到的。我见过的最接近的答案是this question 的公认答案,但这意味着您还必须将其他文件放入更改列表中。不幸的是,一些 svn IDE 插件 (subversive I'm looking at you!) 似乎对更改列表没有很好的支持。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-23
        • 2015-07-16
        • 1970-01-01
        • 2015-03-22
        • 2012-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多