Download the PHP package wp-php-toolkit/merge without Composer
On this page you can find all versions of the php package wp-php-toolkit/merge. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download wp-php-toolkit/merge
More information about wp-php-toolkit/merge
Files in wp-php-toolkit/merge
Package merge
Short Description Merge component for WordPress with configurable diffing and merging strategies.
License GPL-2.0-or-later
Homepage https://wordpress.github.io/php-toolkit/reference/merge.html
Informations about the package merge
slug: merge title: Merge install: wp-php-toolkit/merge
see_also:
- git | Git | Merge file contents discovered through repository history.
- markdown | Markdown | Resolve file-based editorial workflows before converting to blocks.
-
dataliberation | DataLiberation | Make content synchronization conflicts visible.
Three-way merge and diff. Pluggable differ + merger + optional validator.
Why this exists
Content synchronization needs more than "last write wins." A Markdown file changes in Git while the same post changes in WordPress. A generated config changes through both a CLI tool and a UI. In those cases you need a common ancestor, two edited versions, and a way to explain conflicts to a human.
The Merge component provides the diff and three-way merge primitives used by those workflows. The default examples are line-oriented because that is the most familiar shape, but the strategy is intentionally pluggable: choose the differ, choose the merger, and optionally validate the merged result before accepting it.
Use the merge result to auto-accept independent edits and to show structured conflicts when a person must decide.
Diff two strings line by line
Feed two strings to LineDiffer and inspect the operations. Every get_changes() entry is a [op, text] pair.
Render a unified patch
format_as_git_patch() produces output that mirrors git diff, including hunk headers — handy for emails, CI annotations, or a "what changed?" panel.
Three-way merge with no conflicts
The classic case: each branch changes a different region. Pass the common ancestor plus both edits to MergeStrategy::merge() and read the merged result.
Inspect and surface conflicts
When both sides edit the same region, the merger produces a MergeConflict. The merged content carries Git-style markers, but the structured get_conflicts() output is what you want for a UI that lets the user pick a side.
Sync a Markdown folder against an edited DB copy
A real-world scenario: posts live both in a Git-tracked Markdown folder and in WordPress, and someone edits each. Three-way-merge each post against its common ancestor.