我創建了一個小插件來幫助我的源代碼管理。在ClearCase中檢索源文件的版本號
有誰知道我可以如何檢索Rational ClearCase中源文件的分支名稱和版本號。我想用C#來做到這一點。所有信息實際存儲在哪裏?
我創建了一個小插件來幫助我的源代碼管理。在ClearCase中檢索源文件的版本號
有誰知道我可以如何檢索Rational ClearCase中源文件的分支名稱和版本號。我想用C#來做到這一點。所有信息實際存儲在哪裏?
你需要,從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 - 命令行界面 - )更可靠,特別是當事情出錯時:錯誤消息更精確。
超酷。我實際上發現如何使用「描述」容易。但是,-fmt選項有很大幫助,因爲它減少了解析整個描述的開銷。 – Elroy 2009-02-14 11:37:01
最好的辦法是使用cleartool.exe命令行並解析結果。理想情況下,這通常是通過perl或python腳本完成的,但它也可以從C#工作。我懷疑你會發現任何更直接的詢問clearcase的方式,這很簡單。
您必須從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;
}
}
您可以在C#中使用Clearcase Automation COM庫 – Arslan 2010-08-23 15:01:52