我已经通过Article/Git-P4中描述的git-p4配置了perforce存储库的git镜像,并且工作了一段时间:我能够将强制更改转换为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
错误?
更新
多亏了布莱恩的回答我才能解决这个问题。原来我得到的错误是正确的,我确实打开了文件。我已经用p4 revert ...
命令在/path/to/git-p4-area
中恢复了它们,现在git p4 submit
工作得很好。
这个错误让我感到困惑,因为当您使用git-p4时,您不会在强制工作区中更改文件,而是使用git存储库,git-p4将git提交转换为强制更改,反之亦然。最后一次提交操作中,我的强制票过期了(票每12小时到期一次)。因此,一些文件被放在perforce工作区中打开。最好的解决办法是不超过12个小时.
发布于 2015-01-02 03:27:55
这是我的解决办法:
$ p4 opened -s | awk '{print $1}' | xargs p4 revert
..。因为p4 opened
输出(令人惊讶地)不是空的。
之后,通常的git p4 submit
成功了。
发布于 2014-11-26 07:22:56
客户端根目录告诉Perforce服务器,您的文件副本存储在工作站或膝上型计算机上。也许您在工作站上复制、重命名或移动了该文件夹?
如果您无意中移动或重命名该文件夹,则可以将其移回服务器期望的位置。
或者,您可以使用“p4客户端”命令更新客户端根,以便Perforce服务器知道文件存储在工作站上的位置。
https://stackoverflow.com/questions/27146713
复制相似问题