git-p4提交失败并显示“Path is not under client's root”错误

时间:2014-11-26 10:28:05

标签: git perforce git-p4

我已经通过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小时......

2 个答案:

答案 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服务器知道文件在工作站上的存储位置