2009-02-14 3 views
2

Я создаю небольшое дополнение, чтобы помочь с моим источником управления.Извлечение номера версии исходного файла в ClearCase

Кто-нибудь знает, как я могу получить имя филиала и номер версии исходного файла в Rational ClearCase. Я хочу сделать это с помощью C#. Где хранится вся информация?

+0

Вы можете использовать библиотеку COM Clearcase Automation COM в C# – Arslan

ответ

3

Вам нужно, от C#, чтобы выполнить команду cleartool

Более конкретно, descr с format option только отображаются точно то, что вы после этого.

cleartool descr -fmt "%Sn" youFileFullPath 

Это возвращает строку, как /main/34, означая /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); 
} 

Примечание: рекомендуется всегда использовать двойные кавычки вокруг вашего файла полный путь, в случае, если путь или что имя файла содержит пробелы


Как я объяснил в этом другом ClearCase SO question, вы можете также использовать CAL interface (COM-объект), но я всегда нашел cleartool (базовый интерфейс командной строки - более надежный, особенно когда все идет не так: сообщение об ошибке намного точнее.

+0

Super cool. Я действительно узнал, как легко «описать». Но опция -fmt имеет большую помощь, поскольку она уменьшает накладные расходы при анализе всего описания. – Elroy

1

Лучше всего использовать командную строку cleartool.exe и проанализировать результат. В идеале это обычно делается из скрипта perl или python, но он также будет работать с C#. Я сомневаюсь, что вы найдете более прямой способ опроса ясного чемодана, который так же прост.

0

Вам нужно будет добавить ссылку на Clearcase Automation из COM, тогда это код, который предоставит вам версию и название ветки вашего исходного файла.

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