强制手动合并TortoiseSVN中的某些文件

时间:2008-10-23 14:52:41

标签: svn tortoisesvn

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

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

问题是合并可能会自动更新需要保持不变的设置。我可以轻松恢复原状,但任何新设置都将丢失。这似乎是处理这个问题的最简单方法,我将手动合并这种情况下的更改。

因为我是Tortoise和SVN的新手,所以我可能会从错误的方向来到这里。

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

3 个答案:

答案 0 :(得分:2)

我看到这样处理的一种方式是:

  1. 将您的配置保存在不同的目录中(dev,uat,prod等)
  2. 检查这些到SVN
  3. 修改构建过程,以便根据命令行参数将相应的配置复制到bin /目录中

答案 1 :(得分:1)

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

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

我不相信有一种简单或可自动化的方式来做你在TortoiseSVN中提出的要求

答案 2 :(得分:0)

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

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

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

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

/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

是的,它在部署方面投入了更多的工作,但如果达到预期的效果,它确实提供了安全性。