跳转到内容

比较和合并项目

“比较”可让您准确看到两个项目之间的差异,并且对于可以安全复制的部分,将所选更改从一个项目合并到另一个项目。它面向两种日常场景:

  • 在环境之间推广更改 — 查看 QA(开发)项目与其生产对应项目之间的差异,然后只将您想要的更改移入生产。
  • 对照较早的快照或副本进行审查 — 将项目与其自身的副本(例如逐月克隆)进行比较,查看发生了哪些更改。

整个过程由您掌控:在您选择具体项目并应用之前不会写入任何内容,并且可以先通过试运行进行验证。

QA(开发)工作流:Load步骤:Filter变量:year比较● 已更改+ 已添加= 相同合并?合并?跳过合并所选项生产应用之前不会写入任何内容(先试运行)
逐项匹配(副本按 id,独立项目按名称),每处差异会被标记为已更改、已添加或相同。由您选择要合并的内容:在您应用之前,任何内容都不会进入生产。

要比较两个项目,PlaidCloud 必须确定左侧的哪一项对应右侧的哪一项。它会自动选择匹配策略:

  • 同一项目的副本和快照按其内部 id 匹配(克隆会保留相同的 id),因此即使项目被重命名也能精确对齐。
  • 独立项目(例如 QA 项目和单独构建的生产项目)不共享 id,因此按名称匹配。发生这种情况时,各项会被标记为 (name-matched)。

名称匹配使 QA 与生产之间的比较变得有用,因为这两个项目是分别构建的。它也有局限:名称重复的项目并不总能一一配对,标记为 ambiguous match 的项目表示有多个候选项共用同一名称,合并之前请手动检查这些项目。

还有第三种匹配方式,用于其中一个项目是从另一个项目复制而来的情况:按所记录的复制谱系配对,这样即使副本被重命名,也仍能与其原件对齐。它不会被自动选用,需要通过重新同步到… 来请求,详见从您复制的项目重新同步。

  1. 打开 Analyze
  2. 从顶部菜单栏中选择项目
  3. 右键单击您想作为起点的项目(或使用其操作菜单),然后选择比较对象…
  4. 在比较项目窗口中,您作为起点的项目会自动填入源
  5. 从下拉列表中选择目标项目,即您想要与之比较的项目
  6. 点击比较

两个项目必须位于同一工作区。

左侧会按类别对每处差异进行分组:工作流(其步骤嵌套在下方)、变量、维度、编辑器、UDF、视图和表。

每个项目都带有状态徽标:

  • 已添加 — 存在于源中但不存在于目标中(将在目标中创建)
  • 已修改 — 两者都存在,但配置不同
  • 已删除 — 存在于目标中但不存在于源中
  • 未更改 — 两侧相同(默认隐藏)

选择一个有更改的项目,即可在右侧查看其详细信息:一个列出更改内容的字段 / 源 / 目标表,其下方是完整的配置差异。如果某个项目的差异非常大,则会被截断,点击展开完整差异即可加载完整版本。

  • 按名称或路径筛选可将树缩小到匹配的项目。
  • 状态复选框用于显示或隐藏已添加、已修改、已删除和未更改的项目。
  • 需要手动处理仅显示无法自动合并的更改(见下文)。

并非每处差异都能在项目之间安全地复制。比较会为每个项目打上标签,让您始终知道哪些内容可以合并:

  • 工作流、步骤和变量可以合并。
  • 维度、编辑器、UDF、视图和表为仅可查看,它们出现在比较中是为了供您审查,但需要使用各自专用的工具来复制,而不是在此处复制。

即使在可合并的类别中,某些单独的更改也会被标记为手动(带有锁形图标),因为自动应用它们并不安全。详情窗格会说明原因以及应改为如何操作。最常见的情况有:

  • 按名称匹配(QA 与生产)的比较中的步骤仅供审查:步骤的配置可能引用特定于环境的连接和代理,因此需要手动复制。请利用差异精确查看需要在目标中更改什么。
  • 变量删除不会为您应用,请在目标项目中手动移除该变量。

摘要行会让您一目了然地看到分布情况,例如*“12 项可合并 · 5 项仅可查看”以及“3 项需要手动处理”*。

  1. 选择要从源复制到目标的项目。使用全选可选择当前显示的所有可合并项目,也可以对各行进行多选。仅可查看和手动处理的项目无法选择。
  2. 点击试运行,在不写入任何内容的情况下验证所选内容。PlaidCloud 会报告将应用多少操作(新建与更新),并标出会失败的操作。
  3. 试运行结果无误后,点击应用(可在试运行结果中或页脚处点击)。
  4. 在确认合并对话框中确认该操作。

合并后的项目在目标中保留其身份,因此您以后可以再次运行比较并合并更多更改,而不会产生重复项。

  • 目标已更改 — 如果在您加载比较之后有其他人修改了目标,合并会停止,以避免覆盖他们的工作。请刷新比较后重新应用。
  • 合并已部分应用 — 如果某个操作在中途失败,其余操作会被报告为剩余项。请修复原因后选择重试剩余项,或取消并刷新。

比较适用于工作区中的任意两个项目。但是,当目标是通过复制项目复制到现有项目中,从源构建而来时,PlaidCloud 会记住目标中的哪个对象来自源中的哪个对象。重新同步利用这一记忆,按照两者实际的关联方式进行比较,而不是通过 id 和名称来猜测。

这使一个租户可以将开发、QA 和生产作为独立项目同时保存,并在它们之间向前推广更改。您先将开发复制到 QA;此后,将 QA 与开发重新同步,只会显示开发自那以后的变化,并让您将所选部分移入 QA,然后以同样的方式将 QA 移入生产。无需导出、无需归档,也无需第二个工作区。

对两个独立构建的项目进行普通比较时,由于它们不共享 id,必须按名称配对项目。这种方式在复制过程重命名了某些内容之前都能正常工作。当“复制项目”落地的对象的名称或 id 在目标中已存在时,它会为传入的对象赋予新的身份(附加 copy),因此普通比较会认为这个被重命名的副本与其源原件无关:源项目显示为已添加,而它在目标中的副本显示为已删除,两者并排出现。您看到的是同一个对象的两半,却无法将它们对齐。

重新同步则改为按传承关系(即所记录的复制谱系)配对,因此被重命名或重新编号的对象仍能与其来源对齐,只有真正的更改才会显示为差异。

  1. 打开 Analyze
  2. 选择项目
  3. 右键单击您复制自的项目(即源,例如开发),或使用其操作菜单,然后选择重新同步到…
  4. 选择您之前复制到的目标,例如 QA
  5. 点击重新同步

该窗口就是同一个比较项目窗口,阅读比较结果、可以合并的内容和合并更改中的所有内容均原样适用。唯一的区别是项目的配对方式。

重新同步需要两个项目之间存在已记录的复制。如果您重新同步的一对项目从未通过“复制项目”关联过(或只有部分关联),PlaidCloud 会告知您,而不会假装有关联:

  • 完全没有谱系 — 横幅会说明比较已退回到普通配对,且不是重新同步。它的行为与普通比较完全相同,包括对先前复制可能已重命名的任何内容显示已添加/已删除的拆分。如果您重新同步两个互不相关的项目,或通过归档导入而非“复制项目”关联的项目对,就会看到这种情况。
  • 部分谱系 — 如果复制仅涵盖某些类别,横幅会指出退回的类别。这些类别随后按名称配对,合并的是与 QA 与生产比较相同的安全子集:变量和工作流记录更改会被带过去,而步骤和新增的工作流则仅供审查(参见可以合并的内容)。

无论哪种情况,窗口所显示和合并的都是您实际得到的配对,重新同步绝不会在告诉您按谱系匹配的同时悄悄降级为名称匹配。

  • 管理项目 — 单个项目内的版本控制和时间点跟踪
  • 归档项目 — 捕获时间点快照,供日后比较
  • 工作流 — 比较在项目之间合并的自动化基本单元