3

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

4

2 回答 2

4

这是我的解决方案:

$ p4 opened -s | awk '{print $1}' | xargs p4 revert

...因为p4 opened输出(令人惊讶地)不是空的。

在那之后,通常git p4 submit成功了。

于 2015-01-02T11:27:55.733 回答
2

客户端根告诉 Perforce 服务器您的文件副本存储在您的工作站或笔记本电脑上的什么位置。也许您在工作站上复制、重命名或移动了该文件夹?

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

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

于 2014-11-26T15:22:56.927 回答