Wiki
分发
按路径模式将文件(插件、共享内容)从源仓库复制到目标仓库。发布、重映射、跳过锁定。
简介
分发会将文件(一个插件、一个共享内容包)从源仓库复制到目标仓库, 并限定于一组路径模式。它会在目标中创建新的修订,因此常规的增量同步会将内容传播给客户端。 这是在多个项目之间共享同一个插件而无需手动复制粘贴的方式。
访问与角色
manage_rules 能力,该能力由
admin 与 lead 在整个服务器范围内持有。不持有任何能力的 project_admin
无法访问。而 lead 则可以将任意仓库链接到任意其他仓库。
创建链接
1. 打开 Distribution 选项卡
Distribution 选项卡位于 SERVER 行:一个链接连接两个仓库,因此它不依赖于在 PROJECT 行中所选的仓库。点击右上角的 + New Link,New Distribution Link 窗口即会打开。
2. 选择源、目标和路径
Source Repository 是文件来源的仓库,Target Repository 则是目标仓库:所选源会
从目标列表中消失,链接不能回到自身。Path Patterns 接受每行一个模式(例如
Plugins/MyPlugin/、Content/SharedAssets/),并且至少需要一个:没有模式,就不会复制
任何内容。
3. 用 Create Link 确认
链接会立即出现在列表中。同一两个仓库之间已存在的链接会被拒绝(冲突):请编辑已有的那一个,而不是再创建 第二个。
路径模式
只要一个模式出现在路径的任何位置,它就与该路径匹配(「包含」式搜索)。
因此 Plugins/uVersion 模式会匹配 DefaultProject/Plugins/uVersion/Source/Foo.cpp,
无论项目前缀如何。末尾的斜杠没有任何影响。
发布
1. 找到链接及其操作
每个链接占据列表中的一行:source → cible、以胶囊形式显示的模式、创建者以及上次发布的日期。
操作集中在该行右侧:Show pending files(文件图标)、Publish history(时钟)、
Publish、启用或停用链接的开关,以及删除。
2. 检查将要发出的内容
Show pending files 会在该行下方展开存在差异的文件列表,并附上其源修订,标题中显示总数 (Pending Files (N))。每个文件都带有其状态:new、modified 或 locked。 如果一切都是最新的,面板会这样说明。
3. 发布
Publish 按钮执行复制。一条绿色横幅会汇总 「Published: X source files found, Y updated, Z skipped (locked), W unchanged」。只要链接处于停用状态,该按钮 便被禁用,而发布一个停用的链接会返回一个明确的错误。
目标中被锁定的文件会被跳过,而不会被覆盖。内容相同(哈希相同) 的文件会计为未变并被跳过。发布是原子的(单个事务)。
Publish history(时钟)随后给出最近 50 次发布:更新和跳过了多少文件、由谁、以及何时。
重映射与修订
路径会针对目标被改写:uVersion 会去掉匹配模式之前的部分,然后加上在目标上检测到的前缀。
示例:源 DefaultProject/Plugins/uVersion/foo.cpp,模式 Plugins/uVersion,目标前缀
CineDroneStudio/ → CineDroneStudio/Plugins/uVersion/foo.cpp。目标前缀是从目标中一个
现有文件推断出来的(可处理带或不带项目子文件夹的仓库)。
常见陷阱
「Publish」呈灰色
该链接已停用。请先启用它。发布一个已停用的链接会返回一个明确的错误。
某个文件在目标中未更新
要么它在目标一侧被锁定(此时会被跳过并计为「locked」),要么其内容已经相同(计为「unchanged」)。请查看发布汇总 和 pending files 列表。
project_admin 看不到该选项卡
这是有意为之:分发需要 manage_rules(admin 或 lead)。project_admin 无权访问,即便是在自己的仓库上
也一样。