/**
  * Create a new GitRepository through its backend
  *
  * @param  GitRepository $repository
  * @throws Exception
  */
 public function create(GitRepository $repository, GitRepositoryCreator $creator)
 {
     if (!$creator->isNameValid($repository->getName())) {
         throw new Exception($GLOBALS['Language']->getText('plugin_git', 'actions_input_format_error', array($creator->getAllowedCharsInNamePattern(), GitDao::REPO_NAME_MAX_LENGTH)));
     }
     $this->assertRepositoryNameNotAlreadyUsed($repository);
     $id = $this->dao->save($repository);
     $repository->setId($id);
     $this->git_system_event_manager->queueRepositoryUpdate($repository);
 }
 public function revokeProjectsFromMirror(Git_Mirror_Mirror $mirror, array $project_ids)
 {
     $this->restricted_mirror_dao->revokeProjectsFromResource($mirror->id, $project_ids);
     $repositories = $this->mirror_data_mapper->fetchAllProjectRepositoriesForMirror($mirror, $project_ids);
     foreach ($repositories as $repository) {
         $this->mirror_data_mapper->unmirrorRepository($repository->getId());
         $this->git_system_event_manager->queueRepositoryUpdate($repository);
         $this->history_dao->groupAddHistory("git_repo_mirroring_update", $repository->getName(), $repository->getProjectId());
     }
     return true;
 }
Exemplo n.º 3
0
 public function updateMirroring(Project $project, array $repositories, $selected_mirror_ids)
 {
     $current_mirror_ids_per_repository = $this->mirror_data_mapper->getListOfMirrorIdsPerRepositoryForProject($project);
     foreach ($repositories as $repository) {
         if (!isset($selected_mirror_ids[$repository->getId()]) || !is_array($selected_mirror_ids[$repository->getId()])) {
             continue;
         }
         $mirror_ids = $this->getSelectedMirrorIdsFromRequest($selected_mirror_ids, $repository->getId());
         if (!$this->areThereAnyChanges($repository, $mirror_ids, $current_mirror_ids_per_repository)) {
             continue;
         }
         if (!$this->mirror_updater->updateRepositoryMirrors($repository, $mirror_ids)) {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_git', 'mirroring_mirroring_error'));
             return;
         }
         $this->git_system_event_manager->queueRepositoryUpdate($repository);
     }
     $more_than_one_repository = count($repositories) > 1;
     if ($more_than_one_repository && !$selected_mirror_ids) {
         $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('plugin_git', 'mirroring_unmirroring_successful_plural'));
     } elseif ($more_than_one_repository && $selected_mirror_ids) {
         $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('plugin_git', 'mirroring_mirroring_successful_plural'));
     } elseif (!$more_than_one_repository && !$selected_mirror_ids) {
         $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('plugin_git', 'mirroring_unmirroring_successful'));
     } else {
         $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('plugin_git', 'mirroring_mirroring_successful'));
     }
 }
Exemplo n.º 4
0
 private function updateRepositoryMirrors(GitRepository $repository, $mirror_ids)
 {
     if ($this->mirror_data_mapper->doesAllSelectedMirrorIdsExist($mirror_ids) && $this->mirror_data_mapper->unmirrorRepository($repository->getId()) && $this->mirror_data_mapper->mirrorRepositoryTo($repository->getId(), $mirror_ids)) {
         $this->git_system_event_manager->queueRepositoryUpdate($repository);
         $this->history_dao->groupAddHistory("git_repo_mirroring_update", $repository->getName(), $repository->getProjectId());
         return true;
     }
     return false;
 }
 public function createFromBundle(GitRepository $repository, GitRepositoryCreator $creator, $bundle_path)
 {
     if (!$creator->isNameValid($repository->getName())) {
         throw new Exception($GLOBALS['Language']->getText('plugin_git', 'actions_input_format_error', array($creator->getAllowedCharsInNamePattern(), GitDao::REPO_NAME_MAX_LENGTH)));
     }
     $this->assertRepositoryNameNotAlreadyUsed($repository);
     $id = $this->dao->save($repository);
     $repository->setId($id);
     $bundle_path_arg = escapeshellarg($bundle_path);
     $repository_full_path_arg = escapeshellarg($repository->getFullPath());
     $this->system_command->exec("sudo -u gitolite /usr/share/tuleap/plugins/git/bin/gl-clone-bundle.sh {$bundle_path_arg} {$repository_full_path_arg}");
     $this->git_system_event_manager->queueRepositoryUpdate($repository);
 }
Exemplo n.º 6
0
 private function mirrorForkedRepository(GitRepository $forked_repository, GitRepository $base_repository)
 {
     $base_repository_mirrors = $this->mirror_data_mapper->fetchAllRepositoryMirrors($base_repository);
     $project_destination = $forked_repository->getProject();
     $allowed_mirrors_forked_repository = $this->mirror_data_mapper->fetchAllForProject($project_destination);
     $repository_mirrors_ids = array();
     foreach ($base_repository_mirrors as $mirror) {
         if (in_array($mirror, $allowed_mirrors_forked_repository)) {
             $repository_mirrors_ids[] = $mirror->id;
         }
     }
     if ($repository_mirrors_ids) {
         $this->mirror_updater->updateRepositoryMirrors($forked_repository, $repository_mirrors_ids);
         $this->git_system_event_manager->queueRepositoryUpdate($forked_repository);
     }
 }
Exemplo n.º 7
0
 public function itDoesntCreateRepositoryUpdateEventForGitShellRepositories()
 {
     expect($this->system_event_manager)->createEvent()->never();
     $this->git_system_event_manager->queueRepositoryUpdate($this->gitshell_repository);
 }