2010-02-16 8 views
2

Mon projet a besoin de deux choses à extraire des données ClearCase en utilisant le script Perl dans une feuille Excel:
En donnant deux lignes de temps ou deux lignes de base.Comment puis-je interagir avec ClearCase à partir de Perl?

  1. toute l'activité associée à l'intérieur de cette base
  2. l'identifiant du propriétaire (colonne en-tête du propriétaire)
  3. tout l'élément (tête de colonne « activité ») associée au sein d'une activité particulière. (en-tête de colonne - "détails de l'élément")
  4. Pour chaque élément les versions associées (en-tête de colonne "Versions")
  5. pour chaque élément, le nombre total de lignes de code, le nombre total de lignes de code ajoutées, le nombre total de lignes de code supprimées, nombre total de lignes de code modifiées .. (en-tête de colonne "lignes de code", "lignes de code ajoutées", "lignes de code supprimées" & "lignes de code modifiées")

S'il vous plaît bien vouloir me aider sur ce ...

+4

Obligatoire: Qu'avez-vous essayé jusqu'à présent? Quelle partie avez-vous des problèmes avec? Montrer du code. Montrer quelques données – toolic

Répondre

5

Fondamentalement, les scripts Perl ClearCase est basé sur les sorties des commandes analysables du système et cleartool.

Les scripts sont basés sur une course cleartool cmd comme package CCCmd, et utilisés comme:

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); 

par exemple.

Donc, une fois que vous avez la structure de base de Perl, vous n'avez besoin que des bonnes commandes cleartool à analyser, basées sur les directives fmt_ccase.

1/toute l'activité associée dans cette ligne de base (en-tête colonne "activité")

ct descr -fmt "%[activities]CXp" baseline:[email protected]\ideapvob 

Cela vous donnera la liste des activités (séparées par ',').

Pour chaque activité:

2/id d'emploi (colonne en-tête propriétaire)

ct descr -fmt "%u" activity:[email protected]\ideapvob 

3/tout l'élément associé dans une activité particulière.("détails de l'élément" de la colonne tête-)

Pas sûr: les activités peuvent inscrire leurs versions (voir/4), pas facilement leurs éléments

4/Pour chaque élément les versions associées (en-tête de colonne - "versions")

Pour une activité donnée:

ct descr -fmt "%[versions]CQp\n" activity:[email protected]\ideapvob 

5/pour chaque élément, le nombre total de lignes de code, le nombre total de lignes de code ajoutées, le nombre total de lignes de code supprimées, le nombre total de lignes de code modifiées .. (en-tête de colonne "No. des lignes de code », « lignes de code ajoutées », « lignes de code supprimé » & « lignes de code a changé »)

Cela peut être assez long, mais pour chaque version, vous pouvez calculer le chemin étendu de la version précédente et faire une diff.

Je conseillerais à l'aide pour tout ce qui une vue dynamique, puisque vous pouvez accéder à une version d'un fichier à partir de là (par opposition à une vue instantanée).

2

aussi, si vous devez utiliser perl avec Clearcase jeter un oeil au module CPAN ClearCase::CtCmd. Je recommande d'utiliser ce module Perl pour invoquer des commandes clearcase

0

Pour le paquet CCCmd, j'ai dû supprimer les doubles guillemets dans les sous-programmes RunCmd et RunCmdNoError pour le faire fonctionner.

Questions connexes