【问题标题】:Force Perforce to accept workspace view as valid强制 Perforce 接受工作区视图为有效
【发布时间】:2011-04-06 10:58:18
【问题描述】:

我有许多文件已签出,并准备提交更改。

我意识到我的客户端规范对我的备用根进行了硬编码,因此我从客户端规范的所有行中删除了备用根,并在备用根框中指定了它。

我还有一些文件没有签出,我还没有准备好添加到更改列表中,所以我重命名了下面的目录结构,然后同步了我需要的所有分支,然后将目录重命名为 AltBranch,并将旧的重命名回来。

然而,现在所有签出的文件都被列为“未映射到工作区视图” - 但是它们仍然存在。

我想强制 perforce 同意我的版本,所以我尝试了p4 sync -k,但是我得到了错误

//.../X.cpp#10 - is opened for edit and can't be deleted

然后我尝试了p4 sync -k -f,但我得到了错误

//.../X.cpp#10 - refreshing C:\Work\...\X.cpp
//.../X.cpp#10 - is opened for edit and can't be deleted

总的来说,我真的很喜欢 Perforce,但是它坚持始终知道最好的做法令人沮丧

【问题讨论】:

    标签: perforce sync perforce-client-spec


    【解决方案1】:

    当您没有签出文件时,重新安排您的客户端映射要容易得多。你有规格仓库吗?如果是这样,您可以通过从规范库中恢复它来轻松地恢复到以前版本的客户端定义。然后,提交或搁置您的文件,这样您就可以在工作区中没有打开的文件。然后,您可以重新安排客户端映射并尝试不同的布局,Perforce 会很高兴地重新排序您磁盘上的文件,而不会遇到打开文件的问题。

    【讨论】:

    【解决方案2】:

    我已经设法生成了一个批处理文件,其中包含一系列 Perforce 命令来实现我想要的。

    这个解决方案是特定于 Windows/DOS 的 - 虽然我想其他命令 shell 可以完成这个修复所需的解析:

     @ echo off
     echo Please Exit Perforce
     pause
     setlocal
     rem Retrieve depot spec format of file
     for /f "delims=# " %%d in ('p4 files %1') do set p4name=%%d
     rem Retrieve current pending changelist
     for /f "tokens=5 delims= " %%d in ('p4 opened %p4name%') do set change=%%d
     p4 revert -k %p4name%
     p4 sync -k %p4name%
     p4 edit -c %change% %1
    

    此版本特定于文件,尽管可以使用目录版本将 files 替换为 dirs

    如果滴答中的命令失败,命令提示符也不会设置 ERRORLEVEL。

    【讨论】:

      【解决方案3】:

      我认为你可以做一个p4 reopen <changelist>,它应该会恢复正常。

      【讨论】:

        【解决方案4】:

        我有“未映射到工作区视图”,结果发现我的客户规范/工作区中有两个必须重新排序的映射。

        不好:

        //B/foo/... //mySpec/foo/...
        //A/... //mySpec/...
        

        好:

        //A/... //mySpec/...
        //B/foo/... //mySpec/foo/...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-10
          • 1970-01-01
          • 2010-10-31
          • 2012-10-19
          • 2013-05-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多