2009-02-14 7 views
2

Je crée un petit addin pour aider avec mon contrôle de source.Récupération du numéro de version d'un fichier source dans ClearCase

Est-ce que quelqu'un sait comment je pourrais récupérer le nom de la succursale et le numéro de version d'un fichier source dans Rational ClearCase. Je veux le faire en utilisant C#. Où toutes les informations sont-elles réellement stockées?

+0

Vous pouvez utiliser la bibliothèque COM Clearcase Automation dans C# – Arslan

Répondre

3

Vous avez besoin, de C#, pour exécuter une commande cleartool

Plus précisément, un descr avec un format option que l'affichage exactement ce que vous recherchez.

cleartool descr -fmt "%Sn" youFileFullPath 

qui renverra une chaîne comme /main/34, ce qui signifie /branch/version

System.Diagnostics.ProcessStartInfo psi = 
new System.Diagnostics.ProcessStartInfo(@"cleartool"); 
psi.RedirectStandardOutput = true; 
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
psi.Arguments = "descr -fmt \"%Sn\" \"" + yourFilePath + "\""; 
psi.UseShellExecute = false; 
System.Diagnostics.Process monProcess; 
monProcess= System.Diagnostics.Process.Start(psi); 
System.IO.StreamReader myOutput = monProcess.StandardOutput; 
monProcess.WaitForExit(); 
if (monProcess.HasExited) 
{ 
    //la sortie du process est recuperee dans un string 
    string output = myOutput.ReadToEnd(); 
    MessageBox.Show(output); 
} 

Note: il est recommandé de toujours utiliser des guillemets doubles autour de votre chemin complet du fichier, dans le cas où ce chemin ou ce nom de fichier comprend des espaces


Comme je l'ai expliqué dans cet autre ClearCase SO question, vous pouvez également utiliser le CAL interface (Objet COM), mais j'ai toujours trouvé cleartool (l'interface de ligne de commande de base - CLI -) plus fiable surtout quand les choses tournent mal: le message d'erreur est beaucoup plus précis.

+0

Super cool. J'ai effectivement découvert comment utiliser "décrire" facilement. Mais, l'option -fmt est d'une grande aide car elle réduit les frais généraux d'analyse de toute la description. – Elroy

1

Votre meilleur pari est probablement d'utiliser la ligne de commande cleartool.exe et d'analyser le résultat. Idéalement, cela est généralement fait à partir d'un script Perl ou Python, mais cela fonctionnera aussi à partir de C#. Je doute que vous trouviez une manière plus directe d'interroger le clair, qui est aussi simple.

0

Vous devrez ajouter la référence Clearcase Automation de COM, puis c'est le code qui vous donnera la version et le nom de la branche de votre fichier source.

ClearCase.Application cc = new ClearCase.Application(); 
ClearCase.CCView view = cc.get_View("YOUR VIEW"); 
ClearCase.CCActivity activity = view.CurrentActivity; 
ClearCase.CCVersions versions = activity.get_ChangeSet(view); 

int nVersion = -1; 
String name = String.Empty; 

foreach (ClearCase.CCVersion version in versions) 
{ 
     if (version.Path.Contains("YOUR FILENAME")) 
     { 
      nVersion = version.VersionNumber; 
      ClearCase.CCBranch branch = version.Branch; 
      ClearCase.CCBranchType type = branch.Type; 
      name = type.Name; 
      break; 
     } 
} 
Questions connexes