强制在OrtoiseSVN中手动合并某些文件

强制在OrtoiseSVN中手动合并某些文件,svn,tortoisesvn,Svn,Tortoisesvn,在将分支合并回主树时,是否有办法强制某些文件不自动合并(强制我管理合并)? 例如,我有web.config文件,这些文件根据我是在开发人员还是在生产系统中而具有特定的路径。因此,当我需要将我的dev分支合并回main时,我不想修改一些标记,但可能需要更新其他信息 问题是合并可能会自动更新需要保持不变的设置。我可以很容易地恢复到原来的设置,但是任何新的设置都会丢失。这似乎是最简单的方法来处理这将是我手动合并在这种情况下的变化 我可能是从错误的方向来的,因为我对乌龟和SVN是新手 除了下面的配置示例

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

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

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

我可能是从错误的方向来的,因为我对乌龟和SVN是新手


除了下面的配置示例之外,它还有一些很好的答案是否有一种方法可以强制在合并过程中手动处理所有文件?似乎应该有一个可以应用于文件的标志,使其看起来与标记的文件冲突,并相应地处理合并。

我看到的一种处理方法是:

  • 将配置保存在单独的目录中(dev、uat、prod等)
  • 将这些文件签入SVN
  • 修改生成过程,使其基于命令行参数将适当的配置复制到bin/目录中

  • 我建议从构建或部署过程的角度来考虑这个问题,而不是版本控制过程

    就我个人而言,我将ANT与平台/环境特定的属性一起使用,以允许SVN(或任何其他SCM)中的一个配置文件在本地环境中被重写,或者在构建过程中由平台/环境特定的值替换占位符


    我不相信有一种简单或自动化的方法来完成您在OctoiseSvn中提出的要求。如果您不关心共享配置信息(如数据库访问),您可以轻松地将特定于开发/产品的部分封装在If->then中

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

    另一种提供一点安全性并且不会对构建过程产生太大影响的方法是使用分支。将production 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
    

    /trunk这是一个很好的观点。我们在不同的文件中已经有了各种配置。我们使用批处理为多个环境应用正确的配置,只是我们从未在开发人员的机器上使用过。我要把问题扩大一点。