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); }
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); }
/** * 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)); } } }