/** * @return string Gerrit project name * * @throws Git_Driver_Gerrit_ProjectCreator_ProjectAlreadyexistsException * @throws Git_Driver_Gerrit_Exception * @throws Git_Command_Exception */ public function createGerritProject(Git_RemoteServer_GerritServer $gerrit_server, GitRepository $repository, $template_id) { $project = $repository->getProject(); $project_name = $project->getUnixName(); $ugroups = $this->ugroup_manager->getUGroups($project); $driver = $this->driver_factory->getDriver($gerrit_server); $name = $driver->getGerritProjectName($repository); if ($driver->doesTheProjectExist($gerrit_server, $name)) { throw new Git_Driver_Gerrit_ProjectCreator_ProjectAlreadyexistsException($name, $gerrit_server->getHost()); } $migrated_ugroups = $this->membership_manager->createArrayOfGroupsForServer($gerrit_server, $ugroups); $this->umbrella_manager->recursivelyCreateUmbrellaProjects(array($gerrit_server), $project); $gerrit_project_name = $driver->createProject($gerrit_server, $repository, $project_name); $this->pushMinimalPermissionsToMigrateTuleapRepoOnGerrit($gerrit_server, $repository); $this->exportGitBranches($gerrit_server, $gerrit_project_name, $repository); // This method behaviour & all should be transfered into "finalizeGerritProjectCreation" $this->pushFullTuleapAccessRightsToGerrit($repository, $gerrit_server, $migrated_ugroups, ForgeConfig::get('sys_default_domain') . '-' . self::GROUP_REPLICATION, $template_id); return $gerrit_project_name; }
/** * @param array $gerrit_servers * @param Project $project */ private function createProjectOnServers(array $gerrit_servers, Project $project) { $ugroups = $this->ugroup_manager->getUGroups($project); $admin_ugroup = $this->getAdminUGroup($ugroups); $project_name = $project->getUnixName(); foreach ($gerrit_servers as $gerrit_server) { $this->membership_manager->createArrayOfGroupsForServer($gerrit_server, $ugroups); $driver = $this->driver_factory->getDriver($gerrit_server); if (!$driver->doesTheParentProjectExist($gerrit_server, $project_name)) { $admin_group_name = $project_name . '/' . $admin_ugroup->getNormalizedName(); $project_name = $driver->createProjectWithPermissionsOnly($gerrit_server, $project, $admin_group_name); } } }