我创建了一个小插件来帮助我进行源代码控制。
有谁知道我如何在 Rational ClearCase 中检索源文件的分支名称和版本号。我想使用 C# 来做到这一点。所有信息实际存储在哪里?
我创建了一个小插件来帮助我进行源代码控制。
有谁知道我如何在 Rational ClearCase 中检索源文件的分支名称和版本号。我想使用 C# 来做到这一点。所有信息实际存储在哪里?
您需要从 C# 执行cleartool
命令
更具体地说,descr
带有格式选项的 a仅显示您所追求的内容。
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 接口(COM 对象),但我一直发现cleartool
(基本 CLI -- 命令行接口 --)更可靠,尤其是在出现问题时:错误消息更准确。
您最好的选择可能是使用 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;
}
}