svn-如何提交更改”;在两次修订之间;? 问题是:
如何在“两次修订之间”提交更改?svn-如何提交更改”;在两次修订之间;? 问题是:,svn,branch,branching-and-merging,cherry-pick,Svn,Branch,Branching And Merging,Cherry Pick,如何在“两次修订之间”提交更改? 我使用引号是因为很明显,您无法在两个修订之间提交任何内容——它们已经在存储库中了 说来话长,我为什么需要这个? 这个问题一开始可能听起来很尴尬,但这是我在工作中遇到的一个现实生活场景。 我们正在将开发时的更改提交给开发分支(或“功能分支”,我们也称之为fb),工作完成后,我们将合并到主干中。 你知道,基本的工作流程。 我们从trunk发布软件,并同意在实际发布前的特定日期冻结代码。 现在,我愚蠢到相信我们从trunk构建的候选发布版本(RC)是好的,因为在我们实
我使用引号是因为很明显,您无法在两个修订之间提交任何内容——它们已经在存储库中了 说来话长,我为什么需要这个? 这个问题一开始可能听起来很尴尬,但这是我在工作中遇到的一个现实生活场景。
我们正在将开发时的更改提交给开发分支(或“功能分支”,我们也称之为fb),工作完成后,我们将合并到主干中。
你知道,基本的工作流程。
我们从trunk发布软件,并同意在实际发布前的特定日期冻结代码。
现在,我愚蠢到相信我们从trunk构建的候选发布版本(RC)是好的,因为在我们实际发布软件之前,所有的自动化测试都已经通过并提交了一个到trunk的合并。并删除了功能分支。
假设候选版本在修订版42中,我们发布的软件版本是v1.0.3。因此,r42是v1.0.3版本的RC。
所以,RC看起来不错,但在我们发布SW之前,我将r43提交给trunk。CI中的所有测试都通过了,所以我去删除了分支fb14(第44版)。
事实证明,RC毕竟不好,需要修复,但v1.0.3不能包含功能14(在fb14中实现),即r43 以一种图解的形式:
==r42=======r43
^ /
| /
| fb14
|
commit fix there to get new RC
所以我需要把r42带回来,做点什么,然后把r43带回来
好的,这很简单,对吗?回滚到r42:
svn merge -r HEAD:42 .
svn commit -m "Reverted back to RC of v1.0.3"
实施所需的修复和
svn commit -m "Fixed b0rken feature for v1.0.3"
然后我们将发布软件,我将带来r43:
svn up
svn merge -c 43 .
但是等等,这没什么用!我去删除了fb14分支,所以我需要从svn中挖掘出来,并将其重新合并到主干中吗?我一定要设法把r43带回来
所以我有点想要这个:
roll back to r42
-------------
/ \
==r42=====r43=====r45=====r46=====r47
/ \ ^ /
merge/ \ | /
/ \ fix /
fb14 \ /
| -------------
| bring back changes from r43
|
deleted in r44
编辑:Boo,他在回答自己的问题阅读
如果/当我再次遇到类似情况时,我想在以后查找此信息。Anwser 解释 为什么 没有在后备箱中工作?
因为血统。
假设r43中的更改进入文件foo.cpp
svn merge
记录祖先,这是最基本的东西。有了祖先,我们知道如何追溯到旧版本。对吗?所以在提交43版foo时。cpp@42成为福的祖先。cpp@43. 然后,我又回到了r42,提交了r44和foo。cpp@43成为福的祖先。cpp@44.
现在是第45版,我想合并第43版。但我有福。cpp@44正在从foo合并。cpp@42与foo的基本合并也是如此。cpp@43给福。cpp@45祖先会搞砸的。
为了得到福。cpp@43成为福。cpp@45我需要忽略祖先 进一步阅读 当然,通过从地下墓穴挖掘分支fb14并与主干进行另一次合并,也可以实现同样的效果:
roll back to r42
----------------
/ \
--r42-----r43-----r45-----r46-----r47
/ ^ /
/ | /
/ fix /
merge fb14--- /
\ merge fb14
delete fb14
i、 e。
(第43版)
像你以前从未编码过一样编码,我们需要立即修复
svn commit -m "Fixed b0rken feature for v1.0.3"
启动CI机器以构建软件包并发布软件
svn cp ^/branches/fb14@43 ^/branches/fb14-2
svn up
svn merge --reintegrate ^/branches/fb14-2
svn commit -m "Introducing feature 14"
svn rm ^/branches/fb14-2
但我不喜欢这种方法,所以我读了有关高级合并的文章。;)
roll back to r42
----------------
/ \
--r42-----r43-----r45-----r46-----r47
/ ^ /
/ | /
/ fix /
merge fb14--- /
\ merge fb14
delete fb14
svn merge -r HEAD:42 .
svn commit -m "Reverted back to RC1 of v1.0.3"
svn commit -m "Fixed b0rken feature for v1.0.3"
svn cp ^/branches/fb14@43 ^/branches/fb14-2
svn up
svn merge --reintegrate ^/branches/fb14-2
svn commit -m "Introducing feature 14"
svn rm ^/branches/fb14-2