/**
  * Create a new GitRepository through its backend
  *
  * @param  GitRepository $repository
  * @throws Exception
  */
 public function create(GitRepository $repository)
 {
     if (!$repository->isNameValid($repository->getName())) {
         throw new Exception($GLOBALS['Language']->getText('plugin_git', 'actions_input_format_error', array($repository->getBackend()->getAllowedCharsInNamePattern(), GitDao::REPO_NAME_MAX_LENGTH)));
     }
     $this->assertRepositoryNameNotAlreadyUsed($repository);
     $repository->getBackend()->createReference($repository);
 }
示例#2
0
 public function updateRepositoryMirrors(GitRepository $repository, array $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->history_dao->groupAddHistory("git_repo_mirroring_update", $repository->getName(), $repository->getProjectId());
         return true;
     }
     return false;
 }
 /**
  * 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);
 }
 private function makeGerritProjectReadOnly(GitRepository $repository, Git_RemoteServer_GerritServer $server, Project $project)
 {
     try {
         $this->driver_factory->getDriver($server)->makeGerritProjectReadOnly($server, $project->getUnixName() . '/' . $repository->getName());
     } catch (Exception $e) {
         $this->error($e->getMessage() . $e->getTraceAsString());
         return false;
     }
     $this->done();
     return true;
 }
 public function __construct(GitRepository $repository, array $urls, array $mirrors, $user_is_admin, $master_location_name)
 {
     $this->repository = $repository;
     $this->urls = $urls;
     $this->mirrors = $mirrors;
     $this->user_is_admin = $user_is_admin;
     $this->settings_text = $GLOBALS['Language']->getText('global', 'Settings');
     $this->how_to_use_text = $GLOBALS['Language']->getText('plugin_git', 'how_to_use_text');
     $this->clone_text = $GLOBALS['Language']->getText('plugin_git', 'clone_text');
     $this->add_remote_text = $GLOBALS['Language']->getText('plugin_git', 'add_remote_text');
     $this->ssh_mirrors_text = $GLOBALS['Language']->getText('plugin_git', 'ssh_mirrors_text');
     $this->repository_name = $repository->getName();
     $this->master_location_name = $master_location_name;
 }
 private function deleteGerritProject(GitRepository $repository, Git_RemoteServer_GerritServer $server, Project $project, $backend)
 {
     try {
         $this->driver_factory->getDriver($server)->deleteProject($server, $project->getUnixName() . '/' . $repository->getName());
         $backend->setGerritProjectAsDeleted($repository);
     } catch (Exception $e) {
         $this->error($e->getMessage() . $e->getTraceAsString());
         return false;
     }
     $this->done();
     return true;
 }
示例#7
0
 public function mirroring_info()
 {
     return $GLOBALS['Language']->getText('plugin_git', 'mirroring_info', array($this->repository->getName()));
 }
示例#8
0
 function permissions_for_ugroup($params)
 {
     if (!$params['results']) {
         if (in_array($params['permission_type'], array('PLUGIN_GIT_READ', 'PLUGIN_GIT_WRITE', 'PLUGIN_GIT_WPLUS'))) {
             require_once 'GitRepository.class.php';
             $repository = new GitRepository();
             $repository->setId($params['object_id']);
             try {
                 $repository->load();
                 $params['results'] = $repository->getName();
             } catch (Exception $e) {
                 // do nothing
             }
         }
     }
 }
示例#9
0
 /**
  * Return URL to access the respository for remote git commands
  *
  * @param  GitRepository $repository
  * @return String
  */
 public function getAccessURL(GitRepository $repository)
 {
     $serverName = $_SERVER['SERVER_NAME'];
     $user = UserManager::instance()->getCurrentUser();
     return array('ssh' => $user->getUserName() . '@' . $serverName . ':/gitroot/' . $repository->getProject()->getUnixName() . '/' . $repository->getName() . '.git');
 }
示例#10
0
 public function save(GitRepository $repository)
 {
     $id = (int) $repository->getId();
     $name = $repository->getName();
     $mailPrefix = $repository->getMailPrefix();
     $parentId = 0;
     $scope = $repository->getScope();
     $namespace = $repository->getNamespace();
     try {
         $parent = $repository->getParent();
         if (!empty($parent)) {
             $parentId = $parent->getId();
         }
     } catch (GitDaoException $e) {
     }
     $projectId = $repository->getProjectId();
     $description = $repository->getDescription();
     $path = $repository->getPath();
     $isInitialized = $repository->getIsInitialized();
     $creationUserId = $repository->getCreatorId();
     $access = $repository->getAccess();
     //protect parameters
     $id = $this->da->escapeInt($id);
     $name = $this->da->quoteSmart($name);
     $description = $this->da->quoteSmart($description);
     $path = $this->da->quoteSmart($path);
     $projectId = $this->da->escapeInt($projectId);
     $isInitialized = $this->da->escapeInt($isInitialized);
     $creationUserId = $this->da->escapeInt($creationUserId);
     $access = $this->da->quoteSmart($access);
     $mailPrefix = $this->da->quoteSmart($mailPrefix);
     $scope = $this->da->quoteSmart($scope);
     $namespace = $this->da->quoteSmart($namespace);
     $backup_path = $this->da->quoteSmart($repository->getBackupPath());
     $insert = false;
     if ($this->exists($id)) {
         $query = 'UPDATE ' . $this->getTable() . ' SET ' . self::REPOSITORY_DESCRIPTION . '=' . $description . ',' . self::REPOSITORY_IS_INITIALIZED . '=' . $isInitialized . ',' . self::REPOSITORY_ACCESS . '=' . $access . ',' . self::REPOSITORY_MAIL_PREFIX . '=' . $mailPrefix . ',' . self::REPOSITORY_BACKUP_PATH . '=' . $backup_path . 'WHERE ' . self::REPOSITORY_ID . '=' . $id;
     } else {
         if ($repository->getBackend() instanceof Git_Backend_Gitolite) {
             $backendType = self::BACKEND_GITOLITE;
         } else {
             $backendType = self::BACKEND_GITSHELL;
         }
         $insert = true;
         $creationDate = date('Y-m-d H:i:s');
         $query = 'INSERT INTO ' . $this->getTable() . '(' . self::REPOSITORY_NAME . ',' . self::REPOSITORY_PATH . ',' . self::REPOSITORY_PARENT . ',' . self::REPOSITORY_DESCRIPTION . ',' . self::FK_PROJECT_ID . ',' . self::REPOSITORY_CREATION_DATE . ',' . self::REPOSITORY_CREATION_USER_ID . ',' . self::REPOSITORY_IS_INITIALIZED . ',' . self::REPOSITORY_ACCESS . ',' . self::REPOSITORY_BACKEND_TYPE . ',' . self::REPOSITORY_SCOPE . ',' . self::REPOSITORY_NAMESPACE . ') values (' . "" . $name . "," . "" . $path . "," . "" . $parentId . "," . "" . $description . "," . $projectId . "," . "'" . $creationDate . "'," . $creationUserId . "," . $isInitialized . ',' . $access . ',' . $this->da->quoteSmart($backendType) . ',' . $scope . ',' . $namespace . ')';
     }
     if ($this->update($query) === false) {
         throw new GitDaoException($GLOBALS['Language']->getText('plugin_git', 'dao_update_error') . ' : ' . $this->da->isError());
     }
     if ($insert) {
         return $this->da->lastInsertId();
     }
     return true;
 }
 /**
  *
  * Restore archived Gitolite repositories
  *
  * @param GitRepository $repository
  *
  */
 public function restoreArchivedRepository(GitRepository $repository)
 {
     $this->logger->info('[Gitolite]Restoring repository : ' . $repository->getName());
     $backup_directory = realpath($this->getGitPlugin()->getConfigurationParameter('git_backup_dir') . '/');
     return $this->getDriver()->restoreRepository($repository, $this->getGitRootPath(), $backup_directory);
 }
 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);
 }
 /**
  * @throws GitRepositoryAlreadyExistsException 
  */
 public function fork(GitRepository $old, GitRepository $new)
 {
     $name = $old->getName();
     //TODO use $old->getRootPath() (good luck for Unit Tests!)
     $old_namespace = $old->getProject()->getUnixName() . '/' . $old->getNamespace();
     $new_namespace = $new->getProject()->getUnixName() . '/' . $new->getNamespace();
     $new_project = $new->getProject();
     if ($this->getDao()->isRepositoryExisting($new_project->getId(), $new->getPath())) {
         throw new GitRepositoryAlreadyExistsException('Respository already exists');
     } else {
         $forkSucceeded = $this->getDriver()->fork($name, $old_namespace, $new_namespace);
         if ($forkSucceeded) {
             $id = $this->getDao()->save($new);
             $new->setId($id);
             $this->clonePermissions($old, $new);
             $this->updateRepoConf($new);
         }
     }
 }