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

4
有没有办法在将分支合并回主树时强制某些文件不自动合并(强制我管理合并)?
例如,我的web.config文件具有基于我是否在Dev或Production系统中的特定路径。因此,当我需要将我的dev分支合并回主分支时,我不希望修改某些标记,但其他信息可能需要更新。
问题是合并可能会自动更新需要保持不变的设置。我可以轻松恢复到原始状态,但任何新设置都将丢失。在这种情况下,处理这个问题最简单的方法似乎是让我手动合并更改。
由于我对Tortoise和SVN还很陌生,所以我可能从错误的方向来处理这个问题。
除了下面有一些好答案的配置示例外。有没有办法在合并期间强制所有文件手动处理?似乎应该有一个标志可以应用于文件,使其看起来像是存在冲突的标记文件,并相应地处理合并。
3个回答

2

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

  1. 将您的配置文件保存在不同的目录中(dev、uat、prod等)
  2. 将它们检入SVN
  3. 修改构建流程,使其根据命令行参数将适当的配置文件复制到bin/目录中。

这是一个很好的观点。我们已经将各种配置保存在不同的文件中。我们使用批处理程序为多个环境应用正确的配置,只是从未在开发人员的机器上使用过。我打算将问题扩大一些。 - Haydar

1

我建议从构建或部署流程的角度来看待这个问题,而不是版本控制过程。

就我个人而言,我使用ANT和特定于平台/环境的属性,允许在SVN(或任何其他SCMS)中有一个配置文件,该文件在本地环境中被覆盖或者通过平台/环境特定的值在构建期间进行替换。

我认为在TortoiseSVN中没有一种简单或可自动化的方法来实现你所要求的功能。


0

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

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

是的,它会增加部署的工作量,但如果安全是期望的效果,它确实提供了安全性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接