【问题标题】:How can I interact with ClearCase from Perl?如何从 Perl 与 ClearCase 交互?
【发布时间】:2011-01-17 09:48:48
【问题描述】:

我的项目需要使用 Excel 表中的 Perl 脚本从 ClearCase 数据中提取一些东西,它们是 -
通过给出两条特定的时间线或两条基线。

  1. 该基线内关联的所有活动(列标题“活动”)
  2. 所有者 ID(列标题-所有者)
  3. 在特定活动中关联的所有元素。 (列标题-“元素详情”)
  4. 为每个元素关联的版本(列标题-“版本”)
  5. 每个元素的代码总行数,添加的代码总行数,删除的代码总行数,更改的代码总行数..(列标题“代码行数” ,"添加的代码行","删除的代码行" & "更改的代码行")

请帮我解决这个问题...

【问题讨论】:

    标签: perl clearcase


    【解决方案1】:

    基本上,ClearCase Perl 脚本基于系统和 cleartool 命令的解析输出。

    脚本基于 cleartool 运行 cmd,如 package CCCmd,使用如下:

    use strict;
    use Config;
    require "path/to/CCCmd.pm";
    
    sub Main
    {
      my $hostname = CCCmd::RunCmd('hostname');
      chomp $hostname;
      my $lsview = CCCmd::ClearToolNoError("lsview -l -pro -host $hostname");
      return 1;
    }
    
    Main() || exit(1);
    exit(0);
    

    例如。

    因此,一旦您掌握了基本的 Perl 结构,您所需要的只是基于 fmt_ccase 指令的正确 cleartool 命令进行分析。

    1/ 该基线内关联的所有活动(列标题“活动”)

     ct descr -fmt "%[activities]CXp" baseline:aBaseline.xyz@\ideapvob
    

    这将为您提供活动列表(以“,”分隔)。

    对于每个活动:

    2/ Owner的id(列头-Owner)

     ct descr -fmt "%u" activity:anActivityName@\ideapvob
    

    3/ 在特定活动中关联的所有元素。 (列标题-“元素详情”)

    不确定:activity 可以列出它们的版本(见 /4),而不是简单地列出它们的元素

    4/ 为每个元素关联的版本(列标题-“版本”)

    对于给定的活动:

     ct descr -fmt "%[versions]CQp\n"  activity:anActivityName@\ideapvob
    

    5/每个元素的代码总行数,添加的代码总行数,删除的代码总行数,更改的代码总行数..(列标题“行数”代码","添加的代码行","删除的代码行" & "更改的代码行")

    这可能相当长,但对于每个版本,您可以计算前一个版本的扩展路径并进行比较。

    我建议对所有这些都使用动态视图,因为您可以从那里访问文件的任何版本(而不是快照视图)。

    【讨论】:

      【解决方案2】:

      此外,如果您需要将 perl 与 Clearcase 一起使用,请查看 CPAN 模块 ClearCase::CtCmd。我建议使用这个 perl 模块来调用 clearcase 命令。

      【讨论】:

        【解决方案3】:

        对于 CCCmd 包,我必须删除 RunCmd 和 RunCmdNoError 子程序中的双引号才能使其工作。

        【讨论】:

          猜你喜欢
          • 2012-06-15
          • 2011-01-16
          • 2021-01-08
          • 2013-02-13
          • 1970-01-01
          • 1970-01-01
          • 2014-02-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多