400-666-7732

在您的配置中集成 Perforce

弃用注释

        请注意,本教程是使用 tk-config-default 配置编写的,而不是 tk-config-default2。讨论的是工作文件和发布器应用的原始版本。较新的应用(工作文件 2 和发布器 2)与 Perforce 集成提供的挂钩不兼容。此外,tk-config-default2 中的配置结构已经过大量修改。因此,本教程所引用的任何文件均不会与您在最新配置 中找到的文件相匹配。

前言

        为了清楚和简洁起见,我们将只介绍使用 Maya 运行 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.13}
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.yml、config/env/asset.yml 和 config/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 中,像这样的词典通常使用 windows、linux 和 darwin 键。这是一个有待我们解决的错误。

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-maya 的 apps 部分,将 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_maya 和 maya_asset_publish 的行,因为这些行已不再需要。

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

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

  • 1.启动 Maya。

  • 2.在文件管理器中创建一个新场景。

  • 3.向场景中添加一些用来测试的几何体。

  • 2.使用 Shotgun 文件管理器保存场景。

  • 3.使用发布应用发布场景。

此时如果切换查看 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 4 和 Successfully 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.使用加载器应用引用一个文体。

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

原文链接:https://support.shotgunsoftware.com/hc/zh-cn/articles/219040628-在您的配置中集成-Perforce#Foreword

分享到: