2009-02-14 52 views
2

我創建了一個小插件來幫助我的源代碼管理。在ClearCase中檢索源文件的版本號

有誰知道我可以如何檢索Rational ClearCase中源文件的分支名稱和版本號。我想用C#來做到這一點。所有信息實際存儲在哪裏?

+0

您可以在C#中使用Clearcase Automation COM庫 – Arslan 2010-08-23 15:01:52

回答

3

你需要,從C#,執行cleartool命令

更具體地說,一個format option只顯示正是你是什麼後descr

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(基本的CLI - 命令行界面 - )更可靠,特別是當事情出錯時:錯誤消息更精確。

+0

超酷。我實際上發現如何使用「描述」容易。但是,-fmt選項有很大幫助,因爲它減少了解析整個描述的開銷。 – Elroy 2009-02-14 11:37:01

1

最好的辦法是使用cleartool.exe命令行並解析結果。理想情況下,這通常是通過perl或python腳本完成的,但它也可以從C#工作。我懷疑你會發現任何更直接的詢問clearcase的方式,這很簡單。

0

您必須從COM中添加Clearcase Automation參考,然後這是可以獲取源文件的版本和分支名稱的代碼。

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; 
     } 
} 
相關問題