Perforce

UE 官方主推 P4,在二进制文件上他有加锁的机制,还算能用,但是很贵。

安装

下载地址: https://www.perforce.com/downloads/helix-visual-client-p4v

P4最好默认安装在C盘,与后续的UGS使用设置有关。

P4V

我们的 Depot 和 Workspace 是一个一一对应关系,因此对哪个进行 Checkout 都是一样的。

1. Reconcile Offline Work

对于没有 Checkout 的文件,默认是锁住的,是一个只读状态。如果我们没有连接 P4 但是又更改为可写状态在其他地方进行了更改,此时就不会加入到 Pending 里面。 (我之前就犯了这个错误,vs连接p4失败了,于是漏了文件没传上去,导致项目构建失败)

我们可以右键点击 Reconcile Offline Work 来检查一下有没有漏的文件:

这个指令也就是让 Change list 和本地的情况一致。

2. Revert Unchanged Files

第二个好用的指令是这个:

可以自动 Revert 掉没有更改但是被checkout的文件。

IDE

VS2022

对于 VS2022,我们需要安装 P4VS 插件: P4VS

此时就可以在Tools->Options里进行设置:

这里我认为很好用的一个设置是:

那样对于可写的文件,在保存的时候就会自动 Checkout 上,这样就不用担心漏checkout的问题了。

Rider

由于觉得 VS2022 对于写 UE 有不方便之处,我还是切到了 Rider,对于 Rider 官方就支持 Perforce,无需安装任何插件。

我们只需要填好这两处即可:

如果还没生效重启一下就可以了。

命令行

背景

美术反馈有一个文件,mark for add会报错 Cannot check out “exclusive open” file(s),重命名为其他名字就可以add上。

怀疑是其他人也对同样名字的文件mark for add,但是没有提交,导致被锁住了,p4v里头又看不到是谁,所以就借助命令行查看了。

初始化p4

1
2
3
4
5
6
7
8
# 设置服务端地址
p4 set P4PORT=perforce.example.com:1666
# 设置 Perforce 用户名
p4 set P4USER=<your-username>
# 登录到 Perforce 帐户
p4 login
# 输入密码后,设置工作目录
p4 set P4CLIENT=<your-client-workspace>

接着对那个文件使用 opened -a :

1
p4 opened -a [filepath]

获取文件状态

1
p4 fstat xxx

这里的 xxx 可以是本地路径(e:\xxx\xxx之类),也可以是服务器路径(//xxx/xxx之类),如果是对一个文件夹做检查,可以在最后加上 … 如 xxx/…

搜索Descroption

例如想搜索单号,Powershell 下可以用:

1
p4 changes -L | select-string "search string" -Context (3,0)

搜出来changelist,p4v 可以查看:

参考: https://stackoverflow.com/questions/134103/how-do-you-search-the-text-of-changelist-descriptions-in-perforce

P4HOST

默认的 P4HOST 应该和本地计算机名一致,在设置里可以重命名。Workspace 需要和 Host 绑定。

1
p4 set P4HOST=DESKTOP-HEBOHANG

命令行环境和 workspace 的host不一致可能会导致p4v无法进去,此时可以用前面的 bash 指令先改回 workspace 对应的 host.

p4v 可以在 connection -> edit current workspace -> advance 中改当前 workspace 的 host。

Licensed under CC BY-NC-SA 4.0