在您的配置中集成 Perforce

在您的配置中集成 Perforce

此文档为技术总监 (TD) 提供分步教程,指导他们设置 Perforce 与 Toolkit 的简单集成。学完此教程的技术总监将在 Maya、Shotgun、Toolkit 和 Perforce 之间建立一个完全集成的工作流,用于与 Perforce 进行数据的创建、发布和导入。
请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 Shotgun 集成管理员手册

为了清楚和简洁起见,我们将只介绍使用 Maya 运行 Perforce 所需的必要条件,并且只涉及资产。等您熟悉如何在一个环境文件中为一种软件进行设置后,您将能够在每个环境文件中为每种软件进行配置。

如果您不熟悉 Perforce 集成能提供什么,我们建议您先阅读下面这页的内容。

概述

Shotgun 与 Perforce 的集成包含三个主要组件:

  1. Shotgun 服务器

  2. Perforce 服务器

  3. Perforce 至 Shotgun 同步进程

同步进程会监控 Perforce 服务器上创建的提交,并将提交元数据推送回 Shotgun 服务器。

在 Toolkit 端,您需要修改工作流配置,让用户能够向 Perforce 验证身份,并向服务器发出 p4 命令,以便正确检入和检出文件。

限制

目前,Shotgun 中的用户名必须与 Perforce 中的用户名一致。这是个不太方便的限制,但是可确保使用 Perforce 数据同步 Shotgun 服务器的进程知道新版本的发布者是谁。我们将在后续版本中重新修订这项限制。

配置 Shotgun 跟踪 Perforce 提交

从 Shotgun Web 应用中,单击用户图标,然后选取“Site Preferences”。展开“Entities”部分,并启用“Revision”实体。这将使 Shotgun 可以跟踪 Perforce 提交。

配置 Toolkit 连接 Perforce

下面这个小节,我们假定您已熟悉如何部署基于 Toolkit 的工作流。如果您还不熟悉,建议您阅读有关如何设置第一个项目的指南。

本节结束时,您将能够使用 Perforce Connection 应用选取工作区,并运行 Perforce 至 Shotgun 同步进程。

通用 Perforce 设置、应用和挂钩

有些样板配置是多个环境都需要用到的,但我们不想将它们复制粘贴到多个文件中。相反,我们会将这些配置放在一个文件中,然后将这个文件包含在需要使用它的各种环境配置文件中。在工作流配置中创建 config/env/includes/perforce.yml 文件,然后在其中粘贴以下内容:

perforce-framework:
  hook_get_perforce_user: '{self}/get_perforce_user.py'
  hook_get_shotgun_user: '{self}/get_shotgun_user.py'
  hook_load_publish_data: default
  hook_load_review_data: default
  hook_store_publish_data: default
  hook_store_review_data: default
  host: ''
  location: {name: tk-framework-perforce, type: app_store, version: v0.1.15}
  server: tcp:localhost:1666
  server_aliases: []
  server_version: 2015.2
perforce_login:
  connect_on_startup: true
  hook_scene_operation: default
  location: {name: tk-multi-perforce, type: app_store, version: v0.1.2}

现在,通用的设置和内容都已集中到一个文件中,下面我们可以开始更新配置。我们假设您有一个正在运行的 Perforce 服务器,并且熟悉如何向 Perforce 仓库中添加文件。

配置要使用的服务器

打开 config/env/includes/perforce.yml,找到 server 设置并将它设置为您的 Perforce 服务器的地址。默认值为 tcp:localhost:1666

设置 Perforce 工作空间

Perforce 工作空间需要包含项目根目录的所有文件。例如,如果您的主本地文件存储为 Y:\shotgun,项目名称为 big_buck_bunny,则工作空间至少需要包含整个 y:\shotgun\big_buck_bunny 文件夹。注意,您的 Perforce 工作空间实际也有可能以 Y:\Y:\shotgun 为根目录。

在软件中添加 Perforce 身份认证功能

1) 在 config/env/project.ymlconfig/env/asset.ymlconfig/env/asset_step.yml 中,向 includes 部分添加以下内容。这将确保我们的通用 yaml 代码段可以使用。

- ./includes/perforce.yml

2) 在第 1 步找到的每个文件中,找到位于 engines 下面的 tk-maya 部分,并在 apps 部分下面添加以下内容。这将确保 Maya 启动后,无论上下文如何,您都可以向 Perforce 验证身份。

tk-multi-perforce: '@perforce_login'

3) 找到 frameworks 部分并添加以下内容。这将确保 Perforce 应用可以使用 Perforce 框架。

tk-framework-perforce_v0.x.x: '@perforce-framework'

4) 运行 ./tank cache_apps 下载刚刚添加的所有工具。

如果此时启动 Maya,程序会提示您登录 Perforce 并选取工作空间。如果未收到提示,请检查上面的步骤。

配置 Perforce 至 Shotgun 进程

我们需要设置一个进程,负责 Shotgun 服务器与 Perforce 服务器之间的同步。该进程的工作是检查进入 Perforce 的提交,然后将单个发布注册到 Shotgun 中。要运行此进程,您需要找一台能够访问 Shotgun 服务器、Perforce 服务器和工作流配置的计算机。

1) 在 Shotgun 项目的根目录,您需要创建 tank/config/tank_configs.yml 文件。就上面的示例而言,该文件为 Y:\shotgun\big_buck_bunny\tank\config\tank_configs.yml

2) 在这个文件中,放入此项目的工作流配置的路径。例如,如果您的工作流配置位于 X:\shotgun\big_buck_bunny\pipeline,请输入以下内容。

# Be careful to put double backslashes if using backslashes. Otherwise the yaml file reader will try to
# interpret "\s", "\b" and "\p" as single characters.
- win32: "X:\\shotgun\\big_buck_bunny\\pipeline" 
  linux2: "/mnt/shotgun/big_buck_bunny/pipeline"
  darwin: "/mnt/shotgun/big_buck_bunny/pipeline"

注意,在 Toolkit 中,像这样的词典通常使用 windowslinuxdarwin 键。这是一个有待我们解决的错误。

3) 将此文件提交到 Perforce 中。

4) 在命令行中,键入以下内容:

./tank install_app project tk-shell tk-shell-perforcesync

5) 在指定用于运行进程的计算机上,使用以下命令启动进程:

./tank --debug sync_perforce_daemon -s 123456 -u <perforce user> -p <perforce password>

6) 如果使用基于登录的身份认证方式运行进程,一旦进程长时间空闲,您的会话将有可能超时。因此,我们建议在命令行中使用基于脚本的身份认证方式来运行进程。要了解此功能的更多信息,在命令行键入:

./tank --help

然后从头开始阅读“General options and info”部分。

请注意,使用 --script-name--script-key 需要将 Toolkit 核心升级至 v0.17.24 或更高版本。

建议添加 --debug 参数,以方便了解进程的当前状态。

另外还要注意,Perforce 用户需要能够更新 Perforce 计数器才能让进程正常工作,因此最好使用 Perforce 管理帐户运行此进程。

如果您的 Perforce 服务器已经有很多提交,建议使用 -s 和提交 ID 启动它,让进程不会查找服务器上的所有提交。

配置 Toolkit 应用

下面这个小节,我们假定您启动的是新项目,目前 Perforce 中没有文件。我们首先要更新模板和文件管理器工具设置,让创建的文件没有任何版本令牌,因为 Perforce 会跟踪版本。然后,更新发布应用,以便可以开始向 Perforce 发布文件。最后,更新加载器应用的设置,以便可以从 Perforce 检索这些文件。

配置 Shotgun 文件管理器应用

目前,Perforce 仅支持原始的 Shotgun 文件管理器。

1) 在 config/core/templates.yml 内,找到并更新以下模板,去除版本号:

maya_asset_work: '@asset_work_area_maya/{name}.ma'
maya_asset_snapshot: '@asset_work_area_maya/snapshots/{name}.{timestamp}.ma'

2) 在 config/env/project.yml 内的 tk-mayaapps 部分,将 tk-multi-workfiles 行更新为 tk-multi-workfiles: '@workfiles-launch-at-startup-tk-maya'。这样不会干扰其他应用设置。

3) 在 config/env/asset.yml 内执行同样的操作。

4) 在 config/env/includes/common_apps.yml 中,复制 workfiles-launch-at-startup 这块内容,并将它粘贴在自身下面。将粘贴的内容重命名为 workfiles-launch-at-startup-tk-maya,然后更新以下设置:

workfiles-launch-at-startup-tk-maya:
  hook_filter_publishes: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
  hook_filter_work_files: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/filter_work_files.py'
  hook_scene_operation: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/scene_operation_tk-maya.py'

5) 在 config/env/asset_step.yml 中,找到位于 tk-maya 部分下的 tk-multi-workfiles 设置,然后更新以下设置:

workfiles-launch-at-startup-tk-maya:
    hook_filter_publishes: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
    hook_filter_work_files: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/filter_work_files.py'
    hook_scene_operation: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/scene_operation_tk-maya.py'
    template_publish: maya_asset_work
    template_publish_area: asset_work_area_maya
    template_work: maya_asset_work
    template_work_area: asset_work_area_maya

如果您更仔细地观察模板设置,会发现工作区域和发布区域现在指向同一个位置,这意味着按照 Perforce 的工作流,发布和工作将在同一位置进行。

6) 在同一个文件中,与前面在 project.yml 中所做的一样,更新 includes and frameworks 部分。

7) 可以删除 tk-multi-snapshot 应用的设置,因为它不兼容 Perforce 工作流。

要测试是否一切正常,只需为给定的任务创建一个新场景即可。文件名中应该没有任何版本号。

配置发布应用

1) 打开 config/env/asset_step.yml 并找到 tk-maya 插件的 tk-multi-publish 设置,然后更新以下设置:

tk-multi-publish:
  hook_post_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/post_publish.py'
  hook_primary_pre_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/primary_pre_publish.py'
  hook_primary_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/primary_publish.py'
  hook_scan_scene: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/scan_scene_tk-maya.py'
  hook_secondary_pre_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/secondary_pre_publish_tk-maya.py'
  hook_secondary_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/secondary_publish_tk-maya.py'
  primary_publish_template: null
  secondary_outputs:
  - description: Submit all published files to Perforce
    display_group: Perforce
    display_name: Submit To Perforce
    icon: icons/p4_publish_submit.png
    name: p4_submit
    publish_template: null
    required: false
    scene_item_type: perforce_submit
    selected: true
    tank_type: ''

请注意,如果您不想让 Toolkit 默认以您的名义向 Perforce 提交文件,可以在 tk-multi-publish 设置的 secondary_outputs 部分,将 selected 设置改为 false

如果要使用非 Maya 的其他软件进行测试,只需将前面挂钩设置中的 tk-maya 替换为想要使用的软件即可。您可以在这里找到可感知 Perforce 的 3dsmax、Photoshop 和 Maya 发布挂钩版本。如果您使用其他软件,暂时需要部署自己的挂钩版本。

2) 在 config/core/templates.yml 内,可以选择删除 asset_publish_area_mayamaya_asset_publish 的行,因为这些行已不再需要。

3) 将这个文件复制到您的工作流配置中的 config/icons 文件夹。此图标将用在发布工具的用户界面中。

这时,向 Perforce 进行发布的测试便已准备就绪。

  1. 启动 Maya。
  2. 在文件管理器中创建一个新场景。
  3. 向场景中添加一些用来测试的几何体。
  4. 使用 Shotgun 文件管理器保存场景。
  5. 使用发布应用发布场景。

此时如果切换查看 Perforce 同步工具的输出,应该会在工具的输出中看到类似下面的内容。

DEBUG [08:54:41 73.5399723053]: Looking for the next change submitted to 
Perforce...
DEBUG [08:54:41 75.3729343414]:  > Found change {'status': 'submitted',
'fileSize': ['74214'], 'changeType': 'public', 'rev': ['2'], 'client':
'jfboismenu_Jean-Francoiss-MacBook-Pro_1287', 'user': 'jfboismenu', 'time':
'1456148646', 'action': ['edit'], 'path':
'//depot/assets/Character/test/Art/work/maya/*', 'digest':
['2741D8E09CD05C6622E1C8494CBCE14A'], 'type': ['text'], 'depotFile':
['//depot/assets/Character/test/Art/work/maya/scene.v001.ma'], 'change': '4',
'desc': 'Shotgun publish\n'}
DEBUG [08:54:41 75.6020545959]: Checking that change '4' contains files that 
are in the current project... 
Creating Shotgun Revision entity for Perforce change 4
DEBUG [08:54:41 578.094005585]: Successfully created Shotgun Revision entity
14 for Perforce change 4
DEBUG [08:54:41 578.372955322]: Updating the Perforce counter
'tk_perforcesync_project_74' to 4

这里需要特别关注的是 Creating Shotgun Revision entity for Perforce change 4Successfully created Shotgun Revision entity14 for Perforce change 4 行。这表示文件已成功与 Shotgun 同步。

配置加载器应用

1) 在 config/env/asset_step.yml 中,找到 tk-multi-loader2 部分并更新以下设置:

tk-multi-loader2:
    filter_publishes_hook: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
    actions_hook: '{tk-framework-perforce_v0.x.x}/tk-multi-loader2/tk-maya_actions.py'

就这么简单。现在,您将能够向场景中导入文件。要进行测试,请执行以下操作:

  1. 启动 Maya。
  2. 在文件管理器中创建一个新场景。
  3. 使用加载器应用引用一个文件。

注意,如果该文件目前不在您的工作空间内,将从服务器复制它。

 
关注

0 评论

登录写评论。