【发布时间】:2014-08-14 15:50:11
【问题描述】:
我在将生产版本(需要手动合并以解决与早期版本的冲突)合并回它所在的分支时遇到问题。合并没有发现任何冲突,并且自动合并正在破坏合并的文件。谁能看到我做错了什么?
这是我工作的 SVN 设置:
Trunk 是生产代码,它会自动部署到网络服务器,不会出现任何错误或问题。
“Dev”是每个人都致力于一般错误修复和大多数小型开发的分支。
还有其他用于大型项目的分支,例如“project1”。
每天,Trunk(生产)都会合并到每个分支中,包括 Dev。这是因为我们不希望任何人使用与我们的生产代码有任何不同的代码库,除了他们在该分支中所做的更改。
(我也欢迎批评我们的 SVN 结构/程序。)
注意:这是针对没有并发维护版本的大型 Web 应用程序,它只是 24/7 全天候运行,我们会不断对其进行修改/更新,包括错误修复、新功能等。
我们过去每天都会遇到合并问题,最近我们将我们的 SVN 实践重组为我上面描述的内容。在这件事发生之前,它似乎没有问题。
当人们的更改经过全面测试并准备好部署到生产环境时,他们会将这些修订从其分支合并到生产环境中。这通常最终导致将更改从主干反向合并到当天晚些时候它们来自的分支中。我认为这可能是问题的根源,但直到今天它已经顺利运行了数周。
以下是我所遇到情况的详细信息:
一名开发人员在 Dev 中工作,并准备好部署到生产环境(主干)的几个修订版,他们切换到主干,打开合并对话框,选择他们的分支,挑选他们计划部署的几个修订版,然后点击合并(使用默认设置)。假设没有冲突,他们通常会提交到主干(自动部署到网络服务器并在几秒钟内上线)。在这种情况下,存在冲突。其他人先前已将修订版部署到主干,该修订版修改了其中一个相同的文件。开发人员手动合并两个修订并测试文件,确认它正在工作,并将合并的更改提交到主干。
在一天结束时,我将主干重新合并到我们所有的分支中,以确保明天每个人都拥有最新的代码,并尽早而不是迟到意识到任何冲突。为此,我一次切换到每个分支,打开合并,选择主干,然后只选择今天提交的修订进行合并。我使用默认设置运行合并,并将合并的更改提交到分支中。在这种情况下,当我到达 Dev 分支并从主干合并时,我遇到了问题。几乎今天所有的主干更改实际上都来自 Dev 分支,所以除了属性修改之外什么都没有引入,除了在开发人员尝试部署它时发生合并冲突的那个文件。该文件会自动合并。我打开文件看看它带来了什么,合并被搞砸了。它复制了一些代码行(导致代码错误),并将其他代码行乱序等。
还应该注意的是,我们团队中的一些人在 Visual Studio 中使用 AnkhSVN,而我和其他一些人只使用 TortoiseSVN。
【问题讨论】:
标签: svn tortoisesvn ankhsvn