我在RTC中调用了一个文件(称之为foo.c
),我将其修改并检入变更集(CS1
)以及其他一些更改。然后我再次修改了该文件,并将其与其他更改一起检查到不同的变更集(CS2
)。
我现在遇到了一个我希望将CS2
传递给流的情况,但是RTC给了我一个错误,即传递会在流中产生间隙(因为{{ 1}})。我还不想提供所有CS1
,因为它包含一些不应该在构建中的更改。 CS1
中foo.c
的原始更改是CS1
的轻微删除,不会影响任何其他内容。
有没有办法解决这个差距?
我在RTC文档中看到有关应用补丁的一些内容,但我不明白它的用途。
有没有办法将变更集拆分为多个变更集,这样我就可以只交付一个文件?
答案 0 :(得分:3)
问题: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 和 CS2中使用foo.c意味着CS1已经“完成”(本质上是冻结的),尝试拆分它会很糟糕。
补丁解决方案意味着:
请参阅“How do I remove a change set from a stream?”
Story 149483是关于增强繁琐的工作流程,并且正在加强差距检测(Enhancement 24822)
OP timwoj得出结论:
我最终只是提供了所有这些,然后扭转了我不想要的那个。