在ClearCase中检索源文件的版本号

时间:2009-02-14 08:32:43

标签: c# clearcase visual-studio-addins

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

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

3 个答案:

答案 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;
      }
}