示例#1
0
 /**
  *@todo move the archive to another directory
  * @param <type> $repository
  * @return <type>
  */
 public function archive(GitRepository $repository)
 {
     chdir($this->getGitRootPath());
     $path = $repository->getPath();
     $archiveName = $repository->getBackupPath() . '.tar.bz2';
     $cmd = ' tar cjf ' . $archiveName . ' ' . $path . ' 2>&1';
     $rcode = 0;
     $output = $this->system($cmd, $rcode);
     if ($rcode != 0) {
         throw new GitBackendException($cmd . ' -> ' . $output);
     }
     if (!empty($this->gitBackupDir) && is_dir($this->gitBackupDir)) {
         $this->system('mv ' . $this->getGitRootPath() . '/' . $archiveName . ' ' . $this->gitBackupDir . '/' . $archiveName);
     }
     return true;
 }
示例#2
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;
 }
 public function deleteArchivedRepository(GitRepository $repository)
 {
     $this->logger->debug('Delete backup ' . $repository->getBackupPath());
     $this->getDriver()->deleteBackup($repository, $this->getGitPlugin()->getConfigurationParameter('git_backup_dir'));
 }
 private function getBackupPath(GitRepository $repository, $backup_directory)
 {
     return $backup_directory . '/' . $repository->getBackupPath() . '.tar.gz';
 }
 /**
  * Invoque 'archive deleted item' hook in order to make a backup of the git repository archive
  *
  * @param GitRepository $repository
  *
  * @return Boolean
  */
 public function archiveBeforePurge(GitRepository $repository)
 {
     $backup = $this->getGitPlugin()->getConfigurationParameter('git_backup_dir');
     if (dirname($backup)) {
         $sourcePath = $backup . '/' . $repository->getBackupPath() . '.tar.gz';
         $status = true;
         $error = null;
         $params = array('source_path' => $sourcePath, 'archive_prefix' => self::PREFIX, 'status' => &$status, 'error' => &$error);
         $this->getEventManager()->processEvent('archive_deleted_item', $params);
         if ($params['status']) {
             $this->logger->info('The repository' . $repository->getName() . ' has been moved to the archiving area before purge ');
             return true;
         } else {
             $this->logger->warn('Can not move the repository' . $repository->getName() . ' to the archiving area before purge :[' . $params['error'] . ']');
             return false;
         }
     } else {
         $this->logger->error('An error occured: The backup ' . $backup . ' is not a directory or does not exist');
         return false;
     }
 }