/** * Return a reference that match keyword and value * @param Project $project * @param String $keyword * @param String $value * @return Reference */ public function getReference(Project $project, $keyword, $value) { $reference = false; list($repository_name, $sha1) = $this->splitRepositoryAndSha1($value); $repository = $this->repository_factory->getRepositoryByPath($project->getId(), $project->getUnixName() . '/' . $repository_name . '.git'); if ($repository) { $args = array($repository->getId(), $sha1); $reference = $this->reference_manager->loadReferenceFromKeywordAndNumArgs($keyword, $project->getID(), count($args), $value); if ($reference) { $reference->setLink($reference->getLink() . '&p=' . $repository_name); $reference->replaceLink($args); } } return $reference; }
/** * @return GitRepository|null */ private function getRepositoryFromStandardURL() { $repository_id = $this->matches['repository_id']; $repository_id_is_a_int = preg_match('/^([0-9]+)$/', $repository_id); if ($repository_id_is_a_int) { return $this->repository_factory->getRepositoryById($repository_id); } else { $project = $this->getProjectFromStandardURL(); if (!$project->isError()) { return $this->repository_factory->getRepositoryByPath($project->getID(), GitRepository::getPathFromProjectAndName($project, $repository_id)); } } return null; }
public function process() { $parameters = $this->getParametersAsArray(); $repository_id = 0; if (!empty($parameters[0])) { $repository_id = (int) $parameters[0]; } else { $this->error('Missing argument repository id'); return false; } $repository = $this->repository_factory->getDeletedRepository($repository_id); $active_repository = $this->repository_factory->getRepositoryByPath($repository->getProject()->getId(), $repository->getPath()); if ($active_repository instanceof GitRepository) { $this->error('Repository with the same name already exsit'); return false; } if (!$repository->getBackend()->restoreArchivedRepository($repository)) { $this->error('Unable to restore repository : ' . $repository->getName()); return false; } $repository->getBackend()->updateRepoConf($repository); $this->system_event_manager->queueGrokMirrorManifest($repository); $this->done(); }
public function restoreRepository($repo_id, $project_id) { $repository = $this->factory->getDeletedRepository($repo_id); $url = '/admin/show_pending_documents.php?group_id=' . $project_id . '&focus=git_repository'; if (!$repository) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_git', 'restore_invalid_id')); $GLOBALS['Response']->redirect($url); } $active_repository = $this->factory->getRepositoryByPath($project_id, $repository->getPath()); if ($active_repository instanceof GitRepository) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_git', 'restore_invalid_name')); } else { $this->git_system_event_manager->queueRepositoryRestore($repository); $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_git', 'restore_event_created') . ' : ' . $repository->getName()); } $GLOBALS['Response']->redirect($url); }