前言
使用 Perforce , 可以使用Perforce 的Client 端。
有时候在编写一些脚本或代码的时候, 可能或使用到 Perforce的命令的方式。
正常状况下, 使用如下命令:
- p4 -C utf8 -p host:port -u username -p password -c workspace sync //depot_path/...
p4 -C utf8 -p host:port -u username -p password -c workspace sync //depot_path/...
就可以sync perforce 的源文件了。
登录的帐号和密码直接接在命令的后面。
但是以上的方法并不一定正确, 可能会出现
Perforce password (P4PASSWD) invalid or unset
的错误。
在同一台机器上使用 p4 client 登录之后就正常了。
出现这个的原因基本上是 服务端对于验证设置的原因。
服务端需要 ticket 这样的验证方式。
所谓的ticket , p4 client 在登录的时候会在机器的
C:\Documents and Settings\user\下 新建一个 p4tickets.txt 的文件, 里面的内容是一系列的类似防伪码的东西。
搜索到的说明
细致的说明一下原因:
网络上的解释:
Your server's security level doesn't allow command line passwords.
You can get around this by using a ticket value instead. Use the
login command to get a valid ticket value:
p4 login -p
That will display the ticket value instead of saving it. You should
be able to cut and paste that into your command.
=====
If you are a superuser, you should be able to log in without specifying a
password.
If you have an active ticket for your superuser account, use: p4 login
<build_user>
Otherwise use: p4 -u <superuser_user> -P <superuser_password> login <build_user>
官方:
Problem:
When issuing a p4 command in a trigger on a Windows server, the command returns the error:
Perforce password (P4PASSWD) invalid or unset.
This error indicates that the command did not find a valid ticket for the current user and it needs to log in to create one.
解决方法
1. 方法一
先登录,再执行sync等其他命令
echo %p4passwd%|p4 login
2. 方法二
使用已经有的ticket
Set the location of P4TICKETS with set or p4 set [-s]:
p4 set P4TICKETS=C:\Perforce\tickets.txt
Log in as the trigger user:
p4 login triggeruser
In the trigger, make sure P4TICKETS is set to the same location. You can skip this step if you used p4 set -s to set P4TICKETS:
set P4TICKETS=C:\Perforce\tickets.txt
方法一, 我有实际的使用过, 方法二还未试用