Lightning.Projects.MergeProjects (Lightning v2.14.11-pre1)

View Source

Responsible for merging 2 different projects. Used by sandboxes to merge sandbox workflows back onto their parent workflows.

Summary

Functions

Merges a source project onto a target project using workflow name matching.

Merges a sandbox workflow back onto its parent workflow using UUID mapping.

Functions

merge_project(source_project, target_project)

Merges a source project onto a target project using workflow name matching.

Maps workflows from source to target project based on exact name matching. Uses the existing merge_workflow/2 logic for individual workflow merging. Workflows that don't match are marked for deletion (target) or creation (source).

Parameters

  • source_project - The project with modifications to merge
  • target_project - The target project to merge changes onto

Returns

A map with the merged project structure ready for import, containing workflow mappings and project data.

merge_workflow(source_workflow, target_workflow)

Merges a sandbox workflow back onto its parent workflow using UUID mapping.

Maps nodes and edges from source to target workflow, preserving UUIDs where possible when merging two workflows (likely one is a fork of the other).

The algorithm follows these phases:

  1. Direct ID Matching - matches nodes with identical IDs
  2. Root Node Mapping - always maps root nodes
  3. Structural and Expression Matching - iterative matching using parents, children, and expression
  4. Edge Mapping - maps edges based on node mappings

Parameters

  • source_workflow - The sandbox workflow with modifications (i.e staging)
  • target_workflow - The parent workflow to merge changes onto (i.e main)

Returns

A map with the merged workflow structure ready for import, containing UUID mappings and workflow data.