/** * @static * @param GitCommand $gitCommand * @param Repository $repository * @param Branch $branch * @param bool $deleteOnly * @return void */ public static function synchronize(GitCommand $gitCommand, Repository $repository, Branch $branch, $deleteOnly = false) { $branchGit = $gitCommand->getNoMergedBranchInfos($repository->getGitDir(), $branch->getBaseBranchName(), $branch->getName()); $branchModel = BranchQuery::create()->filterByRepositoryId($repository->getId())->filterByName($branch->getName())->findOne(); if ($branchModel) { if (is_null($branchGit)) { $branchModel->delete(); } elseif (!$branchModel->getIsBlacklisted() && !$deleteOnly) { $lastSynchronizationCommit = $branchModel->getLastCommit(); $branchModel->setCommitReference($branchGit['commit_reference']); $branchModel->setLastCommit($branchGit['last_commit']); $branchModel->setLastCommitDesc($branchGit['last_commit_desc']); $branchModel->save(); return FilePeer::synchronize($gitCommand, $branchModel, $lastSynchronizationCommit); } } return 0; }