当Perforce P4出现客户端未知错误时,如何设置客户端根目录?

13

突然间,在终端中运行p4 info时,我注意到客户端根目录没有设置(不确定为什么会突然取消设置)。以下是输出,显示“客户端未知”代替客户端根目录。我可以通过什么命令来设置相同的根目录?我尝试过p4 clientp4 set,但可能使用了错误的语法。

BANL121b92746:Applications bagarwal2$ p4 info
User name: bagarwal2
Client name: BANL121b92746
Client host: BANL121b92746.local
Client unknown.
Current directory: /Applications

这个客户端的根目录值是否与我在 P4V 客户端的 Connections->Edit Workspace 下设置的“Workspace Root”相同。我的 P4V 客户端一直工作正常。当我的 Intellij IDEA 开始出现与 P4 的连接问题时,我在 p4 info 中发现了这个问题。在 IDEA 中测试连接时,下面是错误截图,与在终端中执行 p4 info 时相同。

图片描述

关于我的 p4settings.txt 配置,以下是几个月以来一直有效的配置:

P4HOST=<hidden hostname>:2500
P4CLIENT=bagarwal2_BANL121b92746_trunk
P4USER=bagarwal2
P4POST=<hidden hostname>:2500

我的P4V连接(一切正常),使用与上述提到的相同的详细信息/配置,但仍然在终端和因此在Intellij IDEA中遇到了这个问题。


1
尝试在P4V中运行“show connection info”并将结果粘贴。基本上,您希望“p4 info”与之匹配 - 如果我们可以看到,我们可以告诉您要运行哪些“p4 set”命令以使其匹配。您只需要设置P4PORT,P4USER和P4CLIENT即可。 - Samwise
嗨Sam,我已经编辑了问题并添加了一些细节。我注意到我没有显式添加P4PORT,我记得在它能正常工作之前不需要。此外,在P4V中,我找不到“显示连接信息”,我从“连接->打开连接”菜单中找到了它,确认值与此处设置的值匹配正确。我还尝试在p4settings.txt中添加“P4PORT=2500”或“P4PORT=<hidden hostname>: 2500”,错误从“客户端未知”更改为“未连接”。 - Bhavesh Agarwal
5个回答

11

尝试使用p4 set p4client=my_client

这将在注册表中存储您的首选客户端。有其他方法可用于设置客户端,具有不同的优先级和范围:

  • 环境变量(可能因进程而异)
  • P4CONFIG文件(可能在每个文件系统位置上都不同)
  • 命令行选项(可能对每个p4.exe调用都不同)

但是为了简单起见,只需要使用p4 set

顺便说一下,P4V使用自己的设置(启动P4V时会默认显示一个对话框)。


谢谢。我尝试了这个命令,但是它仍然显示相同的错误“客户端未知”对于根目录。我尝试了工作区名称和完整绝对路径的工作区名称。这个命令难道只设置客户端名称而不是根目录吗?我问这个问题的原因是在我的情况下名称已经设置好了。 - Bhavesh Agarwal
根是客户端的一个属性。要设置它,请使用P4V,选择“视图”>“工作区”>按名称查找(BANL121b92746)>右键单击并选择“编辑”>设置其工作区根目录。如果已经设置,则可以开始使用。(但我不确定您遇到了什么问题。) - sferencik
再次感谢您。工作区名称和根目录在P4V中都已正确设置,并且P4V客户端正常工作。我正在检查p4安装程序的信息,通过在终端中输入“p4 info”,我认为这是有问题的。当我试图检出P4文件时,我的Intellij IDE突然弹出了“client unknown”错误,因此我得知了这个问题。 - Bhavesh Agarwal
你认为IntelliJ由于p4 info中缺少“Client root”而失败,这是为什么?是否有文档说明IDEA使用p4 info来执行此操作?如果真的是这样,我会感到非常惊讶。另外,“client unknown”对我来说意味着“客户端名称未知”(如未设置客户端),而不是“客户端根目录未知”。 - sferencik
谢谢。问题现在已经解决了。我不得不在我的bash_profile中设置P4CLIENT "export P4CLIENT=${USER}_BANL121b92746_trunk",然后它就可以在终端和Intellij Idea中工作了。感谢所有的支持。 - Bhavesh Agarwal
显示剩余2条评论

9

看起来你的p4settings.txt配置文件没有被使用,否则"p4 info"返回的客户端名称将与配置文件中的P4CLIENT值匹配。运行以下命令:

p4 set P4CONFIG=p4settings.txt

请确保在运行“p4 info”命令时,您的目录位于~/dev/trunk目录下(您在问题中显示的“p4 info”输出当前目录为/Applications,这可能会导致问题——只需执行“cd ~/dev/trunk”并重试即可)。
“client unknown”错误提示可能是您的客户端规范被删除了(假设您连接到相同的服务器并使用先前成功使用的相同客户端名称)。如果是这种情况,您可以通过运行以下命令创建一个具有相同名称的新客户端规范:
p4 client

谢谢Sam。我尝试了这个命令,但是它仍然显示相同的错误“客户端未知”对于根目录。这个命令只设置客户端名称而不是根目录吗?我问这个问题的原因是在我的情况下名称已经设置好了。 - Bhavesh Agarwal
顺便说一句,我尝试过使用工作区名称和带有完整绝对路径的工作区名称。 - Bhavesh Agarwal
“工作空间名称”不是文件系统路径,因此如果您正在使用“完整绝对路径”,则未设置工作空间名称。根存储在服务器数据库中,并与客户端(工作区)名称相关联,因此如果您使用正确的服务器(P4PORT)和正确的客户端(P4CLIENT)连接,则所有其他信息将自动记住。 - Samwise
1
由于您隐藏了 P4PORT 设置,我无法绝对确定您是否连接到了错误的服务器,但如果服务器和客户端名称都正确,则唯一剩下的解释是您的客户端规范已被删除。运行“p4 client”以重新创建它。 - Samwise
谢谢。问题现在已经解决了。我不得不在我的bash_profile中设置P4CLIENT "export P4CLIENT=${USER}_BANL121b92746_trunk",然后它就可以在终端和Intellij Idea中工作了。感谢所有的支持。 - Bhavesh Agarwal
显示剩余4条评论

0

在环境变量中设置P4PORT。 然后当您尝试P4 info时, 客户端未知错误将消失,并且它将显示在Perforce中设置的p4root值。 这对我起作用了。


0
我遇到了这个问题,后来发现在 计算机\HKEY_CURRENT_USER\SOFTWARE\Perforce\Environment 下的 perforce 注册表键是大小写敏感的!不知何故,P4CLIENT 键被设置为 p4client。将其设置为大写,然后运行 p4 client 命令解决了我的问题。

0

UNIX: bash, ksh, sh,

P4CLIENT=value ; export P4CLIENT

UNIX: csh

setenv P4CLIENT value

Mac OS X (bash)

P4CLIENT=value ; export P4CLIENT

Windows

p4 set P4CLIENT=value

作为服务运行 Helix Server 的 Windows 管理员可以使用 p4 set -S svcnamevar=value 为特定服务设置变量,或使用 p4 set -s var=value 为本地机器上的所有用户设置变量。

更多详细信息请参见: https://www.perforce.com/manuals/cmdref/Content/CmdRef/envars.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接