Plastic SCM 教程:概念、安装与操作
Plastic SCM 教程:概念、安装与操作
这篇是用 Plastic SCM(Unity Version Control)的上手笔记,从概念对照、安装登录,到在 GUI 客户端和 Unity 编辑器里的日常操作、文件忽略、分支和仓库迁移。习惯了 Git/P4 的人,先看概念对照表能少踩很多坑。
概念对照
Plastic 的术语和 Git/Perforce 不完全对得上,对照着记最快:
| Plastic SCM | Git | Perforce | 说明 |
|---|---|---|---|
| Checkin | Commit | Submit | 把改动提交到仓库。 |
| Changeset | Commit | Changelist | 每次 checkin 创建一个新的 changeset(书里缩写为 cset / csets)。 |
| Update | Checkout | Sync | 把内容下载到本地工作副本。比如切到别的分支时就会发生。 |
| Checkout | --- | Edit | 在 Plastic 里 checkout 一个文件,是在告诉 Plastic 你打算改它。非强制,可跳过;但如果用了锁(独占访问),checkout 就是强制的。 |
| main | master | main | 即 Subversion 里的 trunk。创建仓库时 main 分支必然存在;Plastic 里可以安全地重命名它。 |
| Repository | Repository | Depot | 存放所有版本、分支、合并的地方。 |
| Workspace | Working tree | Workspace | 项目下载到本地磁盘、你实际干活的目录。Git 里仓库和工作副本紧绑(仓库在工作副本的 .git 里);Plastic 里同一个仓库可以有任意多个工作区。 |
网络访问
公司网络下要先放行这些域名(让 IT 加白名单):
https://unity.com/
https://api.unity.com/
https://service-store.unity.com/
https://cloud.unity.com/
https://www.plasticscm.com/
https://docs.plasticscm.com/
https://blog.plasticscm.com/
安装与登录
从官网下载,或从内网工具目录取安装包(例如 \\<nas>\tools\unity-vcs-11.0.x-win.exe)。
安装要点:
- 选团队版(Team),Windows 平台。
- 全程按默认选项。
- 一定装到 C 盘。不装 C 盘的话 Unity 里检测不到 Revision Control 工具。
- 注册账号、申请团队版试用。
登录流程:启动后 click launch,选第一项;点 Unity ID 会跳到 Unity 登录网页,登进去后会自动连到云端仓库。
连上云之后选择创建工作区。如果客户那边有多个仓库(这里叫 RepoA / RepoB),就分别建两个工作区、各自指定分支,建好后会自动拉数据,等它跑完即可。
在 GUI 客户端里操作
创建仓库和工作区
安装完会让你选「创建仓库」还是「加入已有仓库」。第一次一般选创建新仓库,然后在该仓库下创建工作区。
一个 repository 对应一个 workspace,这样切 Branch Explorer 时容易切。删除时顺序反过来:先把工作空间切到别的工作空间,再删工作空间,最后删仓库。
项目和仓库的包含关系两种都行:把 Unity 项目建在 repository 文件夹下面,或把仓库建在 Unity 项目下面,然后打开 Plastic。
Branch Explorer 与提交
打开 Branch Explorer 会看到主分支 Main,上面有个小房子标志表示当前工作区所在的节点,项目内容就处于这个节点。
打开 Pending changes 是最近对仓库的修改。Plastic 默认会勾上 Unity 改动的文件,可以全选但不推荐——里面有很多不必要的配置文件。在 Checkin comments 填写本次改动说明,然后 Checkin,同步到本地仓库。
Changeset 与切分支
Changeset 就是提交历史,类似 P4 的 changelist。默认显示整个 Repo 上所有分支的 changeset,可以过滤成只看当前分支。切分支在 Branch Explorer 里选目标分支即可。
和服务器同步
Checkin 只是同步到本地。要推到服务器,在 Branch Explorer 里点分支空白处(即选中整个分支),右键 Push → Sync with Git,同步到服务器端(比如码云仓库)。
如果是单人,这一步会直接上传;多人协作时上传后会提示是否有冲突。有冲突的话这步不会上传你的数据,而是先把服务器数据拉下来,让你把本地和服务器合并、解决冲突,然后重复 Checkin 才会上传(前提是这期间没人又改并上传了)。
合并冲突
在工作区节点上右键 Merge from this changeset。此时要保证 Pending changes 里没有别的改动;如果还有些没勾的配置文件不想上传,可以在 Preferences → Diff and merge 里勾上 Allow to merge with pending changes。
设置合并工具
Plastic 支持合并日常文本/配置文件,但不包括特殊的二进制文件。Unity 的 .prefab / .unity 这类 YAML 资源要用 Unity 自带的 UnityYAMLMerge 工具。
在 Preferences → Merge tools 里 Add → External merge tool,命令模板(把路径换成自己的 Unity 安装路径):
<UnityInstall>\Editor\Data\Tools\UnityYAMLMerge.exe merge -p "@basefile" "@sourcefile" "@destinationfile" "@output"
然后在 Use with files that match the following pattern 里填 .prefab(注意前面那个英文句号),再用同样方式加一条 .unity。这个工具的配置方法 Unity 官方文档有说明:SmartMerge。
在 Unity 编辑器里操作
Plastic 仓库搭好后,可以在 Unity 里设置版本控制工具类型,直接在编辑器里处理资源。打开 Version Control 面板,选所有更改资源或指定资源,右键 submit(推到仓库)、Revert(回退取消更改)等;标记本次改动的大致信息方便日后查看回退,然后 Submit。
文件状态值得留意:右下角有对勾表示该文件已和仓库同步。Pending changes 界面里有四种修改类型:
| 标记 | 含义 |
|---|---|
| A | add,新增 |
| D | delete,删除 |
| M | move,移动 |
| C | change,更改 |
文件忽略
最简单的方式:在 ignore.conf 里直接加文件类型,就能忽略该类型的所有文件。参考 Plastic 官方博客。
工作空间忽略 vs 新文件的坑
第一种是工作空间忽略(即上面的方法)。但如果是新添加的文件,它还带 Check out 状态,这时无法直接忽略,Pending changes 里还能看到它、上传时会一起传上去。所以新文件想忽略要换个做法:在 Unity 的 Version Control 里右键想忽略的文件(或整个列表)选 Revert,这会撤掉新增带来的改变并把文件状态改为 private。这样 Plastic 的 Pending Changes 里就看不到它们了;后续要忽略再用第一种方法。
Plastic 的三个忽略选项
在 Workspace Explorer 或 Pending changes 里右键某文件选 Add to hidden changes list,会出来三个选项:
- 忽略该文件——无论对这个文件或文件夹内部做什么改动都被忽略。
- 忽略该文件类型。
- 忽略该路径下的该文件——注意改了文件路径后这条忽略就失效。
如果忽略了一个文件夹,该文件夹下操作的文件默认都被忽略;但把文件移到文件夹外面,默认忽略就被移除,得重新对它做忽略操作。
分支操作
大致流程:在服务器新建分支 → 在本地新建分支并把更改放进去 → 和服务器同步新建分支。
要建一个稳定版本:在码云新建分支,本地先下拉分支,把稳定版本保存到该分支,最后上传同步到码云。
Plastic 配置文件夹
.plastic 是个隐藏的配置文件夹。正常操作应该是在 .plastic 下面建一个子文件夹、把项目工程放进去,这样移动文件夹时不会带上 Plastic 的配置文件夹。
仓库迁移流程
- 新建仓库。
- 删除项目中的
.plastic文件,新建工作空间,文件位置选项目位置。 - 检查忽略文件,把缺失的忽略文件重新加入 ignored。
- 把项目加入到 source 中。
- Checkin。
- 下拉合并。