如何在p4python中使用p4tickets

时间:2018-01-11 15:07:24

标签: perforce p4python

有大量使用您的用户/通行证作为凭据使用p4python连接到p4服务器的示例,但很少描述如何使用p4ticket。目前还不清楚如何在p4python中使用p4tickets文件。

2 个答案:

答案 0 :(得分:2)

事实证明,perforce文档真的非常精确。文档基本上说如果用户没有登录,那么你必须提供登录密码。该硬币的另一面是,如果用户登录,则不需要密码。因此,例如,假设用户已登录:

>>> p4 -u 'username' login

然后,在您的p4python脚本中,以下内容将连接:

p4con           = P4.P4()
p4con.user      = 'username'
p4.con.connect()

p4python连接自然地使用〜/ .p4tickets文件。

答案 1 :(得分:0)

要在P4 Python脚本(或P4命令行)中使用票证,您实际上只是将票证放在要求输入密码的任何地方。因此,存在一个优先级问题,即P4 Python从那里获取票证的优先级与P4命令行的工作方式不一致。

在P4 Python中:

  1. 如果设置了环境变量P4PASSWD,则使用它。
  2. 如果用户在任何查看p4.ticket_file的文件中有一个条目(来自P4TICKETS,〜/ .p4tickets的默认值或脚本在其中放置的值),如果没有P4PASSWD,将使用该条目设置
  3. 如果设置了p4.password字段,并且上述两个条件都不满足,则将使用它。

从命令行运行P4:

  1. 如果与-P一起运行,则使用命令行中的票证
  2. 如果设置了P4PASSWD,则在不满足上述条件时使用
  3. 如果在p4.ticket_file所查看的任何文件中都有用户条目(来自P4TICKETS,〜/ .p4tickets的默认值或脚本在其中放置的值),则无论满足以上条件。

示例1-如果票证文件中有条目,则它将用第3行中设置的用户值覆盖第4行中p4.password中设置的值。如果票证文件中没有条目,它将使用提供的凭据并更新票证文件,以便第二次运行脚本时,它将使用该凭据而不是提供的凭据。

from P4 import P4
p4 = P4()
p4.user = user
p4.password = ticket

示例2-这将始终使用提供的凭据,因为我们实际上并未使用真实文件。

from P4 import P4
p4 = P4()
p4.user = user
p4.password = ticket
p4.ticket_file = '/dev/null'

tl; dr-在Perforce要求输入密码的任何地方使用票证。如果要在脚本中使用票证,请先设置ticket_file='/dev/null'以确保预期的行为。