1

有大量使用您的用户/密码作为凭据以使用 p4python 连接到 p4 服务器的示例,但很少描述如何使用 p4ticket。目前还不清楚如何将 p4tickets 文件与 p4python 一起使用。

4

2 回答 2

2

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

>>> p4 -u 'username' login

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

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

p4python 连接自然会使用 ~/.p4tickets 文件。

于 2018-01-11T15:07:23.907 回答
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'以确保预期行为。

于 2020-08-05T14:34:10.057 回答