我创建了一个小插件来帮助我的源代码控制。
是否有人知道如何在Rational ClearCase中检索源文件的分支名称和版本号。我想用C#做这件事。所有信息实际存储在哪里?
答案 0 :(得分: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
(基本的CLI - 命令行界面) - )更可靠,特别是当出现问题时:错误信息更准确。
答案 1 :(得分:1)
您最好的选择可能是使用cleartool.exe命令行并解析结果。理想情况下,这通常是从perl或python脚本完成的,但它也适用于C#。我怀疑你会找到更直接的询问clearcase的方法,这很简单。
答案 2 :(得分: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;
}
}