/**
  * @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;
 }
 public function itDoesntCallTheDriverToSetTheParentProjectIfNone()
 {
     stub($this->project_manager)->getParentProject($this->project->getID())->returns(null);
     expect($this->driver)->setProjectInheritance($this->server, $this->project->getUnixName(), $this->parent_project->getUnixName())->never();
     $this->umbrella_manager->recursivelyCreateUmbrellaProjects(array($this->server), $this->project);
 }