【问题标题】:RTC: Resolving stream gaps?RTC:解决流间隙?
【发布时间】:2012-05-22 18:15:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: rtc ibm-rational


    【解决方案1】:

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

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

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

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

    【讨论】:

    • +1。在应用补丁并交付新的变更集之前,我没有尝试丢弃变更集。丢弃位可能是这里缺少的步骤。
    【解决方案2】:

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

    this thread:

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

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

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

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

    这就是Locate Change Sets 功能:


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

    这个功能总结在RTC 5.0 'New & Noteworthy' page

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

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

    这两个功能在“Improved Gap Handling for SCM”文章中都有详细解释。


    原始答案(2012 年)

    有没有办法拆分变更集?

    我不这么认为,阅读changeset man page

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

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

    补丁解决的意思是:

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

    见“How do I remove a change set from a stream?

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


    OP timwoj 总结:

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

    【讨论】:

    • 我的部分问题是在 CS1 和 CS2 之后签入了其他变更集,使它们都完成了。如果我创建了一个反转 CS1 的补丁,将其合并到我的工作区并尝试交付它,我只会收到另一个错误,说交付它会造成差距。
    • @timwoj 似乎很正常:您需要与CS1(如果它仍然存在)、CS2CS3、...直到包括CSpatch 一起提供该补丁(取消CS1),以确保没有间隙。
    • 我最终只是交付了所有内容,然后将我不想要的内容倒过来。感谢您提供的链接,它们比文档中关于差距的一点点更有帮助。
    • @timwoj 这是解决问题的一种方法。为了提高知名度,我已将您的结论包含在答案中。
    猜你喜欢
    • 2023-03-25
    • 2021-04-03
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多