Пример #1
0
 /**
  * @throws Exception
  * @param $request
  * @return void
  */
 public function execute($request)
 {
     $this->form = new RepositoryForm();
     $name = $request->getParameter('name');
     $remote = $request->getParameter('remote');
     // get the propel connection
     $con = Propel::getConnection();
     $con->beginTransaction();
     $message = '';
     try {
         if ($name && $remote) {
             $repositoryPath = Configuration::get('repositories_path');
             $repositoryName = $name;
             $repository = sprintf('%s/%s', $repositoryPath, $repositoryName);
             if (!$this->checkLocalRepository($repository, $remote)) {
                 throw new Exception(sprintf("Existing remote is different from remote you want '%s'", $remote));
             } else {
                 $projectStatus = $this->getProjectStatus($name, $remote);
                 switch ($projectStatus) {
                     case -1:
                         $newProject = new Repository();
                         $newProject->setName($name)->setRemote($remote)->setValue($repositoryName)->save();
                         $message = sprintf("The project has been added successfully");
                         break;
                     case 0:
                         throw new Exception(sprintf("A project already exists and conflicts with project you want to add (name: %s, remote: %s)", $name, $remote));
                         break;
                     default:
                         throw new Exception(sprintf("Project '%s' (remote: %s) already exists", $name, $remote));
                         break;
                 }
                 if (!is_dir($repository)) {
                     $cloneStatus = $this->gitCommand->cloneRepository($remote, $repository);
                     if ($cloneStatus === 0) {
                         $message .= sprintf(" and remote '%s' is correctly cloned in '%s'", $remote, $repository);
                         $this->getUser()->setFlash('notice', $message);
                     } else {
                         $message .= sprintf(" but remote '%s' is not cloned in '%s' [status : %s]", $remote, $repository, $cloneStatus === null ? 'NULL' : $cloneStatus);
                         throw new Exception($message);
                     }
                 }
             }
         } else {
             throw new Exception(sprintf("Parameter name ('%s') or remote ('%s') not found", $name, $remote));
         }
         $con->commit();
     } catch (Exception $e) {
         $con->rollBack();
         $this->getUser()->setFlash('error', $e->getMessage());
     }
     $this->redirect("default/repositoryList");
 }
Пример #2
0
    }
}
sfForm::enableCSRFProtection();
$context = sfContext::getInstance(array('controller' => 'myController', 'request' => 'myRequest'));
// test環境でDB初期化
$configuration = ProjectConfiguration::getApplicationConfiguration('taskapp', 'test', true);
new sfDatabaseManager($configuration);
Doctrine_Core::loadData(dirname(__FILE__) . '/RepositoryFixture.yml');
$t = new lime_test(28);
// construct
$t->diag('__construct()');
$t->ok(new Repository() instanceof Repository, 'Repositoryインスタンス化');
// create
$t->diag('create');
$repository = new Repository();
$repository->setName('repository_name');
$repository->setRepository('repository_url');
$repository->setSubdirectory('subdirectory');
$repository->setBindPath('/bind_path');
$repository->setSettingsJson('settings_json');
$repository->setForceUpdate(true);
$repository->setForceClone(true);
$repository->save();
$repository = RepositoryTable::getInstance()->findOneByName('repository_name');
$t->ok($repository instanceof Repository, 'Repository保存');
$t->is($repository->getName(), 'repository_name', 'リポジトリ名の保存');
$t->is($repository->getRepository(), 'repository_url', 'リポジトリURLの保存');
$t->is($repository->getSubdirectory(), 'subdirectory', 'サブディレクトリの保存');
$t->is($repository->getBindPath(), '/bind_path', '結合パスの保存');
$t->is($repository->getSettingsJson(), 'settings_json', '設定値の保存');
$t->is($repository->getForceUpdate(), true, '強制更新値の保存');
Пример #3
0
 public function testJsonSerialize()
 {
     $commit = new Repository();
     $commit->setName('Name');
     $this->assertInternalType('array', $commit->jsonSerialize());
 }