java基线_使用纯Java比较RTC / Jazz中的两个基线

本文档详细记录了一位开发者在IBM Rational Team Concert (RTC)中使用Java编程比较流快照遇到的问题及解决方案。首先通过`getStreams()`和`getSnapShotsFromStream()`获取工作区连接和快照,然后尝试使用`compareBaselineSetConfigurations()`和`compareBaselineSets()`方法进行比较,但报告为空。最后发现应该使用`IChangeHistorySyncReport`而非`IUpdateReport`,并且在调用`compareBaselineSets()`时第三个参数应为`null`。此外,通过`outgoingChangeSets()`和`incomingChangeSets()`可以获取到正确的差异信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我尝试在纯Java中以编程方式比较一个流的两个快照…

第1步:获取我的信息流(工作中)

IWorkspaceConnection stream = null;

List list = RtcAdapter.inst().getStreams(); //my library

for (IWorkspaceConnection connection: list){

if (connection.getName().equalsIgnoreCase("myStreamName") ){

stream = connection;

break;

}

}//now we have found our stream

步骤2:获取基准(有效)

List snapShotList =

RtcAdapter.inst().getSnapShotsFromStream(stream);

IBaselineSet snapShot0 = null;

IBaselineSet snapShot1 = null;

for (IBaselineSet snapShot: snapShotList){

if (snapShot.getName().equalsIgnoreCase("mySnapShotName0") ){

snapShot0 = snapShot;

}

if (snapShot.getName().equalsIgnoreCase("mySnapShotName1") ){

snapShot1 = snapShot;

}

}//now we've got also my two snapShots

步骤3:相互比较(不起作用)

IUpdateReport report =

workspaceManager.compareBaselineSetConfigurations(

snapShot0, snapShot0, stream.getComponents(), monitor);

我的报告是空的…-讨厌-

report=com.ibm.team.scm.common.internal.dto.impl.UpdateReportImpl@1de5a20(stateBefore:< unset&gt ;, stateAfter:< unset>)

我也试图获取ChangeHistorySyncReport …

IChangeHistorySyncReport report =

workspaceManager.compareBaselineSets(

snapShot0, snapShot1, componentList(stream), monitor);

报告也为空…

那么如何创建适当的报告?或如何比较两个基准? (我究竟做错了什么?

report.getAffectedComponents()返回一个空数组,report.getModifiedComponents()也返回

更新

据我所知,我现在必须检查ChangeHistorySyncReport …,当我打印报告时会说:

com.ibm.team.scm.common.internal.dto.impl.ChangeHistorySyncReportImpl@150f091(localTime:< unset&gt ;, remoteTime:< unset&gt ;, compareFlags:< unset>)

这使我的问题更深-我如何设置更好的CompareFlags?

解决方法:

上帝花了我好几年….

但首先要做的是:使用IChangeHistorySyncReport而不是I完全是正确的

IUpdateReport …

那怎么了

IWorkspaceConnection stream; //is not null, already instantiated somewhere else

IBaselineSet bl0 = (IBaselineSet)

itemManager.fetchCompleteItem(baseLineHandle0, IItemManager.DEFAULT, monitor);

IBaselineSet bl1 = (IBaselineSet)

itemManager.fetchCompleteItem(baseLineHandle1, IItemManager.DEFAULT, monitor);

IChangeHistorySyncReport report =

workspaceManager.compareBaselineSets(bl0, bl1, getComponentHandles(stream), monitor);

简单的代码更改即可解决问题

//have a close look: 3.rd param is now null!!

IChangeHistorySyncReport report =

workspaceManager.compareBaselineSets(bl0, bl1, null, monitor);

顺便说一句,当我浏览报告时,还有另一个棘手的部分:

System.out.println("report: "+report );

System.out.println("incoming: "+report.incomingChangeSets() );

output:

report = com.ibm.team.scm.common.internal.dto.impl.ChangeHistorySyncReportImpl@127c1ae (localTime: , remoteTime: , compareFlags: )

incoming []

乍一看看上去是空的-但深入研究发现我只需要索要report.outgoingChangeSets()即可带来很大的(预期)变化…

但是当我交换基准workspaceManager.compareBaselineSets(bl1,bl0,null,monitor)时;然后

> report.outgoingChangeSets()为空,

> report.incomingChangeSets()带来正确的结果!

更新:

使用比较基准方法,我现在可以提供几个组件的完整差异!!!

标签:rtc,jazz,java

来源: https://codeday.me/bug/20191121/2050196.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值