Added
MigrationRunner::migrate(bool $dryRun = false)— passdryRun: trueto
find out which migrations would be applied without running them. In
dry-run modeup()is never called, no rows are written to the tracking
table, and the tracking table isn't even created if it doesn't already
exist. Returns the samestring[]shape as a real run, so callers get a
symmetrical preview/confirm API.- README "Dry-Run Mode" section with a runnable example, plus an expanded
Usage section covering a full deploy-script example. - New test coverage proving a dry run leaves the target tables and the
tracking table completely untouched, and that a subsequent real
migrate()call applies everything normally.
See CHANGELOG.md for details.