/** * Build a pending version * * @param Version $pending * @param Version|null $previousVersion * * @return Version */ public function buildPendingVersion(Version $pending, Version $previousVersion = null) { $versionNumber = $previousVersion ? $previousVersion->getVersion() + 1 : 1; $oldSnapshot = $previousVersion ? $previousVersion->getSnapshot() : []; $modification = $pending->getChangeset(); $snapshot = $modification + $oldSnapshot; $changeset = $this->buildChangeset($oldSnapshot, $snapshot); $pending->setVersion($versionNumber)->setSnapshot($snapshot)->setChangeset($changeset); return $pending; }