【问题标题】:Force a manual Merge of certain files within TortoiseSVN强制在 TortoiseSVN 中手动合并某些文件
【发布时间】:2008-10-23 14:52:40
【问题描述】:

在将分支合并回主树时,是否有某种方法可以强制某些文件不自动合并(强制我管理合并)?

例如,我的 web.config 文件具有特定路径,具体路径取决于我是在开发系统还是生产系统中。因此,当我需要将 dev 分支合并回 main 时,我不想修改某些标签,但可能需要更新其他信息。

问题在于合并可能会自动更新需要保持不变的设置。我可以很容易地恢复到原来的状态,但是任何新设置都会丢失。在这种情况下,对我来说,似乎最简单的处理方法是手动合并更改。

由于我是 Tortoise 和 SVN 的新手,因此我可能从错误的方向来。

除了下面有一些很好答案的配置示例。 有没有办法强制在合并期间手动处理所有文件?似乎应该有一个标志可以应用于文件,以简单地使它看起来与标记文件并相应地处理合并。

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    我见过的一种处理方法是:

    1. 将您的配置保存在单独的目录中(dev、uat、prod 等)
    2. 将这些签入到 SVN
    3. 修改您的构建过程,使其根据命令行参数将适当的配置复制到 bin/ 目录中

    【讨论】:

    • 说得好。我们已经在不同的文件中有各种配置。我们使用批处理为多个环境应用正确的配置,我们只是从未在开发人员的机器上使用过它。我将把问题扩大一点。
    【解决方案2】:

    我建议根据您的构建或部署过程而不是版本控制过程来查看问题。

    就我个人而言,我已将 ANT 与平台/环境特定属性一起使用,以允许 SVN(或任何其他 SCMS)中的一个配置文件在本地环境中被覆盖或具有 占位符在构建期间由平台/环境特定值替换。

    我认为在 TortoiseSVN 中没有一种简单或自动化的方法可以满足您的要求

    【讨论】:

      【解决方案3】:

      如果您不关心共享配置信息(例如数据库访问),您可以轻松地将 dev/prod 特定部分包装在 if->then 中。

      if (production) {
         db = prod
      } else {
         db = dev
      }
      

      我见过一些确定环境的方法,从机器的物理名称(有利于限制未经授权使用代码)到 IP 地址、主机名等。

      提供一点安全性并且不会影响构建过程的替代方法太多是使用分支。将生产 web.config 保存在具有匹配目录结构的自己的分支中,并将其合并到具有最新生产就绪代码的第三个分支中。所以:

      /trunk <-- development (or its own branch)
      /branches/
      /branches/production-pre <-- latest stable
      /branches/production-config <-- web.config and related only
      /branches/production-post <-- final merged
      

      是的,它在部署上投入了更多工作,但如果这是所需的效果,它确实提供了安全性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 2011-10-25
        • 1970-01-01
        • 2012-02-16
        • 2023-01-28
        • 1970-01-01
        • 2012-09-05
        相关资源
        最近更新 更多