在将分支合并回主树时,是否有某种方法可以强制某些文件无法自动合并(强制我管理合并)?
例如,我的web.config文件具有基于我是在Dev还是Production系统中的特定路径。因此,当我需要将我的dev分支合并回main时,我不想修改某些标记,但可能需要更新其他信息。
问题是合并可能会自动更新需要保持不变的设置。我可以轻松恢复原状,但任何新设置都将丢失。这似乎是处理这个问题的最简单方法,我将手动合并这种情况下的更改。
因为我是Tortoise和SVN的新手,所以我可能会从错误的方向来到这里。
除了下面有一些好答案的配置示例。 有没有办法强制在合并期间手动处理所有文件?似乎应该有一个可以应用于文件的标志,只是让它看起来像是有冲突的标记文件并相应地处理合并。
答案 0 :(得分:2)
我看到这样处理的一种方式是:
答案 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
是的,它在部署方面投入了更多的工作,但如果达到预期的效果,它确实提供了安全性。