2

我创建了一个小插件来帮助我进行源代码控制。

有谁知道我如何在 Rational ClearCase 中检索源文件的分支名称和版本号。我想使用 C# 来做到这一点。所有信息实际存储在哪里?

4

3 回答 3

3

您需要从 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 -- 命令行接口 --)更可靠,尤其是在出现问题时:错误消息更准确。

于 2009-02-14T10:28:00.170 回答
1

您最好的选择可能是使用 cleartool.exe 命令行并解析结果。理想情况下,这通常由 perl 或 python 脚本完成,但也可以在 C# 中工作。我怀疑你会找到任何更直接的方式来询问 clearcase 一样简单。

于 2009-02-14T09:04:57.217 回答
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;
      }
}
于 2010-08-23T15:11:44.270 回答