Plastic SCM 命令行(cm)速查
Plastic SCM 命令行(cm)速查
Plastic SCM(现在叫 Unity Version Control)的命令行工具是 cm。这篇把我常用的 cm 命令攒成一份速查,按操作分组。工作区路径统一写成 C:\Users\<user>\wkspaces\... 的占位形式。
官方资料:
登录需要 Unity 账号。
基础与帮助
进工作区后更新到最新:
cd /d C:\Users\<user>\wkspaces\default
cm update
查帮助:
cm help
cm help <command>
cm showcommands
cm <command> --usage
cm <command> --help
查看工作区里已加载的文件、它们写盘的日期,以及创建它们的变更集和分支:
cm ls
存储库
cm repository list
cm repository create myrepo@localhost:8087
工作区
一个 repository 对应一个 workspace,切 Branch Explorer 时更省心。
cm workspace create demowk c:\users\<user>\wkspaces\demowk --repository=default@local
cm switch main@quake
cm workspace list
工作区最初是空的,要 cm update(或 GUI 等价操作)才会下载内容。
文件操作
Plastic 走 checkout-edit-checkin 的方式工作,但 checkout 不是强制的(用锁时才强制)。
echo foo > foo.c
cm add foo.c
cm mv common\aselib.c q3asm
cm status
cm co file1.txt
cm ci foo.c -c "change to foo.c" --all
用 - 可以从标准输入逐个读取参数,下面三个文件会被逐个 add:
cm add -
a.txt
b.txt
c.txt
Shelve(搁置)
cm shelveset src\experimental_changes
cm shelveset create -c="my comment"
cm shelveset create -c="my test shelve" C:\Users\<user>\wkspaces\demowk\testp\132.txt
cm shelveset delete sh:3
cm shelve apply sh:3
几点行为:直接 cm shelveset <path> 会把指定文件/路径 shelve(comment 为 <No comment>);create 不带路径时会把工作区下所有 checkout 的文件都 shelve。无论哪种,shelve 之后文件仍然保持 checkout 状态。
Undo 与 unco
cm undo 撤销更改:
cm help undo
cm undo . # 撤销当前目录所有更改(不含子目录)
cm undo . -r # 递归撤销整个工作区
cm undo file.txt # 撤销特定文件的 checkout
cm undo c:\otherworkspace\file.txt # 撤销另一个工作区中某文件的更改
cm undo src/* # 撤销目录中所有文件的更改,不影响目录本身
cm undo *.cs -r # 撤销所有 .cs 文件,含子目录
cm unco 是 revert:
cm unco --all .
分支与标签
分支(不会删除任务分支):
cm branch main/task2001 --changeset
cm switch main/task2001
打标签:
cm label BL612 cs:579
Diff
cm diff cs:1
cm diff cs:2
cm diff br:main/scm23606
cm diff br:main/scm23606 --format="{status} {path} {baserevid} {revid}"
cm diff revid:28216 revid:28292
cm diff help
Merge
从分支合并在技术上等同于从其子分支合并;从变更集合并是合并指定变更集,而非整条分支。
cm switch main
cm merge main/task2001 # 试运行,解释潜在冲突
cm merge main/task2001 --merge # 真正执行合并
cm ci -c "merged from task2001" # 确认合并
三向合并工具是 Xmerge。
Push / Pull
cm repository create cloned@localhost:8087
cm push main@default@localhost:8087 cloned@localhost:8087 # default → cloned
cm pull main@cloned@localhost:8087 default # cloned → default
关于集中式/分布式/代理三种模式,见 Centralized, distributed。
Lock
是否锁定文件的检查在客户端进行。锁规则写在 lock.conf 里:
rep:battlegame br:/main
*.png
/assets/textures/model*.*
参考:Locking、配置锁规则。锁只对单个分支生效,所以要把它的使用限制在单分支操作上。
在 UE5 里用 Plastic SCM 做分支操作可参考这个视频:UE5 + Plastic SCM branching。