wp-content/plugins/portage/portage.php
Portage
Move a site between hosts and get a verification report, not a green tick.
== Description ==
Migration tools finish and say “success”. Portage finishes and then checks: row counts per table, checksums per file, a crawl of the top 200 URLs comparing status codes and content length against the source, and a list of every serialised option that had to be rewritten.
Search-replace is serialisation-aware and reports what it changed rather than doing it silently, which is how you catch the plugin storing an absolute path inside a base64 blob.
Rollback restores the target to its pre-migration state from a snapshot taken before anything was written, and it is tested by the same integration suite as the migration itself.
== Screenshots ==
Numbered the way they ship in /assets/. Click any one to see it full width.
== Installation ==
- Install the plugin on both sites.
- Run
wp portage push --to=staging --dry-runand read the plan. - Run it for real, then read the verification report.
The snapshot needs disk space equal to the target site. It checks before starting and refuses if there is not enough.
== Frequently asked questions ==
Multisite?
A whole network, or a single site out of one into a standalone install. Both are tested paths.
How large?
Streams throughout, so size is bounded by disk and time rather than memory. Largest tested was 240GB of uploads.
What does verification miss?
Anything not reachable by URL, and anything that differs only in rendered output. The readme is explicit about the limits.
== Changelog ==
= 3.1.2 =
- Fixed: verification followed redirects, so a source 200 and a target 301-to-200 compared as equal.
= 3.1.0 =
- Serialised-option rewrite report, listing every option whose contents were changed by search-replace.
= 3.0.0 =
- Rollback rebuilt around a pre-migration snapshot. The previous implementation replayed changes, which could not undo a partial failure.