예제 #1
0
파일: Source.php 프로젝트: burbuja/indefero
 public function commit($request, $match)
 {
     $scm = IDF_Scm::get($request->project);
     $commit = $match[2];
     $large = $scm->isCommitLarge($commit);
     $cobject = $scm->getCommit($commit, !$large);
     if (!$cobject) {
         throw new Exception('could not retrieve commit object for ' . $commit);
     }
     $title = sprintf(__('%s Commit Details'), (string) $request->project);
     $page_title = sprintf(__('%s Commit Details - %s'), (string) $request->project, $commit);
     $rcommit = IDF_Commit::getOrAdd($cobject, $request->project);
     $diff = new IDF_Diff($cobject->diff);
     $diff->parse();
     $scmConf = $request->conf->getVal('scm', 'git');
     try {
         $changes = $scm->getChanges($commit);
     } catch (Exception $e) {
         // getChanges is not yes supported by this backend.
         $changes = array();
     }
     $branches = $scm->getBranches();
     $in_branches = $scm->inBranches($cobject->commit, '');
     $tags = $scm->getTags();
     $in_tags = $scm->inTags($cobject->commit, '');
     return Pluf_Shortcuts_RenderToResponse('idf/source/' . $scmConf . '/commit.html', array('page_title' => $page_title, 'title' => $title, 'diff' => $diff, 'cobject' => $cobject, 'commit' => $commit, 'changes' => $changes, 'branches' => $branches, 'tree_in' => $in_branches, 'tags' => $tags, 'tags_in' => $in_tags, 'scm' => $scmConf, 'rcommit' => $rcommit, 'large_commit' => $large), $request);
 }
예제 #2
0
파일: Source.php 프로젝트: Br3nda/indefero
 public function commit($request, $match)
 {
     $scm = IDF_Scm::get($request->project);
     $commit = $match[2];
     if (!$scm->isValidRevision($commit)) {
         // Redirect to the first branch
         $url = Pluf_HTTP_URL_urlForView('IDF_Views_Source::treeBase', array($request->project->shortname, $scm->getMainBranch()));
         return new Pluf_HTTP_Response_Redirect($url);
     }
     $large = $scm->isCommitLarge($commit);
     $cobject = $scm->getCommit($commit, !$large);
     if (!$cobject) {
         // Redirect to the first branch
         $url = Pluf_HTTP_URL_urlForView('IDF_Views_Source::treeBase', array($request->project->shortname, $scm->getMainBranch()));
         return new Pluf_HTTP_Response_Redirect($url);
     }
     $title = sprintf(__('%s Commit Details'), (string) $request->project);
     $page_title = sprintf(__('%s Commit Details - %s'), (string) $request->project, $commit);
     $rcommit = IDF_Commit::getOrAdd($cobject, $request->project);
     $diff = new IDF_Diff($cobject->changes);
     $diff->parse();
     $scmConf = $request->conf->getVal('scm', 'git');
     $branches = $scm->getBranches();
     $in_branches = $scm->inBranches($cobject->commit, '');
     $tags = $scm->getTags();
     $in_tags = $scm->inTags($cobject->commit, '');
     return Pluf_Shortcuts_RenderToResponse('idf/source/commit.html', array('page_title' => $page_title, 'title' => $title, 'diff' => $diff, 'cobject' => $cobject, 'commit' => $commit, 'branches' => $branches, 'tree_in' => $in_branches, 'tags' => $tags, 'tags_in' => $in_tags, 'scm' => $scmConf, 'rcommit' => $rcommit, 'large_commit' => $large), $request);
 }
예제 #3
0
파일: Scm.php 프로젝트: Br3nda/indefero
 /**
  * Sync the changes in the repository with the timeline.
  *
  */
 public static function syncTimeline($project, $force = false)
 {
     $cache = Pluf_Cache::factory();
     $key = 'IDF_Scm:' . $project->shortname . ':lastsync';
     if ($force or null === ($res = $cache->get($key))) {
         $scm = IDF_Scm::get($project);
         if ($scm->isAvailable()) {
             foreach ($scm->getChangeLog($scm->getMainBranch(), 25) as $change) {
                 IDF_Commit::getOrAdd($change, $project);
             }
             $cache->set($key, true, (int) (Pluf::f('cache_timeout', 300) / 2));
         }
     }
 }