跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

使用 Jazz API 将历史性数据从 CMVC 转移至 Rational Team Concert 项目

Hou Liang Zheng, 软件工程师, IBM
Hou Liang Zheng
Hou Liang Zheng 是 IBM 全球技术服务的一名软件开发人员。他在大型能源管理系统和电子商务系统方面有丰富的经验。目前,他主要关注于配置管理过程优化。
Li Long Chen, IT 架构师, IBM
Li Long Chen
Li Long Chen 是 IBM 全球技术服务的一名 IT 架构师。他一直关注于构建大规模企业级应用系统。他一直关注于优化开发效率和鼓励团队创新,对新兴技术感兴趣,例如 SSNS,语义 Web,以及云计算。
Zheng Zhang, 资深软件工程师, IBM
Zheng Zhang 照片
Zheng Zhang 是 IBM 全球技术服务的一名软件工程师。他有八年多的软件开发工程师的经验,在水资源管理机构,政府以及通信行业,从事众多不同的 Java 2 平台、企业版应用软件的设计、开发和现代化工作。目前,他主要关注于云计算和虚拟化技术。

简介:  本文基于将历史数据,从配置管理版本控制(CMVC)转移至基于 IBM® Rational Team Concert™ 协作系统的经验。它描述了开始时分析软件配置管理系统之间的差异,创建映射并定义习俗规则,然后使用 IBM® Rational® Jazz® API 来从 CMVC 导入到 Rational Team Concert 中。

发布日期:  2010 年 2 月 09 日
级别: 中级

访问情况 : 6776 次浏览
评论: 

将历史数据导入到 Rational Team Concert

将用户导入到 Rational Team Concert

既然我们拥有所有需要导出的数据,那么我们就可以开始使用 User.txt 文件将用户导入到 Rational Team Concert 之中。如果只有少部分用户的话,手动导入它们也许会更快。否则,如有需要您可以使用 Jazz APIs 来完成操作。


将缺陷或者特性导入到 Rational Team Concert

接下来,我们将会处理缺陷和特性导入。

  1. 分析每一个导出的缺陷或者特性数据文件,以得到基于 Defects/Features Mapping 规则的基本属性。您可以决定只转移您所感兴趣的字段,而不是所有的字段。代码清单 7 只给出了核心导入 Java 代码。

清单 7. 导入缺陷或者特性的核心 Java 代码
					
private static class WorkItemInitialization extends WorkItemOperation {
    private WorkItemAttributes workItemAttr;
    public WorkItemInitialization(WorkItemAttributes workItemAttr) {
        super("Initializing Work Item");
        this.workItemAttr = workItemAttr;
    }

    @Override
protected void execute(WorkItemWorkingCopy workingCopy, 
		IProgressMonitor monitor) throws TeamRepositoryException {
        IWorkItem workItem= workingCopy.getWorkItem();

        // set the work item attribute one by one
         // …
    }
}

// work item creation
WorkItemInitialization operation = 
new WorkItemInitialization(WorkItemAttribute att);
IWorkItemHandle handle = operation.run(workItemTypeTask, null);
IWorkItem workItem = 
    auditableClient.resolveAuditable(handle, IWorkItem.FULL_PROFILE, null);

int def_fec_id_new = workItem.getId();
// record the return work item id and 
// the old CMVC defect/feature name mapping.  
sbFeatureMapping.append(def_fec_id + "\t" + def_fec_id_new + "\r\n");

  1. 调用 Rational Team Concert API 以创建工作项并记录返回的工作项 ID。您需要工作项 ID 以导入一个特定的代码版本。这就是说,我们将会使用为缺陷或者缺陷创建的工作项 ID 来检入每一个历史版本。
  2. 在那这后,将映射的工作项 ID 与 CMVC 缺陷号码写入到 Def_wrkitmID.txt 文件,如代码清单 8 所示。

清单 8. 缺陷名与工作项 ID 映射列表(范例)
					
20278	31
20279	32
20280	33

同样,将工作项 ID 与 CMVC 特性号码,映射到 Fea_wrkitmID.txt 文件,如代码清单 9 所示。


清单 9. 特性名与工作项 ID 映射列表
					
20226	34
19428	35
19167	36
19405	37
21318	38
20286	39

当您在导入源代码时,将会使用到这些 CMVC 缺陷或者特性号码以及 Rational Team Concert 工作项 ID 映射关系。与 CMVC 中缺陷或者特性相关的源代码文件,应该映射至 Rational Team Concert 之中的新工作项 ID。


将源代码导入到 Rational Team Concert

现在我们拥有了版本历史信息文件,Path_historyver.txt。在我们的版本历史信息之中,文件路径的第一部分就是构件名,例如“build”与“src”。

  1. 在 Rational Team Concert 工作区中创建并共享构件文件夹,如图 6 所示。

图 6. Rational Team Concert 中的共享构件文件夹
构建以及 src 构件的文件夹
  1. 在 Java 程序中导入源代码历史:
    1. 在 Path_historyver.txt 文件查看每一个源代码文件以及历史版本,并创建映射新工作项 ID 的原始缺陷或者特性的更改集。
    2. 将源代码放到 Rational Team Concert 工作区之中,releaseAWorkSpace,然后将代码变更交付到 Rational Team Concert releaseA 流程之中。
    3. 当您在创建更改集时,在注释中添加 CMVC 版本信息是一个不错的操作方式。

清单 10 显示了核心的导入 Java 快照。


清单 10. 导入源代码的核心 Java 片段
					
IFileItem fileItem = null;
if(isNewFile()) {
    fileItem = (IFileItem) IFileItem.ITEM_TYPE.createItem();
} else {
    fileItem = (IFileItem) workspaceConnection.configuration(myComponent)
                     .fetchPartialItem(fileItem, null, monitor);
    fileItem = (IFileItem)fileItem.getWorkingCopy();
}
    
fileItem.setName(fileInfo.fileName);
fileItem.setParent(parentFolder);
                    
FileLineDelimiter delimiter = FileLineDelimiter.LINE_DELIMITER_NONE;
                    
IFileContent storedContent = contentManager.storeContent(
        IFileContent.ENCODING_US_ASCII, delimiter,
        new VersionedContentManagerByteArrayInputStreamPovider( 
             readFileToByteArray(fileInfo, version) ),
        null, monitor);

fileItem.setContentType(IFileItem.CONTENT_TYPE_TEXT);
fileItem.setContent(storedContent);
fileItem.setFileTimestamp(new Date());

IChangeSetHandle changeSetHandle = 
    workspaceConnection.createChangeSet(myComponent, "--" + version.toString(), 
        false, monitor);
    fileWorkItemmanager.createLink(workspace, changeSetHandle, 
        new IWorkItemHandle[]{handleWorkitem}, monitor);

// commit the change to workspace
workspaceConnection.commit(changeSetHandle, 
    Collections.singletonList(workspaceConnection.configurationOpFactory()
        .save(fileItem)), monitor);

// deliver the changes to the stream
IChangeHistorySyncReport sync = 
    workspaceConnection.compareTo(streamConnection, 
        WorkspaceComparisonFlags.CHANGE_SET_COMPARISON_ONLY,
            Collections.EMPTY_LIST, monitor); 

workspaceConnection.deliver(streamConnection, sync, Collections.EMPTY_LIST, 
    sync.outgoingChangeSets(myComponent), monitor);

6 页,共 11 | 前一页 | 后一页

评论



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=626091
TutorialTitle=使用 Jazz API 将历史性数据从 CMVC 转移至 Rational Team Concert 项目
publish-date=02092010
author1-email=zhenghl@cn.ibm.com
author1-email-cc=
author2-email=chenlil@cn.ibm.com
author2-email-cc=
author3-email=zhangzbj@cn.ibm.com
author3-email-cc=

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。