public function create()
 {
     try {
         Subversion::cmd('import', array(OpenpearConfig::svn_skeleton(work_path('skeleton')), File::absolute(OpenpearConfig::svn_root(), $this->package()->name())), array('message' => sprintf('[New Package] %s (@%s)', $this->package()->name(), $this->maintainer()->name()), 'username' => OpenpearConfig::system_user('openpear')));
         // $message = new OpenpearMessage();
         // $message->subject('New Package is ready for your commit!');
         $this->delete();
         C($this)->commit();
     } catch (Exception $e) {
         Log::error($e->getMessage());
         $this->trial_count += 1;
         $this->save();
         C($this)->commit();
     }
 }
示例#2
0
 public function check_repo_exists()
 {
     $this->login_required();
     try {
         $package = OpenpearPackage::get_package($this->in_vars('package_id'));
         $info = Subversion::cmd('info', array(File::absolute(OpenpearConfig::svn_root(), implode('/', array($package->name(), 'trunk', $this->in_vars('dir', ''))))));
         if (isset($info['kind']) && $info['kind'] == 'dir') {
             echo 'ok';
         } else {
             throw new RuntimeException('directory is not found');
         }
     } catch (Exception $e) {
         Log::debug($e);
         echo 'ng';
     }
     exit;
 }
示例#3
0
 public static function commit_hook($path, $revision, $message)
 {
     Log::debug(sprintf('commit hook: %s %d "%s"', $path, $revision, $message));
     $changed = Subversion::look('changed', array($path), array('revision' => $revision));
     $author = trim(Subversion::look('author', array($path), array('revision' => $revision)));
     $parsed_changed = self::parse_svnlook_changed($changed);
     list($package_name) = explode('/', $parsed_changed[0]['path']);
     try {
         $package = C(OpenpearPackage)->find_get(Q::eq('name', $package_name));
         $maintainer = null;
         try {
             if ($author == OpenpearConfig::system_user('openpear') && preg_match('/\\(@(.*?)\\)$/', trim($message), $match)) {
                 $author = $match[1];
             }
             $maintainer = C(OpenpearMaintainer)->find_get(Q::eq('name', $author));
         } catch (Exception $e) {
             Log::error($e);
             // throw $e;
         }
         $changeset = new self();
         $changeset->revision($revision);
         if ($maintainer instanceof OpenpearMaintainer) {
             $changeset->maintainer_id($maintainer->id());
         }
         $changeset->package_id($package->id());
         $changeset->changed(serialize($parsed_changed));
         $changeset->save();
         if ($maintainer instanceof OpenpearMaintainer) {
             $package->author_id($maintainer->id());
         }
         $package->recent_changeset($changeset->revision());
         $package->save(true);
     } catch (Exception $e) {
         throw $e;
     }
     try {
         chdir(OpenpearConfig::working_copy());
         ob_start();
         passthru('svn up');
         ob_end_clean();
     } catch (Exception $e) {
     }
 }
示例#4
0
 /**
  * SVNからログを取得
  * @param array $info
  * @return array
  */
 public static function format_info(array $info)
 {
     // TODO 仕様の確認
     // TODO Subversion::cmdの実装
     $log = Subversion::cmd('log', array($info['url']), array('limit' => 1));
     $info['recent'] = array_shift($log);
     try {
         $info['recent']['maintainer'] = C(OpenpearMaintainer)->find_get(Q::eq('name', $info['recent']['author']));
     } catch (NotfoundDaoException $e) {
         // FIXME
         $info['recent']['maintainer'] = new OpenpearMaintainer();
     }
     return $info;
 }
示例#5
0
 public final function svn_log_msg($revision)
 {
     $log = Subversion::cmd('log', array(OpenpearConfig::svn_root()), array('revision' => $revision));
     return (string) $log[0]['msg'];
 }