我已经通过git-p4配置了perforce存储库的git镜像,如http://answers.perforce.com/articles/KB_Article/Git-P4中所述并且运行良好一段时间:我能够将perforce更改为git并将git更改提交给perforce。然后突然git p4 submit
命令停止工作。当我运行它时,我收到一个错误:
You have files opened with perforce! Close them before starting the sync.
当我以详细模式运行它时,它显示p4 -c <client name> -G opened ...
命令失败并显示以下输出:
{scodeserrorsdatasrPath '/path/to/git/clone/...' is not under client's root '/path/to/git-p4-area'.
severityisgenerici0%
嗯,它确实不在/path/to/git-p4-area
之下,但之前不是问题。此外,我仍然可以毫无问题地运行git p4 rebase
。如何解决Path is not under client's root
错误?
更新
由于布莱恩的回答,我能够解决它。事实证明我得到的错误是正确的,我确实在perforce中打开了文件。我已使用p4 revert ...
内的/path/to/git-p4-area
命令将其还原,现在git p4 submit
正常工作。
错误使我感到困惑,因为当您使用git-p4时,您不会更改perforce工作区中的文件,而是使用git存储库,git-p4将git提交转换为perforce更改,反之亦然。原来我的perforce票在上次提交操作中过期(票证每12小时到期)。因此,一些文件在perforce工作区中保持打开状态。最好的解决办法是工作不到12小时......
答案 0 :(得分:4)
这是我的解决方案:
$ p4 opened -s | awk '{print $1}' | xargs p4 revert
...因为p4 opened
输出(令人惊讶)不是空的。
之后,通常git p4 submit
成功。
答案 1 :(得分:2)
客户端root告诉Perforce服务器您的工作站或笔记本电脑上存储了文件副本的位置。也许您在工作站上复制或重命名或移动了该文件夹?
如果您无意中移动或重命名了该文件夹,则可以将其移回服务器所期望的位置。
或者,您可以使用&#39; p4客户端&#39;命令更新客户端root,以便Perforce服务器知道文件在工作站上的存储位置