uVersion
简体中文
下载 →

Wiki

分发

按路径模式将文件(插件、共享内容)从源仓库复制到目标仓库。发布、重映射、跳过锁定。

简介

分发会将文件(一个插件、一个共享内容包)从仓库复制到目标仓库, 并限定于一组路径模式。它会在目标中创建新的修订,因此常规的增量同步会将内容传播给客户端。 这是在多个项目之间共享同一个插件而无需手动复制粘贴的方式。

访问与角色

与其他选项卡不同的访问模型 分发不会像其他选项卡那样受控。它需要 manage_rules 能力,该能力由 adminlead 在整个服务器范围内持有。不持有任何能力的 project_admin 无法访问。而 lead 则可以将任意仓库链接到任意其他仓库。

创建链接

New Link 表单:Source Repository、Target Repository 以及 Path Patterns 区域。
  1. Distribution 选项卡 → New Link
  2. Source Repository:文件来源的仓库。
  3. Target Repository:目标仓库(所选源会从列表中移除;源与目标不能相同)。
  4. Path Patterns:每行一个模式(例如 Plugins/MyPlugin/Content/SharedAssets/)。至少需要一个。
  5. Create Link 确认。

同一两个仓库之间已存在的链接会被拒绝(冲突)。每一行显示 source → cible、其模式、创建者以及上次发布的日期。

路径模式

只要一个模式出现在路径的任何位置,它就与该路径匹配(「包含」式搜索)。 因此 Plugins/uVersion 模式会匹配 DefaultProject/Plugins/uVersion/Source/Foo.cpp, 无论项目前缀如何。末尾的斜杠没有任何影响。

发布

待处理文件列表(new/modified/locked)与发布结果汇总横幅。

每个链接有三种操作:

  • Show pending files(文件图标):列出存在差异的文件,标记为 newmodifiedlocked,并附上其修订。
  • Publish history(时钟):最近 50 次发布(更新/跳过多少、由谁、何时)。
  • Publish(发送):执行复制。横幅会汇总「找到 X 个源文件,更新 Y 个,跳过 Z 个(已锁定), W 个未变」。若链接处于停用状态则被禁用。

目标中被锁定的文件会被跳过,而不会被覆盖。内容相同(哈希相同) 的文件会计为未变并被跳过。发布是原子的(单个事务)。

你也可以启用 / 停用删除一个链接。

重映射与修订

路径会针对目标被改写:uVersion 会去掉匹配模式之前的部分,然后加上在目标上检测到的前缀。 示例:源 DefaultProject/Plugins/uVersion/foo.cpp,模式 Plugins/uVersion,目标前缀 CineDroneStudio/CineDroneStudio/Plugins/uVersion/foo.cpp。目标前缀是从目标中一个 现有文件推断出来的(可处理带或不带项目子文件夹的仓库)。

修订编号 分发的修订使用一个高于目标当前修订的全局计数器,以便增量同步能够获取它们。因此某个文件的历史可能会「跳跃」 (例如 rev 1 然后 rev 200):这只是表面现象。数据块是共享的(没有数据重复,只是引用计数递增)。

常见陷阱

「Publish」呈灰色

该链接已停用。请先启用它。发布一个已停用的链接会返回一个明确的错误。

某个文件在目标中未更新

要么它在目标一侧被锁定(此时会被跳过并计为「locked」),要么其内容已经相同(计为「unchanged」)。请查看发布汇总 和 pending files 列表。

project_admin 看不到该选项卡

这是有意为之:分发需要 manage_rules(admin 或 lead)。project_admin 无权访问,即便是在自己的仓库上 也一样。