Wiki
上传一个已有项目
把已经在磁盘上的 Unreal 项目纳入 uVersion 管理:就地初始化文件夹,检查排除规则,然后从 Pending 标签页执行签入。附带首次上传的常见陷阱。
你的磁盘上有一个 Unreal 项目,想把它纳入 uVersion 管理。本页正好涵盖这种情况: 你的文件不会移动,文件夹就地连接到服务器,然后上传。
相反,如果你是从服务器上已经创建好的空仓库开始,那你需要的是 克隆,而不是本页。
开始之前
还要确认你将要声明的文件夹确实是仓库想要的根目录。
.uproject 文件必须位于该根目录之下最多三层,否则客户端不会把该项目识别为
Unreal 项目,Unreal 面板将始终不显示。
初始化文件夹
1. 打开 Open Repository 窗口
在侧边栏打开 Workspace,然后点击 Open Repository (或标签栏的“+”)。打开的窗口首先是用来克隆一个已有仓库的:这不是你在这里想要的。 一直滚动到最下面,在仓库列表和 Open Local Repository... 下方,点击 New Repository from a Project Folder...
admin 角色显示,因为它会在服务器上创建一个仓库。
参见创建仓库。
2. 选择项目根目录
会打开一个文件夹选择器,标题为
Select your project folder to create a new repository。选择你项目的根目录,
即包含 .uproject 的文件夹,或包含它的文件夹。不会复制或移动任何东西:
这个文件夹会留在原处。
3. 为仓库命名并创建
表单会显示在窗口本身之中,就在你刚点击的按钮的位置,而不是在一个新的 对话框里。它会重述所选的路径,并提供一个用文件夹名称预填的 Repository name 字段。按需调整,然后点击 Create & Open。只要名称为空,按钮就保持不可用, 而且这个名称在整个服务器上必须唯一。
此时客户端只做四件事,别无其他:
- 在服务器上创建仓库;
-
在你的项目里写入一个
.uversion/文件夹,记录仓库、服务器地址以及 工作区的所有者账户; -
写入一个
.uversionignore文件,仅在尚不存在时; - 它不下载任何东西,也不触碰你的任何文件。
检查排除规则
现在正是好时机,而且比事后简单得多。打开根目录的 .uversionignore
文件:它列出了永远不会被上传的内容。默认模板已经排除了 Unreal 项目会自行重新生成的东西,
尤其是 Binaries/、Build/、
DerivedDataCache/、Intermediate/、
Saved/ 和 Packages/,以及各开发环境的项目文件。
有两条规则无法修改,最好了解一下:
-
Plugins/uVersion始终被排除。Unreal 插件从不纳入版本管理: 每台机器通过桌面客户端安装与它自己引擎相对应的版本。在仓库中看不到它是正常的。 -
包含一个名称恰好为
ThirdParty的文件夹的路径,无论你写什么规则, 都永远不会被排除。因此你的第三方库始终会上传。
由于 Packages/ 被排除,打包好的构建永远不会进入仓库:它通过构建发布功能分发,
而不是通过版本管理。
上传
4. 在 Files 标签页查看状态
你的整个项目都会以 untracked 状态出现:在你这边存在,尚未在服务器上。 这是一个刚初始化的文件夹的正常状态。树上方的计数徽标概括了同一件事 (N local only),Rev 列处处显示 v0, Pending 标签页也已经带有一个相同数字的徽标:客户端自己发现了你的文件, 无需手动“添加”任何东西。
5. 打开 Pending 标签页
你的所有文件都已经在那里,标记为 add,归入 Default
变更列表。左列显示将要上传内容的树状结构,右侧面板显示扁平列表,每行带一个
Diff 和一个 Remove。这里只移除你永远不想纳入版本管理的东西:
对“这个文件夹不该在这里”的正确回应,是在 .uversionignore 里写一条规则,
而不是逐行 Remove。
6. 描述,然后 Checkin all
在 Describe your changes... 里写一条消息:这是必填的,只要该区域为空, Checkin all 按钮就保持不可用。“项目首次上传”就足够了。然后点击 Checkin all (N)。
随后上传会自行进行,分为若干阶段显示在标题栏中:分块、检查服务器已经持有的内容、传输, 然后验证。其间你可以切换标签页,进度会跟着走。被中断的传输会从中断处 继续,而不是全部重来。最后,上传的文件会变为只读:这是它们已在服务器上、且修改前需要 预留的标志。
首次上传的陷阱
我在 Files 里找上传按钮
它不在那里。Files 标签页显示状态并用于零星操作;上传在 Pending 标签页进行,任何未跟踪或已修改的文件都会自行出现在那里。如果 Pending 显示了徽标, 就说明有东西要上传。
“Failed to acquire locks for N file(s)”
有一个或多个文件已经被别人预留,而且整个上传会被取消,而不仅仅是相关的文件。 查看待处理预留的标签页,看看谁持有它们,并请对方释放。
我选中的一个文件被当作删除上传了
一个被上传但在传输时刻磁盘上不存在的路径,会被解读为一次删除。如果你在选择和上传之间 移动或重命名了文件,就会发生这种情况。操作期间请避免在该文件夹里工作。
“This folder is already a uVersion repository”
该文件夹已经包含一个 .uversion/。请使用
Open Local Repository...,而不要重新创建它。
文件夹被拒绝
客户端会有意拒绝某些位置:磁盘根目录、系统文件夹、自动启动文件夹,或相对路径。 请选择一个普通的工作文件夹。