svn:在分支机构工作时修复关键错误的正确方法

svn:在分支机构工作时修复关键错误的正确方法,svn,merge,tortoisesvn,branch,Svn,Merge,Tortoisesvn,Branch,当我想向项目中添加新功能时,我会为该功能创建一个分支。每当功能完成时,我都会将分支合并回主干中 然而,有时我必须解决我正在处理的分支中的关键bug。需要立即应用错误修复,因此我直接在主干中进行修复,并提交更改 通常,我还需要在我正在处理的分支中修复bug,以避免在处理分支功能时遇到它,因此我只需从主干文件复制修复的代码,然后将其粘贴到分支代码中以替换bug代码 我的问题是:在SVN中有没有一种方法可以从较新的主干文件更新特定的分支文件?另外,您认为有没有合适的方法来解决关键的bug 编辑:可以使

当我想向项目中添加新功能时,我会为该功能创建一个分支。每当功能完成时,我都会将分支合并回主干中

然而,有时我必须解决我正在处理的分支中的关键bug。需要立即应用错误修复,因此我直接在主干中进行修复,并提交更改

通常,我还需要在我正在处理的分支中修复bug,以避免在处理分支功能时遇到它,因此我只需从主干文件复制修复的代码,然后将其粘贴到分支代码中以替换bug代码

我的问题是:在SVN中有没有一种方法可以从较新的主干文件更新特定的分支文件?另外,您认为有没有合适的方法来解决关键的bug

编辑:可以使用OrtoiseSVN客户端执行此操作?

根据,如果应用正确的语法,您可以使用svn merge从主干转到分支

如下所示:

svn merge -r 1001:1002 https://svn.dev.your/repo/trunk/src .

其中1001是要合并内容之前的版本,1002是要合并内容的版本,以及与主干相对应的URL。

那么,您是如何进行修复的

您是否将其固定在功能分支上并将其合并到主干上? 如果是:

可以指定要合并到另一个分支中的特定修订。例如,如果修复了分支上修订版1001中的错误,则只需合并该修订版

您可能还需要使用-reintegrate标志。将信息合并回父分支时使用此选项。例如,如果分支来自主干,并且要将分支中的信息合并回主干,则使用-reintegrate选项

如果您已经修改了trunk上的代码,并且只想记录合并,那么可以使用-record only选项。这会记录分支上的更改已合并到主干中,但实际上不会执行合并

或者,主干上是否有修复程序,而您希望在功能分支中进行修复。 如果是这样,您希望使用正常的合并语法。事实上,您应该从主干到分支,这样您就有了功能分支上的最新代码

同样,如果手动将修补程序应用于要素分支,请执行svn合并,但使用-record only选项。这允许Subversion将修复标记为合并到分支中,但实际上并不执行合并。这将阻止后续合并尝试修复您的修复

特性分支的全部目的不是让您进入洞穴和程序,而是防止特性处于不稳定状态时影响构建。我不鼓励使用功能分支。我希望开发人员要小心,并进行一些小的更改,以确保构建仍然良好。我还希望整个团队都能看到他们的发展。如果您从主干创建一个分支,然后将代码合并回主干中,您不会在带有svn日志的分支上看到历史记录,除非您也这样做-使用合并历史记录,然后日志会变得有点混乱

无论何时创建分支,最终都会出现合并问题—特别是如果分支是聚合分支(如要素分支)。开发人员必须不断地将主干合并到他们的分支中,然后尝试将他们的工作合并回主干中。虽然从理论上讲,如果开发人员一直保持他们的分支是最新的,那么从分支到主干的整个合并应该是一个简单的副本,但我们通常会遇到一系列合并冲突

我唯一确定特性分支的时候是,它的工作是否会影响代码的构建和测试能力。即使是添加一个主要的新特性,如果按照它应该做的那样小心的话,也很少能做到这一点。当代码被重构或代码基础的中心部分被重做时,特征分支通常保留。 你认为会有一个适当的方法来解决关键的bug吗

我认为,现在有适当的方法。如果你问我如何解决这个问题,我会考虑

从主干创建分支以修复错误 ... 编码并提交到分支 将分支合并到主干和要素分支中
我只是把它放在这里:+1'd这就是我要做的-错误修复是自包含的,所以把它放在自己的分支上,合并到主干上,更新功能分支。通常,如果任务定义良好,则将其放在自己的分支上。事实上,如果您愿意,这使得提交是“原子的”,并且定义良好,这意味着svn日志也清晰易懂。