Example #1
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) {
     }
 }