perforce p4 同步问题

Posted

技术标签:

【中文标题】perforce p4 同步问题【英文标题】:perforce p4 sync issue 【发布时间】:2015-03-11 09:19:02 【问题描述】:

我通过 GUI 使用p4v 在以下路径中创建了一个工作区:

/home/RND/abrodov/Perforce/abrodov_tlv-cc-32_93

我正在尝试使用p4 命令,例如我尝试过:

p4 sync -f

我收到以下错误:

Client 'tlv-cc-32' unknown - use 'client' command to create it.

这是我用于P4 的环境变量:

export p4v=/opt/p4v-2014.2.973065/bin
export P4PORT=IP:PORT
export P4USER=$USER
export P4CLIENT=$HOSTNAME
alias p4v="p4v &"
export PATH=$p4v:$PATH

【问题讨论】:

【参考方案1】:

由于服务器不知道客户端“tlv-cc-32”,因此它一定不是您与 P4V 一起使用的客户端的正确名称。

运行

p4 clients -u $P4USER

要获取所有工作区名称的列表,然后找到与 P4V 一起使用的名称。 (或者,在 P4V 中,使用“编辑当前连接”菜单查看您的“工作区名称:”)

然后将 P4CLIENT 设置为您的 P4V 工作区的正确名称,并使用“p4 info”来验证服务器是否将该客户端名称与您工作站的根目录相关联。

然后

p4 sync -f

会正常工作的。

(不过,有人想知道,为什么您觉得需要运行 'p4 sync -f'?)

【讨论】:

你说的“编辑当前连接”在哪里?【参考方案2】:

总结

删除所有多余的空格。

详细说明。

P4 命令也会因为额外的空格而引发此错误。 通过环境变量(windows)设置 p4 全局选项时,我遇到了类似的问题。

set GLOBAL_OPTIONS="-c sahil"                  REM **INCORRECT**
p4 %GLOBAL_OPTIONS% sync //file/path

sahil 是我的工作区名称。 p4 将名称解释为“sahil”(带空格),因此未能找到它。以下工作。

set GLOBAL_OPTIONS="-csahil"                  REM **CORRECT**
p4 %GLOBAL_OPTIONS% sync //file/path

以下2条命令同理,第1条失败,第2条正常。

p4 "-c sahil" sync //file/path REM **INCORRECT**
p4  -c sahil  sync //file/path REM **CORRECT**

空间会导致这个难以察觉的微妙问题。就我而言,工作区名称“sahil”确实存在,但我不知道 p4 如何解释空格。

PS:不是问题作者遇到此错误的原因,但它是 p4 可以抛出此错误的原因之一,我花了一些时间才弄清楚。

【讨论】:

以上是关于perforce p4 同步问题的主要内容,如果未能解决你的问题,请参考以下文章

Perforce unicode问题:使用非ascii字符的同步文件会导致截断

Perforce ( P4 ) 将树中的特定版本移动到树的顶部

Perforce:如何将稍后的提交应用于同步到早期版本的工作区?

Perforce:如何从分支操作之前获取“截至”日期或修订版本的文件?

Perforce:同步主数据但也直接下载派生数据

在 Perforce 中查看具有特定版本的文件