Wiki
分发
按路径模式将文件(插件、共享内容)从源仓库复制到目标仓库。发布、重映射、跳过锁定。
简介
分发会将文件(一个插件、一个共享内容包)从源仓库复制到目标仓库, 并限定于一组路径模式。它会在目标中创建新的修订,因此常规的增量同步会将内容传播给客户端。 这是在多个项目之间共享同一个插件而无需手动复制粘贴的方式。
访问与角色
manage_rules 能力,该能力由
admin 与 lead 在整个服务器范围内持有。不持有任何能力的 project_admin
无法访问。而 lead 则可以将任意仓库链接到任意其他仓库。
创建链接
- Distribution 选项卡 → New Link。
- Source Repository:文件来源的仓库。
- Target Repository:目标仓库(所选源会从列表中移除;源与目标不能相同)。
- Path Patterns:每行一个模式(例如
Plugins/MyPlugin/、Content/SharedAssets/)。至少需要一个。 - 用 Create Link 确认。
同一两个仓库之间已存在的链接会被拒绝(冲突)。每一行显示
source → cible、其模式、创建者以及上次发布的日期。
路径模式
只要一个模式出现在路径的任何位置,它就与该路径匹配(「包含」式搜索)。
因此 Plugins/uVersion 模式会匹配 DefaultProject/Plugins/uVersion/Source/Foo.cpp,
无论项目前缀如何。末尾的斜杠没有任何影响。
发布
每个链接有三种操作:
- Show pending files(文件图标):列出存在差异的文件,标记为 new、modified 或 locked,并附上其修订。
- Publish history(时钟):最近 50 次发布(更新/跳过多少、由谁、何时)。
- Publish(发送):执行复制。横幅会汇总「找到 X 个源文件,更新 Y 个,跳过 Z 个(已锁定), W 个未变」。若链接处于停用状态则被禁用。
目标中被锁定的文件会被跳过,而不会被覆盖。内容相同(哈希相同) 的文件会计为未变并被跳过。发布是原子的(单个事务)。
你也可以启用 / 停用或删除一个链接。
重映射与修订
路径会针对目标被改写: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 无权访问,即便是在自己的仓库上
也一样。