2009-06-17 3 views
2

Dans ClearCase, vous pouvez lister le contenu d'un répertoire en utilisant "cleartool ls".ClearCase: liste le contenu d'un répertoire (ls) en utilisant CAL

Ma question est comment puis-je faire la même chose en utilisant CAL (ClearCase Automation Layer). La raison pour laquelle je préfère l'API COM est que je n'aurai pas à analyser la sortie de "ls". Jusqu'à présent, je suis en mesure d'obtenir le VOB et la vue avec succès, mais je n'ai trouvé aucune méthode pour répertorier le contenu.

Mon code à ce jour:

IClearCase cc = new ApplicationClass(); 
CCVOB vob = cc.get_VOB("\\VOB-name"); 
CCView view = cc.get_View("ViewTag"); 

Merci pour votre aide.

J'ai écrit la réponse de VonC en C# pour ceux qui sont intéressés.

string[] files = Directory.GetFiles("View path here", "*.*", SearchOption.AllDirectories); 
foreach (string file in files) 
{ 
    try 
    { 
      CCVersion ver = cc.get_Version(file); 
      Console.WriteLine(ver.Path); 
    } 
    catch(Exception) {/*the file is not versioned*/} 
} 
+0

Terminé ma réponse pour la partie "rmname". – VonC

+0

J'ai terminé mes commentaires sur votre question "ICCElement". – VonC

Répondre

1

Peut être c'est un bon début:

Set CC = Wscript.CreateObject("ClearCase.Application") 
Set DirVer = CC.Version(".") 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set Folder = FSO.GetFolder(DirVer.Path) 
Wscript.Echo "Files under source control: " 
For Each File in Folder.Files 
    On Error Resume Next 
    Set Ver = CC.Version(File.Name) 
    If Err.Number = 0 Then 
      Wscript.Echo Ver.ExtendedPath 
    End If 
Next 

L'idée étant d'utiliser des méthodes ICCVersion pour essayer d'accéder à la version d'un fichier. S'il ne renvoie pas d'erreur, il s'agit bien d'un fichier versionné.


Maintenant, je sais que le fichier est versionné, comment puis-je retirer (rmname).

Ne pas utiliser RemoveVersion():
Enlève la version irréparablement (équivalent à cleartool rmver)
ATTENTION! C'est une opération potentiellement destructive. Étant donné que CAL n'invite pas l'utilisateur à entrer en aucune circonstance, il n'y a aucune étape de confirmation lorsque RemoveVersion est appelée. L'appel RemoveVersion équivaut à exécuter cleartool rmver avec l'option -force.

Utilisez plutôt le RemoveName à partir de l'interface ICCElement.

+0

CC.Version (".") Ne fonctionnera que si vous définissez le répertoire en cours sur le chemin d'accès (via Environement.CurrentDirectory en C#). Si c'est le cas, vous ne pouvez pas simplement supprimer la deuxième ligne, et faire "Set Folder = FSO.GetFolder (" - votre chemin d'accès ici - ")"? En d'autres termes, la deuxième ligne est nécessaire? Ty. –

+0

Dans le cas que vous mentionnez, cette deuxième ligne serait en effet inutile. Mais je n'ai pas encore entièrement testé. – VonC

+0

Ok, encore une fois. Si j'ose ajouter une autre petite question. Maintenant, je sais que le fichier est versionné, comment puis-je l'enlever (rmname). Il y a RemoveVersion (...), mais je ne suis pas sûr que ce soit l'équivalent de rmname. –

Questions connexes