![]() ![]() |
websvn |
Subversion Repositories: |
Compare with Previous - Blame - Download
<?php// WebSVN - Subversion repository viewing via the web using PHP// Copyright (C) 2004-2006 Tim Armes//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//// --//// revision.php//// Show the details for a given revisionrequire_once('include/setup.php');require_once('include/svnlook.php');require_once('include/utils.php');require_once('include/template.php');require_once('include/bugtraq.php');// Make sure that we have a repositoryif (!isset($rep)) {echo $lang['NOREP'];exit;}$svnrep = new SVNRepository($rep);// Revision info to pass along chain$passrev = $rev;// If there's no revision info, go to the lastest revision for this path$history = $svnrep->getLog($path, '', '', false);if (!empty($history->entries[0])) {$youngest = $history->entries[0]->rev;} else {$youngest = -1;}// Unless otherwise specified, we get the log details of the latest changeif (empty($rev)) {$logrev = $youngest;} else {$logrev = $rev;}if ($logrev != $youngest) {$logEntry = $svnrep->getLog($path, $logrev, $logrev, false);$logEntry = $logEntry->entries[0];} else {$logEntry = isset($history->entries[0]) ? $history->entries[0]: false;}$headlog = $svnrep->getLog('/', '', '', true, 1);$headrev = isset($headlog->entries[0]) ? $headlog->entries[0]->rev: 0;// If we're not looking at a specific revision, get the HEAD revision number// (the revision of the rest of the tree display)if (empty($rev)) {$rev = $headrev;}if ($path == '' || $path{0} != '/') {$ppath = '/'.$path;} else {$ppath = $path;}$vars['repname'] = $rep->getDisplayName();if ($passrev != 0 && $passrev != $headrev && $youngest != -1) {$vars['goyoungestlink'] = '<a href="'.$config->getURL($rep, $path, 'revision').'opt=dir">'.$lang['GOYOUNGEST'].'</a>';} else {$vars['goyoungestlink'] = '';}$vars['listingurl'] = $config->getURL($rep, $path, 'dir').'rev='.$passrev;$bugtraq = new Bugtraq($rep, $svnrep, $ppath);$vars['action'] = '';$vars['rev'] = $rev;$vars['path'] = htmlentities($ppath, ENT_QUOTES, 'UTF-8');$vars['lastchangedrev'] = $logrev;$vars['date'] = $logEntry ? $logEntry->date: '';$vars['author'] = $logEntry ? $logEntry->author: '';$vars['log'] = $logEntry ? nl2br($bugtraq->replaceIDs(create_anchors($logEntry->msg))): '';$changes = $logEntry->mods;if (!is_array($changes)) {$changes = array();}usort($changes, 'SVNLogEntry_compare');$row = 0;$listing = array();foreach ($changes as $file) {$listing[] = array('file' => $file->path,'added' => $file->action == 'A','modified' => $file->action == 'M','deleted' => $file->action == 'D','detailurl' => $config->getURL($rep, $file->path, 'file').'rev='.$passrev,'logurl' => $config->getURL($rep, $file->path, 'log').'rev='.$passrev.'&isdir=0','diffurl' => $config->getURL($rep, $file->path, 'diff').'rev='.$passrev,'blameurl' => $config->getURL($rep, $file->path, 'blame').'rev='.$passrev,'rowparity' => $row,);$row = 1 - $row;}createDirLinks($rep, $ppath, $passrev);$logurl = $config->getURL($rep, $path, 'log');$vars['logurl'] = $logurl.'rev='.$passrev.'&isdir=1';$vars['indexurl'] = $config->getURL($rep, '', 'index');$vars['repurl'] = $config->getURL($rep, '', 'dir');if ($rev != $headrev) {$history = $svnrep->getLog($path, $rev, '', false);}if (isset($history->entries[1]->rev)) {$compurl = $config->getURL($rep, '/', 'comp');$vars['curdircomplink'] = '<a href="'.$compurl.'compare[]='.urlencode($history->entries[1]->path).'@'.$history->entries[1]->rev. '&compare[]='.urlencode($history->entries[0]->path).'@'.$history->entries[0]->rev. '">'.$lang['DIFFPREV'].'</a>';$vars['compareurl'] = $compurl.'compare[]='.urlencode($history->entries[1]->path).'@'.$history->entries[1]->rev. '&compare[]='.urlencode($history->entries[0]->path).'@'.$history->entries[0]->rev;} else {$vars['curdircomplink'] = '';$vars['compareurl'] = '';}if ($rep->getHideRss()) {$rssurl = $config->getURL($rep, $path, 'rss');// $vars["curdirrsslink"] = "<a href=\"${rssurl}rev=$passrev&isdir=1\">${lang["RSSFEED"]}</a>";// $vars["curdirrsshref"] = "${rssurl}rev=$passrev&isdir=1";// $vars["curdirrssanchor"] = "<a href=\"${rssurl}rev=$passrev&isdir=1\">";$vars['rssurl'] = $rssurl.'isdir=1';}$vars['version'] = $version;$vars['noaccess'] = !$rep->hasReadAccess($path, true);$vars['restricted'] = !$rep->hasReadAccess($path, false);parseTemplate($rep->getTemplatePath()."header.tmpl", $vars, $listing);parseTemplate($rep->getTemplatePath()."revision.tmpl", $vars, $listing);parseTemplate($rep->getTemplatePath()."footer.tmpl", $vars, $listing);