16 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
Perforce Helix Core搭建 2022-12-21 14:51:55 Perforce

Perforce Docker

可以使用这个容器: https://hub.docker.com/r/sourcegraph/helix-p4d

但这个容器是2020年构建的我这里重新调整了一下并且手动构建成功具体可以参考下文。

DockerFile构建

大致步骤如下:

  1. 下载blueroseslol/helix-docker仓库的所有文件。
  2. 构建DockerFile。
cd /home/perforce/helix-docker/helix-p4d/ && \
docker build -f /home/perforce/helix-docker/helix-p4d/Dockerfile -t helix-p4d:2024.5 .

docker build --file ./helix-p4d/Dockerfile --tag helix-p4d:2023.7 .

使用

docker run -d --name helix-p4d\
    -p 1666:1666 \
    -v /home/perforce/p4:/p4 \
    helix-p4d:2024.5
docker run -d \
    -p 1666:1666 \
    -v /home/perforce/p4:/p4 \
    sourcegraph/helix-p4d:2020.2

admin pass12349ers

Github文档

docker run --rm \
    --publish 1666:1666 \
    sourcegraph/helix-p4d:2020.2

默认端口:1666, 默认用户名为 admin, 默认密码: pass12349ers。以下是所有配置的默认值。

NAME=perforce-server
P4HOME=/p4
P4NAME=master
P4TCP=1666
P4PORT=1666
P4USER=admin
P4PASSWD=pass12349ers
P4CASE=-C0
P4CHARSET=utf8
JNL_PREFIX=perforce-server

可以使用--env 覆盖上述环境变量:

docker run --rm \
    --publish 1666:1666 \
    --env P4USER=amy \
    --env P4PASSWD=securepassword \
    sourcegraph/helix-p4d:2020.2

请注意尽管服务器在重启后仍能存活即数据被保留但如果你在初始启动后即镜像的第一次运行在选项被硬编码为Perforce Helix核心服务器自身配置时改变选项它可能会中断。要启动一个长期运行的生产容器记得要把数据目录P4HOME)容器,把--rm标志换成d(分离):

docker run -d \
    --publish 1666:1666 \
    --env P4PASSWD=securepassword \
    --volume ~/.helix-p4d-home:/p4 \
    sourcegraph/helix-p4d:2020.2

推送镜像到Dockerhub

登录

docker login

# Github
docker login ghcr.io -u 378100977@qq.com -p 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

推送

docker tag 5572f8b12de1 blueroses/perforce-helix-p4d:2024.5
docker push blueroses/perforce-helix-p4d:2024.5

# 登录github
docker push ghcr.io/blueroses/perforce-helix-p4d:2024.5

Perforce

参考

cmd

  • 设置默认服务器IPp4 set P4PORT=servername:port
  • 设置默认用户名:p4 set P4USER=your.username
  • 设置typemapp4 -P YourPassword typemap
  • 设置p4ignore
    • p4 set P4IGNORE=.p4ignore
    • p4 ignores
  • add(add所有文件并且包含文件名含通配符的文件p4 add -f ...

规划

开发目录设计

  • UE4管理多重项目-WiseeEngineering翻译

  • ArtSource美术资源:引擎中相应的美术资产应该统一从ArtSource仓库导入这样美术人员可以集中在标准资产管线下的资产迭代可以更加集中注意力于美术资产质量所以前提是项目初期必须构建标准稳定的渲染和审核验收流程这一点也是国内很多项目及经常返工开发成本极高的原因

  • Engine引擎路径这里我用于个人使用则不需要太多的分流

  • Project项目工程

Example:

  • e:\Perforce
    • ArtSource
    • ShowRoom
    • UnrealEngine

ASoul P4的设计

仓库:

  1. EngineStream Depot)
    1. 引擎源码
  2. ProjectStream Depot)
    1. 构建引擎。
    2. 项目工程。
  3. ArtSourceLocal Depot
    1. 美术资产。

分支

  1. Release
  2. Mainline
  3. Development
    1. UE4
    2. UE5
    3. Trunk分支主干
    4. shiwan线上分支
      1. shiwanxxx
      2. shiwanpico
      3. ...

使用最暴力的Mainland主干分支开发模式如有试玩需求会创建shiwan分支。

用户

  1. admin
  2. art
  3. director
  4. remote

WorkSpace设置

  1. 编码使用UTF8-no bom
  2. Connection>Edit Current Workspace>Advanced设置为
    1. Line ending characters for text file -> UNIX style linefeed
    2. OnSubmit -> Don't submit unchanged files
    3. 勾选
      1. Allwrite
      2. Clobbr
      3. Altsync(直播棚不要勾这个)

.p4ignore

# Ignore IDE related files
.vscode\
.vsconfig\

# Ignore project-specific files
LiveDirector\Binaries\**\*.pdb
LiveDirector\Binaries\**\*-Debug.*
LiveDirector\Binaries\**\*-Shipping.*
LiveDirector\Build\Receipts\*
LiveDirector\DerivedDataCache\*
LiveDirector\Intermediate\*
LiveDirector\Plugins\**\Intermediate\*
LiveDirector\Saved\*
LiveDirector\*.sln
LiveDirector\*.vcxproj
LiveDirector\*.vs\
LiveDirector\*.idea\
LiveDirector\obj\
LiveDirector\**\FileOpenOrder\


Tools\VCluster\Binaries\**\*.pdb
Tools\VCluster\Binaries\**\*-Debug.*
Tools\VCluster\Binaries\**\*-Shipping.*
Tools\VCluster\Build\Receipts\*
Tools\VCluster\DerivedDataCache\*
Tools\VCluster\Intermediate\*
Tools\VCluster\Plugins\**\Intermediate\*
Tools\VCluster\Saved\*
Tools\VCluster\*.sln
Tools\VCluster\*.vcxproj
Tools\VCluster\*.vs\
Tools\VCluster\*.idea\
Tools\VCluster\obj\
Tools\VCluster\**\FileOpenOrder\

# Ignore Engine temporary files
Engine\**\__pycache__\*.pyc

# Ignore temporary files for Editor runs
Engine\Engine\Intermediate\EditorRuns\

# Add back binary-distributed plugins
!LiveDirector\Plugins\DirectorAssistanter\Intermediate\

# Ignore RiderLink
LiveDirector\Plugins\Developer\RiderLink\

# Ingore LiveCoding(?) temporary files
Engine\**\Intermediate\Build\**\*.h.old

# Ignore UnrealInsights temporary files
Engine\Engine\Programs\UnrealInsights\Saved\
Engine\Engine\Programs\UnrealInsights\Intermediate\

# Ignore Node.js moddules for RemoteControlWebInterface
Engine\Engine\Plugins\VirtualProduction\RemoteControlWebInterface\**\node_modules\
Engine\Engine\Plugins\VirtualProduction\RemoteControlWebInterface\**\package.json
Engine\Engine\Plugins\VirtualProduction\RemoteControlWebInterface\**\package-lock.json
Engine\Engine\Plugins\VirtualProduction\RemoteControlWebInterface\WebApp\**\build\
Engine\Engine\Plugins\VirtualProduction\RemoteControlWebInterface\WebApp\Server\public\

# Ignore all Engine files.
Engine\

# Ignore Ts History
LiveDirector\ts_file_versions_info.json

搭建p4顺序

  1. 搭建Perforce服务
  2. 创建一个Stream Depot或者所有Depot。
  3. 设置 p4 typemap
  4. 创建MainLine分支
  5. 添加.p4ignore文件
  6. 创建一个工作区,设置工作区设置后上传文件。

Typemap

typemap 的设置能够在 Perforce 中控制文件的只读和可写的形式。 然后要做这件事情需要管理员先在命令行cmd下设置 P4 的环境变量。 在指定仓库上右键,点击Open Command Windows Here,输入p4 -P YourPassword typemap即可在弹出的txt文件中修改保存关闭即可。(输入UE官方推荐的内容即可)

# The form data below was edited by Jeff
# Perforce File Type Mapping Specifications.
#
#  TypeMap:	a list of filetype mappings; one per line.
#		Each line has two elements:
#
#  		Filetype: The filetype to use on 'p4 add'.
#
#  		Path:     File pattern which will use this filetype.
#
# See 'p4 help typemap' for more information.

TypeMap:
	text //....asp
	text //....cnf
	text //....css
	text //....htm
	text //....html
	text //....inc
	text //....js
	text //....ts
	text+w //....log
	text+w //....ini
	text+w //....pdm
	binary+Fl //....zip
	binary+Fl //....bz2
	binary+Fl //....rar
	binary+Fl //....gz
	binary+Fl //....avi
	binary+Fl //....jpg
	binary+Fl //....jpeg
	binary+Fl //....mpg
	binary+Fl //....gif
	binary+Fl //....tif
	binary+Fl //....mov
	binary+Fl //....jar
	binary+l //....ico
	binary+l //....exp
	binary+l //....btr
	binary+l //....bmp
	binary+l //....doc
	binary+l //....dot
	binary+l //....xls
	binary+l //....ppt
	binary+l //....pdf
	binary+l //....tar
	binary+l //....exe
	binary+l //....dll
	binary+l //....lib
	binary+l //....bin
	binary+l //....class
	binary+l //....war
	binary+l //....ear
	binary+l //....so
	binary+l //....rpt
	binary+l //....cfm
	binary+l //....ma
	binary+l //....mb
	binary+l //....pac
	binary+l //....m4a
	binary+l //....mp4
	binary+l //....aac
	binary+l //....wma
	binary+l //....docx
	binary+l //....pptx
	binary+l //....xlsx
	binary+l //....png
	binary+l //....raw
	binary+l //....odt
	binary+l //....ods
	binary+l //....odg
	binary+l //....odp
	binary+l //....otg
	binary+l //....ots
	binary+l //....ott
	binary+l //....psd
	binary+l //....sxw
	binary+S2w //....exe
	binary+S2w //....dll
	binary+S2w //....lib
	binary+S2w //....app
	binary+S2w //....dylib
	binary+S2w //....stub
	binary+S2w //....ipa
	binary //....bmp
	text //....ini
	text //....config
	text //....cpp
	text //....h
	text //....c
	text //....cs
	text //....m
	text //....mm
	text //....py
	binary+l //....uasset
	binary+l //....umap
	binary+l //....upk
	binary+l //....udk
	binary+w //....exe
	binary+w //....dll
	binary+w //....lib
	binary+w //....app
	binary+w //....dylib
	binary+w //....stub
	binary+w //....ipa
	binary //....bmp
	text //....ini
	text+w //....config
	text //....cpp
	text //....h
	text //....c
	text //....cs
	text //....m
	text //....mm
	text //....py
	binary+l //....uasset
	binary+l //....umap
	binary+l //....upk
	binary+l //....udk
	binary+l //....ubulk
	text //....ignore

相关概念

Workspace

Workspace可以理解为depot到本地的一个映射对应本地的一个目录存储了该工作区域的相关设置以及历史记录
新建Workspace在p4admin中depot查看在服务器中存放的所有Ddepot仓库

开发的过程中可以有多个Workspace例如一个用来开发一个用来更新验证保证提交没有错误但一般只推荐有一个Workspace。

WorkspaceView

AltSync

这是一种2024.1推出的新的同步技术,允许您减少从库同步到客户端工作区时的初始等待时间,从而加快工作速度。您可以节省时间、磁盘空间和网络带宽,因为您只在需要时下载所需的内容。相关文档:

P4ExcludeList

.p4ignore

创建.p4ignore文件后执行命令行设置ignore

p4 set P4IGNORE=.p4ignore
p4 ignores
# Ignore project files in the root
*.sln
!*\*.sln
.vs
*.suo
*.opensdf
*.sdf
*.pdb
*-Debug.dll
*.xcodeproj
.\Makefile
.\CMakeLists.txt
.\.ue4dependencies
 
ipch\*
 
# Packaged engine builds
LocalBuilds\*

# DDC should never be checked in
Engine\DerivedDataCache\*
Templates\**\DerivedDataCache\*
 
# Engine intermediates & binaries
Engine\Intermediate\*
Engine\Plugins\**\Intermediate\*
Engine\Programs\**\Intermediate\*
Engine\Binaries*
Engine\Plugins\**\Binaries\*
 
# Feature Packs (they might get updated with langauge packs?)
FeaturePacks\*

# Samples & Templates
Templates\**\Intermediate\*
Templates\**\Saved\*
Samples\**\Intermediate\*

# C# Intermediate folders
Engine\Source\Programs\**\obj\*
Engine\Platforms\**\Programs\**\obj\*
 
# Saved folders for programs should not be checked in
Engine\Programs\**\Saved\*
Engine\Programs\UnrealBuildTool\*
 
# Ignore any saved local files
Engine\Saved\*
 
# Ignore any build receipts
Engine\Build\Receipts\*
 
# Ignore Unix backup files
*~
 
# Ignore Mac desktop services store files
.DS_Store
 
# Ignore crash reports
crashinfo--*
 
# Ignore linux project files
*.user
*.pro
*.pri
*.kdev4
 
#
# Setup.bat Ignores
#
# There already might be some files pushed into the repo that would otherwise be
# filtered: those are from the initial commit, coming directly from UE4-GitHub.
# After running Setup.bat, the folders below will be populated with ~46GB of 
# files. Hence we'll be blanked ignoring some directories such as ThirdParty, 
# Media, Content, etc. If we want to change anything in those blanked-ignored 
# folders, we should unignore the specific thing we're adding.
#
.git\*
Samples\**\Content\*
Samples\**\Media\*
Templates\**\Content\*
Templates\**\Media\*
Templates\Media\*
Engine\Platforms\**\Content\*
Engine\Documentation\*
Engine\Extras\*
Engine\Content\*
Engine\Build\*
Engine\Source\ThirdParty\*
Engine\Source\Programs\*
Engine\Source\Developer\*
Engine\Plugins\*

# Specific files
Engine\Config\ShaderCategories.csv
.tgitconfig
.ue4dependencies

# After all this above, there's still a couple folders and files left that doesn't
# fit the filtering criteria above, so we handle them individually here.
Engine\Source\Runtime\Navmesh\RecastDemo*
Engine\Source\Runtime\Launch\Resources\Mac*
Engine\Source\Runtime\Launch\Resources\Linux*
Engine\Source\Runtime\Experimental\Voronoi\Private\voro++*

Engine\Source\Runtime\Apple\MetalRHI\Public\ue4_stdlib.metal
Engine\Source\Runtime\AVEncoder\Private\Microsoft\Windows\ThirdParty\NvEncoder\LicenseAgreement.pdf
Engine\Source\Runtime\Experimental\Chaos\.clang-format
Engine\Source\Runtime\TraceLog\Private\Trace\LZ4\Epic.patch
Templates\TemplateResources\Standard\*.FBX


#
# PLUGINS
#
# Plugins that come with Setup.bat are ignored above altogether, so we un-ignore
# the custom plugins we want to ship with the customized UE4.
!Engine\Plugins\Marketplace*
!Engine\Plugins\Runtime\HoudiniEngine*
# ... but keep ignoring their Build & Intermediate
Engine\Plugins\Marketplace\**\Intermediate\*
Engine\Plugins\Marketplace\**\Binaries\*
Engine\Plugins\Runtime\**\Intermediate\*
Engine\Plugins\Runtime\**\Binaries\*

#
# PackageEngine.bat Ignores
#
# Packaging the engine will generate some .ini files which are safe to ignore
#
Samples\**\Saved\*

Helix4Git

DockerFile搞起来太麻烦……

其他

注册源码引擎到EpicGames

经过上面的步骤,源码引擎已经构建成功,但是在对项目就行选择引擎版本的时候,发现并没有这个版本 。这是因为构建的引擎没有注册到EpicGames中找到EpicGames安装目录下的注册器。复制到源码工程并且运行即可。

Launcher\Engine\Binaries\Win64\UnrealVersionSelector.exe