git-p4提交失败,返回';路径不在客户端';s根';错误

git-p4提交失败,返回';路径不在客户端';s根';错误,git,perforce,git-p4,Git,Perforce,Git P4,我已经按照中所述通过git-p4配置了perforce存储库的git镜像,并且工作了一段时间:我能够将perforce更改获取到git中,并将git更改提交给perforce。然后,gitp4 submit命令突然停止工作。当我运行它时,我得到一个错误: You have files opened with perforce! Close them before starting the sync. 当我在详细模式下运行它时,它显示p4-c-G opened…命令失败,输出如下: {scode

我已经按照中所述通过git-p4配置了perforce存储库的git镜像,并且工作了一段时间:我能够将perforce更改获取到git中,并将git更改提交给perforce。然后,
gitp4 submit
命令突然停止工作。当我运行它时,我得到一个错误:

You have files opened with perforce! Close them before starting the sync.
当我在详细模式下运行它时,它显示
p4-c-G opened…
命令失败,输出如下:

{scodeserrorsdatasrPath '/path/to/git/clone/...' is not under client's root '/path/to/git-p4-area'.
severityisgenerici0%
嗯,它确实不在
/path/to/git-p4-area
下,但这以前不是问题。而且我仍然可以毫无问题地运行
gitp4 rebase
。如何修复
路径不在客户端根目录下的错误

更新

多亏了布莱恩的回答,我才得以解决。结果证明我得到的错误是正确的,我确实在perforce中打开了文件。我已经用
p4 revert…
命令将它们还原到
/path/to/git-p4-area
中,现在
git-p4 submit
工作正常


这个错误让我感到困惑,因为当您使用git-p4时,您不会更改perforce工作区中的文件,而是使用git存储库,git-p4将git提交转换为perforce更改,反之亦然。在最后一次提交操作中,我的罚单过期了(每12小时票过期)。因此,一些文件被保留在perforce工作区中打开。最好的解决方案是工作时间少于12小时…

客户端根目录告诉Performce server您的文件副本存储在工作站或笔记本电脑上的位置。您是否复制、重命名或移动了工作站上的文件夹

如果您无意中移动或重命名了文件夹,则可以将其移回服务器预期的位置


或者,您可以使用“p4 client”命令更新您的客户端根目录,以便Perforce server知道文件存储在工作站上的位置

这是我的解决方案:

$ p4 opened -s | awk '{print $1}' | xargs p4 revert
。。。因为
p4打开
输出(令人惊讶地)不是空的


之后,通常的
gitp4提交
成功。

感谢您的回答!它帮助我解决了这个问题。我没有碰perforce存储文件的文件夹。结果证明,
gitp4提交
错误是正确的。我确实在perforce中打开了文件,一旦我恢复了它们,我就能够成功地提交gitp4。