getLog($path, "", "", true); if (is_string($history)) { echo $history; exit; } $youngest = $history->entries[0]->rev; if (empty($rev)) { $rev = $youngest; } $history = $svnrep->getLog($path, $rev); if (is_string($history)) { echo $history; exit; } if ($path{0} != "/") { $ppath = "/".$path; } else { $ppath = $path; } $prevrev = @$history->entries[1]->rev; $vars["repname"] = htmlentities($rep->getDisplayName(), ENT_QUOTES, 'UTF-8'); $vars["rev"] = $rev; $vars["path"] = htmlentities($ppath, ENT_QUOTES, 'UTF-8'); $vars["prevrev"] = $prevrev; $vars["rev1"] = $history->entries[0]->rev; $vars["rev2"] = $prevrev; createDirLinks($rep, $ppath, $rev); $listing = array(); $url = $config->getURL($rep, $path, "file"); if ($rev != $youngest) { $vars["goyoungestlink"] = '
'.$lang['GOYOUNGEST'].'
'; } else { $vars["goyoungestlink"] = ""; } $vars['indexurl'] = $config->getURL($rep, '', 'index'); $vars['repurl'] = $config->getURL($rep, '', 'dir'); $url = $config->getURL($rep, $path, "file"); $vars["filedetaillink"] = "
${lang["FILEDETAIL"]}
"; $url = $config->getURL($rep, $path, "log"); $vars["fileviewloglink"] = "
${lang["VIEWLOG"]}
"; $url = $config->getURL($rep, $path, "diff"); $vars["prevdifflink"] = "
${lang["DIFFPREV"]}
"; $url = $config->getURL($rep, $path, "blame"); $vars["blamelink"] = "
${lang["BLAME"]}
"; if ($prevrev) { $url = $config->getURL($rep, $path, "diff"); if (!$all) { $vars["showalllink"] = '
'.$lang['SHOWENTIREFILE'].'
'; $vars["showcompactlink"] = ''; } else { $vars["showcompactlink"] = '
'.$lang['SHOWCOMPACT'].'
'; $vars["showalllink"] = ''; } if (!$ignoreWhitespace) { $vars['ignorewhitespacelink'] = '
'.$lang['IGNOREWHITESPACE'].'
'; $vars['regardwhitespacelink'] = ''; } else { $vars['regardwhitespacelink'] = '
'.$lang['REGARDWHITESPACE'].'
'; $vars['ignorewhitespacelink'] = ''; } // Get the contents of the two files $newtname = tempnam("temp", ""); $highlightedNew = $svnrep->getFileContents($history->entries[0]->path, $newtname, $history->entries[0]->rev, "", true); $oldtname = tempnam("temp", ""); $highlightedOld = $svnrep->getFileContents($history->entries[1]->path, $oldtname, $history->entries[1]->rev, "", true); $ent = (!$highlightedNew && !$highlightedOld); $listing = do_diff($all, $ignoreWhitespace, $rep, $ent, $newtname, $oldtname); // Remove our temporary files @unlink($oldtname); @unlink($newtname); } else { $vars["noprev"] = 1; $url = $config->getURL($rep, $path, "file"); $vars["filedetaillink"] = "
${lang["SHOWENTIREFILE"]}.
"; } $vars["version"] = $version; if (!$rep->hasReadAccess($path, false)) { $vars["noaccess"] = true; } parseTemplate($rep->getTemplatePath()."header.tmpl", $vars, $listing); parseTemplate($rep->getTemplatePath()."diff.tmpl", $vars, $listing); parseTemplate($rep->getTemplatePath()."footer.tmpl", $vars, $listing); getLog($path, "", "", true); $youngest = $history->entries[0]->rev; if (empty($rev)) { $rev = $youngest; } $history = $svnrep->getLog($path, $rev); if ($path{0} != "/") { $ppath = "/".$path; } else { $ppath = $path; } $prevrev = @$history->entries[1]->rev; $vars["repname"] = htmlentities($rep->getDisplayName(), ENT_QUOTES, 'UTF-8'); $vars["rev"] = $rev; $vars["path"] = htmlentities($ppath, ENT_QUOTES, 'UTF-8'); $vars["prevrev"] = $prevrev; $vars["rev1"] = $history->entries[0]->rev; $vars["rev2"] = $prevrev; createDirLinks($rep, $ppath, $rev); $listing = array(); $url = $config->getURL($rep, $path, "file"); if ($rev != $youngest) { $vars["goyoungestlink"] = '
'.$lang['GOYOUNGEST'].'
'; } else { $vars["goyoungestlink"] = ""; } $vars['indexurl'] = $config->getURL($rep, '', 'index'); $vars['repurl'] = $config->getURL($rep, '', 'dir'); $url = $config->getURL($rep, $path, "file"); $vars["filedetaillink"] = "
${lang["FILEDETAIL"]}
"; $url = $config->getURL($rep, $path, "log"); $vars["fileviewloglink"] = "
${lang["VIEWLOG"]}
"; $url = $config->getURL($rep, $path, "diff"); $vars["prevdifflink"] = "
${lang["DIFFPREV"]}
"; $url = $config->getURL($rep, $path, "blame"); $vars["blamelink"] = "
${lang["BLAME"]}
"; if ($prevrev) { $url = $config->getURL($rep, $path, "diff"); if (!$all) { $vars["showalllink"] = "
${lang["SHOWENTIREFILE"]}
"; $vars["showcompactlink"] = ""; } else { $vars["showcompactlink"] = "
${lang["SHOWCOMPACT"]}
"; $vars["showalllink"] = ""; } // Get the contents of the two files $newtname = tempnam("temp", ""); $svnrep->getFileContents($history->entries[0]->path, $newtname, $history->entries[0]->rev, "", true); $oldtname = tempnam("temp", ""); $svnrep->getFileContents($history->entries[1]->path, $oldtname, $history->entries[1]->rev, "", true); $ent = true; $extension = strrchr(basename($path), "."); if (($extension && isset($extEnscript[$extension]) && ('php' == $extEnscript[$extension])) || ($config->useEnscript || $config->useGeshi)) { $ent = false; } if ($all) { // Setting the context to 0 makes diff generate the wrong line numbers! $context = 1; } // Open a pipe to the diff command with $context lines of context $cmd = quoteCommand($config->diff." -w -U $context \"$oldtname\" \"$newtname\""); if ($all) { $ofile = fopen($oldtname, "r"); $nfile = fopen($newtname, "r"); } $descriptorspec = array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w')); $resource = proc_open($cmd, $descriptorspec, $pipes); $error = ""; if (is_resource($resource)) { // We don't need to write fclose($pipes[0]); $diff = $pipes[1]; // Ignore the 3 header lines $line = fgets($diff); $line = fgets($diff); // Get the first real line $line = fgets($diff); $index = 0; $listing = array(); $curoline = 1; $curnline = 1; while (!feof($diff)) { // Get the first line of this range sscanf($line, "@@ -%d", $oline); $line = substr($line, strpos($line, "+")); sscanf($line, "+%d", $nline); if ($all) { while ($curoline < $oline || $curnline < $nline) { $listing[$index]["rev1diffclass"] = "diff"; $listing[$index]["rev2diffclass"] = "diff"; if ($curoline < $oline) { $nl = fgets($ofile); $line = rtrim($nl); if ($ent) $line = replaceEntities($line, $rep); $listing[$index]["rev1line"] = hardspace($line); $curoline++; } else { $listing[$index]["rev1line"] = " "; } if ($curnline < $nline) { $nl = fgets($nfile); $line = rtrim($nl); if ($ent) $line = replaceEntities($line, $rep); $listing[$index]["rev2line"] = hardspace($line); $curnline++; } else { $listing[$index]["rev2line"] = " "; } $listing[$index]["rev1lineno"] = 0; $listing[$index]["rev2lineno"] = 0; $index++; } } else { // Output the line numbers $listing[$index]["rev1lineno"] = $oline; $listing[$index]["rev2lineno"] = $nline; $index++; } $fin = false; while (!feof($diff) && !$fin) { $line = fgets($diff); if ($line === false || strncmp($line, "@@", 2) == 0) { $fin = true; } else { $listing[$index]["rev1lineno"] = 0; $listing[$index]["rev2lineno"] = 0; $mod = $line{0}; $line = rtrim(substr($line, 1)); if ($ent) $line = replaceEntities($line, $rep); if (strip_tags($line) == '') $line = ' '; $listing[$index]["rev1line"] = hardspace($line); $text = hardspace($line); switch ($mod) { case "-": $listing[$index]["rev1diffclass"] = "diffdeleted"; $listing[$index]["rev2diffclass"] = "diff"; $listing[$index]["rev1line"] = $text; $listing[$index]["rev2line"] = " "; if ($all) { fgets($ofile); $curoline++; } break; case "+": // Try to mark "changed" line sensibly if (!empty($listing[$index-1]) && empty($listing[$index-1]["rev1lineno"]) && @$listing[$index-1]["rev1diffclass"] == "diffdeleted" && @$listing[$index-1]["rev2diffclass"] == "diff") { $i = $index - 1; while (!empty($listing[$i-1]) && empty($listing[$i-1]["rev1lineno"]) && $listing[$i-1]["rev1diffclass"] == "diffdeleted" && $listing[$i-1]["rev2diffclass"] == "diff") { $i--; } $listing[$i]["rev1diffclass"] = "diffchanged"; $listing[$i]["rev2diffclass"] = "diffchanged"; $listing[$i]["rev2line"] = $text; if ($all) { fgets($nfile); $curnline++; } // Don't increment the current index count $index--; } else { $listing[$index]["rev1diffclass"] = "diff"; $listing[$index]["rev2diffclass"] = "diffadded"; $listing[$index]["rev1line"] = " "; $listing[$index]["rev2line"] = $text; if ($all) { fgets($nfile); $curnline++; } } break; default: $listing[$index]["rev1diffclass"] = "diff"; $listing[$index]["rev2diffclass"] = "diff"; $listing[$index]["rev1line"] = $text; $listing[$index]["rev2line"] = $text; if ($all) { fgets($ofile); fgets($nfile); $curoline++; $curnline++; } break; } } if (!$fin) { $index++; } } } // Output the rest of the files if ($all) { while (!feof($ofile) || !feof($nfile)) { $listing[$index]["rev1diffclass"] = "diff"; $listing[$index]["rev2diffclass"] = "diff"; $line = rtrim(fgets($ofile)); if ($ent) $line = replaceEntities($line, $rep); if (!feof($ofile)) { $listing[$index]["rev1line"] = hardspace($line); } else { $listing[$index]["rev1line"] = " "; } $line = rtrim(fgets($nfile)); if ($ent) $line = replaceEntities(rtrim(fgets($nfile)), $rep); if (!feof($nfile)) { $listing[$index]["rev2line"] = hardspace($line); } else { $listing[$index]["rev2line"] = " "; } $listing[$index]["rev1lineno"] = 0; $listing[$index]["rev2lineno"] = 0; $index++; } } fclose($pipes[1]); while (!feof($pipes[2])) { $error .= fgets($pipes[2]); } $error = toOutputEncoding(trim($error)); if (!empty($error)) $error = "
".$lang['BADCMD'].":
".$cmd."
".nl2br($error)."
"; fclose($pipes[2]); proc_close($resource); } else { $error = "
".$lang['BADCMD'].":
".$cmd."
"; } if (!empty($error)) { echo $error; if (is_resource($resource)) { fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); proc_close($resource); } exit; } if ($all) { fclose($ofile); fclose($nfile); } // Remove our temporary files @unlink($oldtname); @unlink($newtname); } else { $vars["noprev"] = 1; $url = $config->getURL($rep, $path, "file"); $vars["filedetaillink"] = "
${lang["SHOWENTIREFILE"]}.
"; } $vars["version"] = $version; if (!$rep->hasReadAccess($path, false)) { $vars["noaccess"] = true; } parseTemplate($rep->getTemplatePath()."header.tmpl", $vars, $listing); parseTemplate($rep->getTemplatePath()."diff.tmpl", $vars, $listing); parseTemplate($rep->getTemplatePath()."footer.tmpl", $vars, $listing);
WebSVN - websvn - Diff - Rev 3 and 1 - /diff.php
Català-Valencià - Catalan
Česky - Cesky
Dansk - Dansk
Dutch - Dutch
English - English
Finnish - Finnish
Français - Francais
Deutsch - German
עברית - Hebrew
Magyar - Hungarian
Bahasa Indonesia - Indonesian
Italiano - Italian
日本語 - Japanese
한국어 - Korean
Norsk - Norwegian
Polski - Polish
Português - Portuguese
Português - Brazilian Portuguese
Русский - Russian
中文 - Simplified Chinese
Slovenčina - Slovak
Slovenčina - Slovenian
Español - Spanish
Svenska - Swedish
中文 - Traditional Chinese
Türkçe - Turkish
Oëzbekcha - Uzbek
websvn
Subversion Repositories:
banderdyn
centos.prosek.czf
crusader
czf4bfu
czf4bfu.prosek.czf
czfcentos
czfgmap
discover
fedora.prosek.czf
freenet-router
ftth
getonlineclouds
hotsanic
internet.prosek.czf
is
mapstats
meteolinger
netmap
qos
sedlo
sedlo.prosek.czf
switches
vbtobb
vlubnt
weathermap
weatherstats
websvn
wifidashboard
wifimon
www.prosek.czf
xenstats
[
/
] [
diff.php
] - Diff between revs
1
and
3
Show entire file
Ignore whitespace
Rev 1
Rev 3
Powered by
WebSVN
2.2.1