【问题标题】:RTC delete snapshot from command line interfaceRTC 从命令行界面删除快照
【发布时间】:2014-04-24 14:24:46
【问题描述】:

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

我想要一种自动删除这些快照的方法,这样我就可以删除旧的工作区,但我在 CLI 中找不到该选项 - 有谁知道如何做到这一点?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    作为mentioned in this thread

    无法传送快照。它是流或工作区的不可变配置。它代表了您构建的内容。

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

    更简单的是,您可以删除/重新创建该 repo 工作区。

    但不建议只删除几个快照:

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

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


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

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

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

    但如果你有数百个 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
    

    【讨论】:

    • 谢谢,但这并不能真正解决问题。您是正确的,快照是在专用于构建的工作区中创建的。但是,我需要在不再需要它们后定期清理数百个构建工作区,如果其中有快照,我将无法这样做。这意味着我必须通过 GUI 并手动删除每个工作区中的快照,然后才能删除工作区本身。
    • @JimG 好的,我已经编辑了我的答案。您使用的是 RTC 4.x 还是 RTC 3.x?
    • 谢谢。我正在使用 RTC 4.x。我认为您的解决方案对我有用 - 我将在今天晚些时候对其进行测试。顺便说一句......我有数百个 repo 工作区的原因是我有数百个不同的 Jenkins 工作......每个工作一个工作区。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多