Vla*_*ada 7 merge tfs rollback
我有以下TFS问题:
我从MAIN分支创建了新的分支.在此期间,新分支上发生了一些变更集(让我们从CS-1到CS-2指定它们).有一刻我在MAIN分支上进行了修改,这个修改已合并到新分支上(分支上的新变更集:CS-3).
之后,新分支进行了多次更改(产生了从CS-4到CS-5的变更集).此外,我做了CS-3的回滚,结果在新分支上创建了新的变更集CS-6.
现在,问题是:从新分支到MAIN的合并中应该包含哪些变更集?从逻辑上讲,它应该是:[CS-1-CS-2,CS-4-CS-5和CS-6].但是,真正的结果是:[CS-1-CS-2,CS-4-CS-5]
有没有人有任何想法:为什么回滚变更集(CS-6)不包含在合并中?很明显,变更集CS-6的回滚不像通常的变更集一样对待.
首先,很好地解释了问题:).您需要开始使用的选项是"
回滚/ keepmergehistory
以下示例说明了我们在执行回滚时可以使用的两个不同选项,以及为什么您获得了上面提到的特定行为.我重新创建了上面提到的整个场景,但是我使用了命令提示符回滚
/ keepmergehistory
这次当我尝试从dev分支返回到Main分支时,它确实将回滚的更改(CS6)调回到源/主分支.
MSDN的解释:
回滚包含分支或合并更改的变更集时,通常希望将来在同一源和同一目标之间进行合并以包含这些更改.但是,如果希望将来在同一源和同一目标之间进行合并,则可以使用/ keepmergehistory选项来排除过去合并操作中包含的变更集.
例如,您可以在以下情况下使用此命令:
在2009年6月30日,您执行从$/BranchA /到$/BranchB /的所有项目的完全合并:
c:\ workspace> tf合并$/BranchA $/BranchB
您将此合并作为变更集292的一部分签入.
在2009年8月1日,您将$/BranchA/Util.cs合并到$/BranchB/Util.cs:
c:\ workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
您将更改作为更改集314的一部分签入.此操作的结果是您在更改集297,301和305中对$/BranchA/Util.cs所做的编辑现在也应用于$/BranchB/Util. CS.
如果您希望在将来的合并中将您在7月份对$/BranchA/Util.cs所做的更改重新应用于$/BranchB/Util.cs,则应键入以下命令:
c:\ workspace> tf rollback/changeset:314
如果您希望在将来的合并中永远不会将7月份对$/BranchA/Util.cs所做的更改重新应用于$/BranchB/Util.cs,则应键入以下命令:
c:\ workspace> tf rollback/changeset:314/keepmergehistory
几周后,你将$/BranchA /合并到$/BranchB /:c:\ workspace> tf merge $/BranchA $/BranchB
如果省略了/ keepmergehistory选项,则合并更改将应用于$/BranchB/Util.cs自变更集292以来应用于$/BranchA/Util.cs的所有变更集,包括变更集297,301,
换句话说,将来的合并将撤消回滚更改.
如果包含/ keepmergehistory选项,则合并操作将应用于$/BranchB/Util.cs自变更集292以来应用于$/BranchA/Util.cs的所有变更集,不包括变更集297,301和305.换句话说,未来的合并不会撤消回滚更改.因此,BranchA上的内容可能与BranchB上的内容不匹配.
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |