C# ClearCase:如何编辑文件,然后将其签出并保存更改后再签入?

4
我试图通过编程的方式编辑一个已经检入的文件,然后将其检出并保存在检入时所做的更改。然后用保存的更改将其重新检入: 编辑->检出->保存->检入
当尝试保存时,我遇到了一个问题,即该文件无法识别自己在文件夹中,并认为它正在尝试覆盖另一个文件。
    void checkOut(string sourcefile)
    {
        ClearCase.CCElement element = m_CC.get_Element(sourcefile);

        if (element != null)
        {
            ClearCase.CCVersion latestVersion = null;
            FileInfo fi = new FileInfo(sourcefile);

            latestVersion = element.get_Version();
            if (latestVersion != null)
            {
                ClearCase.CCBranch branch = latestVersion.Branch;
                ClearCase.CCCheckedOutFile file = latestVersion.CheckOut(ClearCase.CCReservedState.ccReserved, "", false, ClearCase.CCVersionToCheckOut.ccVersion_SpecificVersion, true, false);
                string path = file.ExtendedPath;
            }
        }
    }

    void checkIn(string sourcefile)
    {
        ClearCase.CCElement element = m_CC.get_Element(sourcefile);
        element.CheckedOutFile.CheckIn("", true, sourcefile, ClearCase.CCKeepState.ccRemove);
    }


    void excelEdit()
    {
      string fileName = Globals.ThisAddIn.Application.ActiveWorkbook.Name;

      //EDIT EXCEL FILE from (fileName)

      checkOut(fileName);
      Globals.ThisAddIn.Application.ActiveWorkbook.SaveAs(fileName);
      checkIn(fileName);
    }

为什么你想要这样做呢?如果你问我,这违背了版本控制的概念。 - Srikanth Venugopalan
4个回答

3

如果您手动操作而不是以编程方式进行操作,则不应该使用这种过程,也不建议这样做。

您应先检查文件(这将使其在磁盘上可写),然后编辑它,保存它,然后再将其签入(这将使其在磁盘上为只读)。

您可能认为在 Visual Studio 中,您在检出前就开始编辑,但实际上,Visual Studio 将在您开始编辑时对文件进行检查。


2
我认为ClearCase通过替换当前的只读文件副本为新的可写文件来检出文件。这可以解释您正在看到的行为。
我建议您将文件复制到临时位置,修改副本,检出原始文件,将修改后的临时文件复制回来并进行签入。

顺便说一句,我同意Steve Morgan的观点,你确实应该先检查文件,然后再进行修改。不过,我尽量提供了一个与你方法最接近的解决方案。 - Nicola Musatti

2
注意:您可以使用快照视图来进行所需操作,其中您可以:
  • 更改只读属性
  • 编辑(在此过程中使您的文件“劫持”)
  • checkout(保留带有选项-use/hijack的劫持版本)
  • 检查
–use/hijack

指示checkout使用劫持的文件作为已检出的版本。
如果被检出的文件没有劫持的对应文件,则此选项会被静默忽略。

当您想立即测试修改而不必告诉每个人您正在修改该文件时,该过程可能是有意义的:如果修改有效,则尝试checkout,然后checkin。

但是,在动态视图中,这将不可能(或者将更加困难)。

因此,除非您有非常特定的原因要在结账前尝试修改,否则官方流程(由Steve描述)更可取。

0
如果ClearCase与TFS相似的话,你可能需要将文件设置为只读状态,直到你进行检出操作。 因此,你需要执行以下步骤:设置文件为非只读状态 -> 编辑 -> 检出 -> 保存 -> 检入。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接