4

我在 RTC 中有一个文件(调用它foo.c),我对其进行了修改并签入了变更集(CS1)以及其他一些更改。然后我再次修改了该文件并将其CS2与其他更改一起检查到不同的变更集()中。

我现在遇到了一个我想传递CS2到流的情况,但是 RTC 给了我一个错误,即传递会在流中创建一个间隙(因为 中的更改CS1)。我还不想交付所有内容CS1,因为它包含一些不应该在构建中的更改。foo.c对in的原始更改CS1是对 a 的轻微删除#include,并且不会影响其他任何内容。

有没有办法解决这个差距?

我在 RTC 文档中看到了一些关于应用补丁的内容,但我不明白它在哪里。
有没有办法将变更集拆分为多个变更集,这样我就可以只交付一个文件?

4

2 回答 2

3

问题:CS1 更改 foo.c,CS2 进一步更改 foo.c。您只想交付 CS2,但 RTC 告诉您这会引入差距。

解决方案:从 CS2 创建补丁并暂停 CS1 和 CS2。然后应用补丁,将其合并到您的工作区并签入更改,这将创建另一个更改集 CS3,与 CS2 相同,但不依赖于 CS1。您现在可以交付 CS3。

交付 CS3 后,您可以丢弃 CS2 并恢复 CS1,这需要您与 CS3 合并。

那么您应该处于 CS1 建立在 CS3 之上的状态,您可以选择将来是否交付 CS1。

于 2012-05-23T17:44:01.310 回答
2

自 2012 年以来的更新(以及交付所有内容并恢复您不想要的内容的原始“解决方法”):

看到这个线程

在 RTC 4.0.5 中,我们在尝试接受有差距的变更集时提供了额外的支持(在尝试向后移植修复时经常遇到)。

在对该功能的一个非常简短的总结中,当您接受具有间隙的更改集时,您现在可以遵循一次接受一个更改集的间隙工作流,并且对于包含间隙的更改集,创建一个新的更改集(带有辅助可追溯性),其中包含等效更改。
这意味着用户不必接受“作为补丁”的更改集。

与新的工作流程相比,将更改集作为补丁应用具有局限性。
此功能在RTC 4.0.5 'New & Noteworthy' 页面中进行了总结。

以下是一些展示此功能的视频:

这就是定位更改集功能:

https://jazz.net/downloads/pages/rational-team-concert/4.0.5/4.0.5/images/gapeditor.png


在 RTC 5.0 中,我们添加了“填补空白”功能,其中向用户显示了填补空白的变更集,允许他们接受所有变更集或继续 RTC 4.0.5 中可用的空白工作流.

此功能在RTC 5.0 'New & Noteworthy' 页面中进行了总结:

填补空白所涉及的类包括(在 RTC 5.0 中可用):

client side: IWorkspaceConnection.findChangeSetsToAcceptToFillGap(...) 
server side: IScmQueryService.findChangeSetsToAcceptToFillGap(...) 

“改进的 SCM 间隙处理”一文中详细解释了这两个特性。

https://jazz.net/downloads/pages/rational-team-concert/5.0/5.0/images/missing-change-sets-dialog.png


原始答案(2012)

有没有办法拆分变更集?

我不这么认为,阅读变更集手册页

组件中的文件或文件夹不能属于多个活动更改集。
当文件或文件夹包含在活动更改集中时,对其的所有更改都将成为该更改集的一部分,无论该更改集是否是当前的,并且对该文件或文件夹的更改不能显式签入到新的更改集中,直到包含它的活动更改集已完成

在 CS1CS2 中有 foo.c 意味着 CS1 已经“完成”(本质上是冻结的),尝试拆分它会很糟糕。

补丁解决方案意味着:

  • 取消 CS1
  • 将 foo.c 的附加更改添加到 CS2
  • 重做 CS1 更改

请参阅“如何从流中删除更改集?

故事 149483是关于增强繁琐的工作流程,并且正在增强间隙检测(增强 24822


OP timwoj总结道:

我最终只是交付了所有东西,然后将我不想要的东西倒过来

于 2012-05-22T19:27:38.643 回答