RTC从命令行界面删除快照

时间:2014-04-24 14:24:46

标签: jenkins jenkins-plugins rtc rational-team-concert

我正在使用Jenkins中的RTC插件来运行我们的CI构建,并且作为构建的一部分,它创建了一个存储在构建RTC工作区中的快照。据我所知,没有配置选项来禁用快照创建,因此我们最终得到了数百个我们从不需要/使用的快照。

我希望能够以自动方式删除这些快照,以便我可以删除旧工作区,但我无法在CLI中找到相应的选项 - 是否有人知道这可能如何完成?

谢谢!

1 个答案:

答案 0 :(得分:0)

应仅在专用于构建的RTC repo工作区(与RTC中的构建定义关联的repo工作区)中创建这些快照。

作为mentioned in this thread

  

无法投放快照。它是流或工作空间的不可变配置。它代表了构建的内容。

     

您可以删除快照,它将位于构建用户的构建工作区中。

更简单,您可以删除/重新创建该回购工作区。

但不建议只删除一些快照:

  

快照表示构建时的SCM工作区   如果接受了更改,则无论是否通过,它们都将包含在此构建中,并且构建使用快照来报告何时将更改集包含在构建中。

     

因此,删除快照是不可取的,因为它会使构建过程混淆,以确定何时实际将更改集引入构建。


  

但是我需要定期清理不再需要的数百个构建工作区,如果有快照,我就不能这样做

您可以列出这些快照(右键单击repo工作区,“显示快照”)并查看该列表中的多个快照选择是否允许您(通过所述多个选择的上下文菜单)删除它们。 / p>

或者您也可以通过相同的多重选择change their ownership,至少将它们移动到一个共同的回购工作区(将它们转储到其中,等待更永久的解决方案)

但是如果你有数百个repos工作区:

  • 首先,这很奇怪:你的构建定义应该只引用一个,而Jenkins不应该只构建一个,而只是从RTC接收来源(除非你没有使用RTC4)

  • 第二,您可以列出工作区,并为每个工作区列出他们的快照,以便删除这些快照(使用RTC downloads中提供的Java API)。
    请参阅this thread

  

要在删除工作区之前删除快照,请调用以下命令:

IWorkspaceConnection.removeBaselineSet(IBaselineSetHandle baselineSet, IProgressMonitor monitor)
  

如果您拥有拥有快照的工作区的IWorkspaceHandle,则可以使用IBaselineSetSearchCriteria找到所有拥有该快照的快照(IBaselineSetSearchCriteria具有进一步确定查询范围的方法)。

     

例如:

IWorkspaceHandle wsHandle = null // GET ME SOMEHOW
IWorkspaceManager workspaceManager = SCMPlatform.getWorkspaceManager(repo);
IBaselineSetSearchCriteria criteria = IBaselineSetSearchCriteria.FACTORY.newInstance();
criteria.setOwnerWorkspaceOptional(wsHandle);
List snapshotHandles = workspaceManager.findBaselineSets(criteria, MAX_TO_SHOW, null);
// snapshotHandles contains a list of IBaselineSetHandle, so you can fetch them