add new files
authorStricted <info@nexus-irc.de>
Fri, 12 Apr 2013 10:44:27 +0000 (12:44 +0200)
committerStricted <info@nexus-irc.de>
Fri, 12 Apr 2013 10:58:43 +0000 (12:58 +0200)
git-favicon.png [new file with mode: 0644]
git-logo.png [new file with mode: 0644]
git_download.php [deleted file]
git_version.php [deleted file]
gitweb.css
index.cgi
patch/gitweb.cgi.diff [deleted file]

diff --git a/git-favicon.png b/git-favicon.png
new file mode 100644 (file)
index 0000000..4fa44bb
Binary files /dev/null and b/git-favicon.png differ
diff --git a/git-logo.png b/git-logo.png
new file mode 100644 (file)
index 0000000..fdaf7b7
Binary files /dev/null and b/git-logo.png differ
diff --git a/git_download.php b/git_download.php
deleted file mode 100644 (file)
index fc72986..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-$args = explode(";", $_SERVER["QUERY_STRING"]);
-foreach($args as $arg) {
-    $arg = explode("=", $arg, 2);
-    $_GET[$arg[0]] = $arg[1];
-}
-
-function scandir_replace($folder,$arg){
-       $out = array();
-       if($content = opendir($folder)){
-               while(false !== ($file = readdir($content))){
-                       if(is_dir("$folder/$file") && $file != "." && $file != ".." && $file != ".git"){
-                               scandir_replace("$folder/$file",$arg);
-                       } elseif($file != "." && $file != ".." && $file != ".git"){
-                               $out[] = "$folder/$file";      
-                       }
-               }
-               closedir($content);
-       }
-       foreach($out as $id => $v) {
-               chmod($v,0777);
-               $maincode=file_get_contents($v);
-               $maincode = str_replace('$__GIT__', '"'.$arg.'"', $maincode); // replace $__GIT__ with the git version
-               $fp = fopen($v, 'w');
-               fwrite($fp, $maincode);
-               fclose($fp);
-       }
-}
-function gen_id($len = 6)
-{
-    $r = '';
-    for($i=0; $i<$len; $i++) {
-        $r .= chr(rand(0, 25) + ord('a'));
-       }
-    return $r;
-}
-if(isset($_GET['p'])){
-       if(file_exists("/home/git/".$_GET['p'])){
-               $hash = shell_exec("git --git-dir=/home/git/".$_GET["p"]." rev-list -n 1 --pretty='format:%h' --header master | grep '^[0-9a-f]*$'");
-               $con= shell_exec('git --git-dir=/home/git/'.$_GET["p"].' rev-list --oneline --header master | wc -l | sed "s/[ \t]//g"');
-               if(!$hash){
-                       echo "No Download available";
-               }else{
-                       $name=substr($_GET["p"],0,strlen($_GET["p"])-4);  
-                       echo "<a href='http://git.nexus-irc.de/git_download.php?build=".$_GET["p"]."'>".$name."-".substr($hash, 0, -1)." (tar.gz)</a>";
-               }
-       }else{
-               echo "unknown project";
-       }
-}elseif(isset($_GET['build'])){
-       
-       if(file_exists("/home/git/".$_GET['build'])){
-               $name=substr($_GET['build'],0,strlen($_GET['build'])-4);
-               if(isset($_GET['h'])){
-                       if(strtolower($_GET['h']) == "head") {
-                               $hash = substr(shell_exec("git --git-dir=/home/git/".$_GET['build']." rev-list -n 1 --pretty='format:%h' --header master | grep '^[0-9a-f]*$'"), 0, -1);
-                       }else{
-                               $hash = substr($_GET['h'], 0, 7);
-                       }
-               }else{
-                       $hash = substr(shell_exec("git --git-dir=/home/git/".$_GET['build']." rev-list -n 1 --pretty='format:%h' --header master | grep '^[0-9a-f]*$'"), 0, 7);
-               }
-               $id = sha1(gen_id());
-               $b = shell_exec("cd /usr/share/gitweb/dl/; git clone git://git.nexus-irc.de/".$_GET['build']);
-               $c = shell_exec("cd /usr/share/gitweb/dl/".$name."/; git reset ".$_GET['h']);
-               $con= shell_exec('git --git-dir=/home/git/'.$_GET['build'].' rev-list --oneline --header master | wc -l | sed "s/[ \t]//g"');
-               if($_GET['build'] != "gitweb.git") {
-                       scandir_replace("/usr/share/gitweb/dl/".$name,"git-".substr($con, 0, -1)."-".$hash);
-               }
-               $c = shell_exec("cd /usr/share/gitweb/dl; tar czfv ".$id." ".$name);
-               $d = shell_exec("rm -r /usr/share/gitweb/dl/".$name);
-               header("Content-Type: application/x-gzip");
-               header("Content-Disposition: attachment; filename=".$name."-".$hash.".tar.gz");
-               $file = readfile("/usr/share/gitweb/dl/".$id);
-               unlink("/usr/share/gitweb/dl/".$id);
-               echo $file;
-       }else{
-               echo "unknown project";
-       }
-}else{
-       echo "<table class='project_list'>";
-       echo "<tr><th>Project</th><th>Download</th></tr>";
-       $a = file_get_contents("http://git.nexus-irc.de/index.cgi?a=project_index2");
-       $b = explode("\n",$a);
-       foreach($b as $id => $v) {
-               if($v == ""){ }else{
-                       $hash = shell_exec("git --git-dir=/home/git/".$v." rev-list -n 1 --pretty='format:%h' --header master | grep '^[0-9a-f]*$'");
-                       $con= shell_exec('git --git-dir=/home/git/'.$v.' rev-list --oneline --header master | wc -l | sed "s/[ \t]//g"');
-                       if(!$hash){
-                               echo "<tr><td>".$v."</td><td>No Download available</td></tr>";
-                       }else{
-                               $name=substr($v,0,strlen($v)-4);
-                               echo "<tr><td>".$v."</td><td><a href='http://git.nexus-irc.de/git_download.php?build=".$v."'>".$name."-".substr($hash, 0, -1)." (tar.gz)</a></td></tr>";
-                       }
-               }
-       }
-       echo "</table>";
-}
-?>
\ No newline at end of file
diff --git a/git_version.php b/git_version.php
deleted file mode 100644 (file)
index f304870..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-if($_GET["git"]){
-       $hash = shell_exec("git --git-dir=/home/git/".$_GET["git"]." rev-list -n 1 --pretty='format:%h' --header master | grep '^[0-9a-f]*$'");
-       $con= shell_exec('git --git-dir=/home/git/'.$_GET["git"].' rev-list --oneline --header master | wc -l | sed "s/[ \t]//g"');
-       if(!$hash){
-               echo "git-0-0";
-       }else{
-               echo "git-".substr($con, 0, -1)."-".substr($hash, 0, -1);
-       }
-}else{
-       echo "404 - No such project";
-}
-?>
index 417e10fcd062ea63b463a7596204d7fdbb4e64df..f8c24f0a33145b830b0f776b3d3332b7b304856b 100644 (file)
-body {
-       font-family: sans-serif;
-       font-size: small;
-       border: solid #d9d8d1;
-       border-width: 1px;
-       margin: 10px;
-       background-color: #ffffff;
-       color: #000000;
-}
+/* Reset
+------------------------------------------------------------------------- */
 
-a {
-       color: #0000cc;
-}
+/* Based on http://meyerweb.com/eric/tools/css/reset/ */
+/* v1.0 | 20080212 */
 
-a:hover, a:visited, a:active {
-       color: #880000;
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
+blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
+font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b,
+u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
+caption, tbody, tfoot, thead, tr, th, td {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  outline: 0;
+  font-size: 100%;
+  vertical-align: baseline;
+  background: transparent;
 }
 
-span.cntrl {
-       border: dashed #aaaaaa;
-       border-width: 1px;
-       padding: 0px 2px 0px 2px;
-       margin:  0px 2px 0px 2px;
-}
+ol, ul { list-style: none; }
 
-img.logo {
-       float: right;
-       border-width: 0px;
-}
+blockquote, q { quotes: none; }
 
-img.avatar {
-       vertical-align: middle;
+blockquote:before, blockquote:after,
+q:before, q:after {
+  content: '';
+  content: none;
 }
 
-a.list img.avatar {
-       border-style: none;
-}
+:focus { outline: 0; }
 
-div.page_header {
-       height: 25px;
-       padding: 8px;
-       font-size: 150%;
-       font-weight: bold;
-       background-color: #d9d8d1;
-}
+ins { text-decoration: none; }
 
-div.page_header a:visited, a.header {
-       color: #0000cc;
-}
+del { text-decoration: line-through; }
 
-div.page_header a:hover {
-       color: #880000;
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
 }
 
-div.page_nav {
-       padding: 8px;
-}
+a { outline: none; }
 
-div.page_nav a:visited {
-       color: #0000cc;
-}
+/* General
+---------------------------------------------------------------------------- */
+@import url(../../../stylesheets/application.css);
+@import url(http://fonts.googleapis.com/css?family=Ubuntu+Condensed);
 
-div.page_path {
-       padding: 8px;
-       font-weight: bold;
-       border: solid #d9d8d1;
-       border-width: 0px 0px 1px;
-}
 
-div.page_footer {
-       height: 17px;
-       padding: 4px 8px;
-       background-color: #d9d8d1;
+body {
+  background-color:#E7EBF2; font-family:"Lucida Grande", verdana, arial, helvetica, sans-serif; 
+  font-size: 12px;
+  line-height: 1.5;
+  margin: 0;
+  background-color: #fff;
+  color: #000000;
 }
 
-div.page_footer_text {
-       float: left;
-       color: #555555;
-       font-style: italic;
-}
 
-div#generating_info {
-       margin: 4px;
-       font-size: smaller;
-       text-align: center;
-       color: #505050;
-}
 
-div.page_body {
-       padding: 8px;
-       font-family: monospace;
-}
 
-div.title, a.title {
-       display: block;
-       padding: 6px 8px;
-       font-weight: bold;
-       background-color: #edece6;
-       text-decoration: none;
-       color: #000000;
+a:link, a:visited {
+  color: #3B5998;
+  text-decoration: none;
 }
 
-div.readme {
-       padding: 8px;
+a:hover {
+  text-decoration: underline;
 }
 
-a.title:hover {
-       background-color: #d9d8d1;
+body > p,
+body > dl  {
+  width: 95%;
+  margin: 0 auto 15px auto;
+  border: 1px solid #D8D8D8;
+  padding: 5px;
 }
 
-div.title_text {
-       padding: 6px 0px;
-       border: solid #d9d8d1;
-       border-width: 0px 0px 1px;
-       font-family: monospace;
+td.list a[href*='a=tree'], td.list a[href*='a=blob'] {
+  padding-left: 20px;
+  display: block;
+  float: left;
+  height: 16px;
+  line-height: 16px;
 }
 
-div.log_body {
-       padding: 8px 8px 8px 150px;
+td.list a[href*='a=tree'] {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABq0lEQVQ4y8WTu4oUQRSGv+rtGVuxhwVFdFEEE2c3d0HYTEMTn8DEVxADQTDUF9DMwMxQMBMx8AEWzRQ3cBHd9TI91+2urjq/QbczY2IygSep4nD+79yqnCRWsYQVbWVACvDh5ZXdrLe15dwyT1TjT/sxFFeB6i+VA2B6+cb7kAI4Jf0LO087zjlQI8Y5Qvnj0sHug321XoC1bk+K9eHk6+s7wPMUgKAS88eqb4+Jfg2SHs7lZBvX2Nh+2EUCDGSAcMnJsx9f7NxfAGqXyDzRd5EJO/pMPT1gcviGTnYOVIN5pAAE8v7dLrKL8xnglFk4ws9Afko9HpH3b5Gd2mwb/lOBmgrSdYhJugDUCenxM6xv3p4HCsP8F0LxCsUhCkMURihOyM7fg0osASTFEpu9a4LjGIUCqwcoDiEUrX+E4hRUQb20RiokC1j9vckUhygU7X3QZh7NAVKYL7YBeMkRUfjVCotF2XGIwnghtrJpMywB5G0QZj9P1JNujuWJ1AHLQadRrACPkuZ0SSSWpeStWgDK6tHek5vbiOs48n++XQHurcf0rFng//6NvwG+iB9/4duaTgAAAABJRU5ErkJgggo=) center left no-repeat;
 }
 
-span.age {
-       position: relative;
-       float: left;
-       width: 142px;
-       font-style: italic;
+td.list a[href*='a=blob'] {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQoFQXBMW5TQRgGwNnHnoE0QbiCjoIooUmTU3AuS1BwIoTSUdJBigg3GCWOg9/++zHTop078wIAsPMrE4SL5/1aIyMjIyMjz/m0tbFECFdrPeaQQw75mz/5nZH7fN7aWILmauSYfznmmIfss8vIUx7zZWsTTXM5vpWvTk5Wq9VHQP/gtgOLa0Qpw940vAQdaG6thpOhlOkG0AEuAVGmEkAH+G4YSikxXQM6wDsAMRFAB/ihDNNUmN4DOsAbBAEAdICfpmmaAt4COoj2GgCASbIkZh1NAACznhQt2itnFgAAlF3u/gMDtJXPzQxoswAAAABJRU5ErkJgggo=) center left no-repeat;
 }
 
-span.signoff {
-       color: #888888;
+i {
+  font-style: normal;
 }
 
-div.log_link {
-       padding: 0px 8px;
-       font-size: 70%;
-       font-family: sans-serif;
-       font-style: normal;
-       position: relative;
-       float: left;
-       width: 136px;
+td, th {
+  padding: 5px;
 }
 
-div.list_head {
-       padding: 6px 8px 4px;
-       border: solid #d9d8d1;
-       border-width: 1px 0px 0px;
-       font-style: italic;
-}
+/* Page Header
+---------------------------------------------------------------------------- */
 
-.author_date, .author {
-       font-style: italic;
+.page_header {
+  height: 50px;
+  line-height: 50px;
+  position: relative;
+  padding: 0 27px;
+  margin-bottom: 20px;
+  font-size: 20px;
+  font-family: Ubuntu Condensed;
+  color:White;
+  background: #3B5998;
+  border-bottom: 1px solid #dfdfdf;
 }
 
-div.author_date {
-       padding: 8px;
-       border: solid #d9d8d1;
-       border-width: 0px 0px 1px 0px;
+.page_header a:link, .page_header a:visited {
+  color: White;
+  text-decoration: none;
+  padding: 3px;
+  font-weight: bold;
 }
 
-a.list {
-       text-decoration: none;
-       color: #000000;
+.page_header a:hover {
+  font-weight: bold;
+  padding: 3px;
+  text-decoration: underline;
 }
 
-a.subject, a.name {
-       font-weight: bold;
+.page_header a:first-child {
+  background: transparent;
 }
 
-table.tags a.subject {
-       font-weight: normal;
+.page_header img.logo {
+  width:79px;
+  height:20px;
+  padding-bottom:2px;
+  padding-right:5px;
+  margin-right:5px;
+  vertical-align:middle
 }
 
-a.list:hover {
-       text-decoration: underline;
-       color: #880000;
-}
+/* Page Footer
+---------------------------------------------------------------------------- */
 
-a.text {
-       text-decoration: none;
-       color: #0000cc;
+.page_footer {
+  height: 80px;
+  line-height: 80px;
+  padding: 0 30px;
+  margin-top: 15px;
+  background: #f1f1f1;
+  border-top: 2px solid #ddd;
 }
 
-a.text:visited {
-       text-decoration: none;
-       color: #880000;
+.page_footer_text {
+  color: #666;
+  display: inline;
+  float: left;
 }
 
-a.text:hover {
-       text-decoration: underline;
-       color: #880000;
+a.rss_logo {
+  float: right;
+  padding: 3px 1px;
+  width: 35px;
+  line-height: 10px;
+  border: 1px solid;
+  border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
+  border-radius:10px;
+  color: #ffffff;
+  background-color: #ff6600;
+  font-weight: bold;
+  font-family: sans-serif;
+  font-size: 80%;
+  text-align: center;
+  text-decoration: none;
+  margin-top: 30px;
+  margin-left: 5px;
 }
 
-table {
-       padding: 8px 4px;
-       border-spacing: 0;
+a.rss_logo:hover {
+  background-color: #ee5500;
+}
+
+/* Elements
+---------------------------------------------------------------------------- */
+
+.project_list,
+.shortlog,
+.tree,
+.commit_search,
+.history {
+  width: 95%;
+  margin: 0 auto 15px auto;
+  border: 1px solid #d8d8d8;
+  -moz-box-shadow: 0 0 3px rgba(0,0,0,0.2);
+  -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.2);
+  box-shadow: 0 0 3px rgba(0,0,0,0.2);
+}
+
+.project_list th,
+.shortlog th,
+.tree th,
+.commit_search th {
+  color: #afafaf;
+  font-weight: normal;
 }
-
-table.shortlog td {
-    padding: 0px 8px;
-    vertical-align: middle;
-    height:20px;
+.project_list th {
+background-color: #F0F0F0;
+padding: 10px 5px;
+border-bottom: 1px solid #D5D7DB;
+color: #333;
 }
+.project_list th a { color:#333; }
 
-img.graph {
-    padding: 0px;
-    margin: 0px;
-    display: block;
+.project_list tr,
+.shortlog tr,
+.tree tr,
+.commit_search tr {
+  background: #eaeaea;
+  height: 2.5em;
+  text-align: left;
+  color: #545454;
+}
+
+.project_list tr {
+  background:White; 
+  border:1px solid #f9f9f;
 }
 
-table.diff_tree {
-       font-family: monospace;
-}
 
-table.combined.diff_tree th {
-       text-align: center;
+/*.project_list tr.dark, .project_list tr.light,*/
+.shortlog tr.dark, .shortlog tr.light,
+.tree tr.dark, .tree tr.light,
+.commit_search tr.dark, .commit_search tr.light,
+.history tr.dark, .history tr.light,
+.heads tr.dark, .heads tr.light {
+  background: #F9F9F9; /* old browsers */
+  background: White;
+/*  background: -moz-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%); /* firefox */
+/*  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F9F9F9), color-stop(100%,#EFEFEF)); /* webkit */
+/*  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F9F9F9', endColorstr='#EFEFEF',GradientType=0 ); /* ie */
+/*  background: -o-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%); */
+  height: 2.5em;
+  border-bottom: 1px solid #e1e1e1;
 }
 
-table.combined.diff_tree td {
-       padding-right: 24px;
-}
+.project_list tr:hover,
+.shortlog tr:hover,
+.tree tr:hover,
+.commit_search tr:hover {
+  background:#efefef;
+} 
 
-table.combined.diff_tree th.link,
-table.combined.diff_tree td.link {
-       padding: 0px 2px;
+th .header {
+  background: transparent;
+  border: 0;
+  padding: 0;
 }
 
-table.combined.diff_tree td.nochange a {
-       color: #6666ff;
+.tree {
+  width: 100%;
+  margin: 0;
+}
+
+.projsearch {
+  position: absolute;
+  right: 4%;
+  top: 15px;
+  color:White;
+  font-family:Arial;
+  font-size:11px;
+}
+
+.projsearch input[type="text"],
+.search input[type="text"] {
+  border-radius:5px;
+border:1px solid #D8D8D8;
+padding:3px;
 }
-
-table.combined.diff_tree td.nochange a:hover,
-table.combined.diff_tree td.nochange a:visited {
-       color: #d06666;
+.projsearch input[type="text"] {
+border: 1px solid White;
 }
 
-table.blame {
-       border-collapse: collapse;
+.commit_search {
+  background: #eaeaea;
 }
 
-table.blame td {
-       padding: 0px 5px;
-       font-size: 100%;
-       vertical-align: top;
+.page_nav,
+.list_head,
+.page_path,
+.search {
+  width: 94%;
+  background: #eaeaea;
+  color: #545454;
+  border: 1px solid #d8d8d8;
+  padding: 5px;
+  margin: 0 auto 15px auto;
 }
 
-th {
-       padding: 2px 5px;
-       font-size: 100%;
-       text-align: left;
+.history {
+  background: #eaeaea;
 }
 
-/* do not change row style on hover for 'blame' view */
-tr.light,
-table.blame .light:hover {
-       background-color: #ffffff;
+.title {
+  width: 95%;
+  padding: 5px;
+  margin: 0 auto 15px auto;
 }
 
-tr.dark,
-table.blame .dark:hover {
-       background-color: #f6f6f0;
+.projects_list,
+.tags {
+  width: 95%;
+  background: #f0f0f0;
+  color: #545454;
+  border: 1px solid #d8d8d8;
+  padding: 5px;
+  margin: 0 auto 15px auto;
 }
 
-/* currently both use the same, but it can change */
-tr.light:hover,
-tr.dark:hover {
-       background-color: #edece6;
+.heads {
+  width: 95%;
+  color: #545454;
+  border: 1px solid #d8d8d8;
+  padding: 5px;
+  margin: 0 auto 15px auto;
 }
 
-/* boundary commits in 'blame' view */
-/* and commits without "previous" */
-tr.boundary td.sha1,
-tr.no-previous td.linenr {
-       font-weight: bold;
+.header {
+  width: 94%;
+  margin: 0 auto 15px auto;
+  background: #eaf2f5;
+  border: 1px solid #bedce7;
+  padding: 5px;
 }
 
-/* for 'blame_incremental', during processing */
-tr.color1 { background-color: #f6fff6; }
-tr.color2 { background-color: #f6f6ff; }
-tr.color3 { background-color: #fff6f6; }
-
-td {
-       padding: 2px 5px;
-       font-size: 100%;
-       vertical-align: top;
+.header .age {
+  float: left;
+  color: #000;
+  font-weight: bold;
+  width: 10em;
 }
 
-td.link, td.selflink {
-       padding: 2px 5px;
-       font-family: sans-serif;
-       font-size: 70%;
+.title_text {
+  width: 94%;
+  background: #eaf2f5;
+  border: 1px solid #bedce7;
+  padding: 5px;
+  margin: 0 auto 0 auto;
 }
 
-td.selflink {
-       padding-right: 0px;
+.log_body {
+  width: 94%;
+  background: #eaf2f5;
+  border: 1px solid #bedce7;
+  border-top: 0;
+  padding: 5px;
+  margin: 0 auto 15px auto;
 }
 
-td.sha1 {
-       font-family: monospace;
+.page_body {
+  line-height: 1.4em;
+  width: 94%;
+  background: #f8f8f8;
+  border: 1px solid #d8d8d8;
+  padding: 5px;
+  margin: 15px auto 15px auto;
 }
 
-.error {
-       color: red;
-       background-color: yellow;
+.diff_tree {
+  width: 95%;
+  background: #f0f0f0;
+  border: 1px solid #d8d8d8;
+  padding: 5px;
+  margin: 0 auto 15px auto;
 }
 
-td.current_head {
-       text-decoration: underline;
+.page_body > .list_head {
+  width: 98.5%;
 }
 
-table.diff_tree span.file_status.new {
-       color: #008000;
+.page_body > .diff_tree {
+  width: 99.5%;
 }
 
-table.diff_tree span.file_status.deleted {
-       color: #c00000;
+.patch > .header {
+  width: 98.5%;
 }
 
-table.diff_tree span.file_status.moved,
-table.diff_tree span.file_status.mode_chnge {
-       color: #777777;
-}
+/* Refs
+---------------------------------------------------------------------------- */
 
-table.diff_tree span.file_status.copied {
-  color: #70a070;
+span.refs span {
+  color: #000;
+  padding: 0px 4px;
+  font-size: 10px;
+  font-weight: normal;
+  border: 1px solid;
+  background-color: #ffaaff;
+  border-color: #ffccff #ff00ee #ff00ee #ffccff;
 }
 
-/* noage: "No commits" */
-table.project_list td.noage {
-       color: #808080;
-       font-style: italic;
-}
-table.shortlog td.noage, table.history td.noage {
-       color: #808080;
-       font-style: italic;
+span.refs span.ref {
+  background-color: #aaaaff;
+  border-color: #ccccff #0033cc #0033cc #ccccff;
 }
 
-/* age2: 60*60*24*2 <= age */
-table.project_list td.age2, table.blame td.age2 {
-       font-style: italic;
-}
-table.shortlog td.age2, table.history td.age2 {
-       font-style: italic;
+span.refs span.tag {
+  background-color: #ffffaa;
+  border-color: #ffffcc #dccd00 #dccd00 #ffffcc;
 }
 
-/* age1: 60*60*2 <= age < 60*60*24*2 */
-table.shortlog td.age1, table.project_list td.age1, table.history td.age1 {
-       color: #009900;
-       font-style: italic;
+span.refs span.head {
+  background-color: #aaffaa;
+  border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
 }
 
-table.blame td.age1 {
-       color: #009900;
-       background: transparent;
+span.refs a {
+  color: #000;
 }
 
-/* age0: age < 60*60*2 */
-table.project_list td.age0 {
-       color: #009900;
-       font-style: italic;
-       font-weight: bold;
-}
-table.shortlog td.age0, table.history td.age0 {
-       color: #009900;
-       font-style: italic;
-       font-weight: bold;
-}
+/* Diffs
+---------------------------------------------------------------------------- */
 
-table.blame td.age0 {
-       color: #009900;
-       background: transparent;
-       font-weight: bold;
+.patchset {
+  overflow-x: auto;
+  overflow-y: hidden;
 }
 
-td.pre, div.pre, div.diff {
-       font-family: monospace;
-       font-size: 12px;
-       white-space: pre;
+.chunk_header {
+  background: #eaf2f5;
+  color: #999;
 }
 
-td.mode {
-       font-family: monospace;
+.rem ,
+.from_file {
+  background: #FF5252;
 }
-
-/* progress of blame_interactive */
-div#progress_bar {
-       height: 2px;
-       margin-bottom: -2px;
-       background-color: #d8d9d0;
+.add ,
+.to_file{
+  background: #3FFF3F;
 }
-div#progress_info {
-       float: right;
-       text-align: right;
+div.diff.to_file a.path,
+div.diff.to_file {
+       color: #000000;
 }
 
-/* format of (optional) objects size in 'tree' view */
-td.size {
-       font-family: monospace;
-       text-align: right;
+div.diff.from_file a.path,
+div.diff.from_file {
+       color: #000000;
 }
-
-/* styling of diffs (patchsets): commitdiff and blobdiff views */
-div.diff.header,
 div.diff.extended_header {
        white-space: normal;
 }
-
-div.diff.header {
-       font-weight: bold;
-
-       background-color: #edece6;
-
-       margin-top: 4px;
-       padding: 4px 0px 2px 0px;
-       border: solid #d9d8d1;
-       border-width: 1px 0px 1px 0px;
-}
-
-div.diff.header a.path {
-       text-decoration: underline;
-}
-
 div.diff.extended_header,
 div.diff.extended_header a.path,
 div.diff.extended_header a.hash {
@@ -434,198 +469,93 @@ div.diff.extended_header {
        padding: 2px 0px 2px 0px;
 }
 
-div.diff a.list,
-div.diff a.path,
-div.diff a.hash {
-       text-decoration: none;
-}
+/* Age
+---------------------------------------------------------------------------- */
 
-div.diff a.list:hover,
-div.diff a.path:hover,
-div.diff a.hash:hover {
-       text-decoration: underline;
-}
-
-div.diff.to_file a.path,
-div.diff.to_file {
-       color: #007000;
-}
-
-div.diff.add {
-       color: #008800;
-}
-
-div.diff.from_file a.path,
-div.diff.from_file {
-       color: #aa0000;
-}
-
-div.diff.rem {
-       color: #cc0000;
-}
-
-div.diff.chunk_header a,
-div.diff.chunk_header {
-       color: #990099;
-}
-
-div.diff.chunk_header {
-       border: dotted #ffe0ff;
-       border-width: 1px 0px 0px 0px;
-       margin-top: 2px;
-}
-
-div.diff.chunk_header span.chunk_info {
-       background-color: #ffeeff;
-}
-
-div.diff.chunk_header span.section {
-       color: #aa22aa;
-}
-
-div.diff.incomplete {
-       color: #cccccc;
-}
-
-div.diff.nodifferences {
-       font-weight: bold;
-       color: #600000;
-}
-
-div.index_include {
-       border: solid #d9d8d1;
-       border-width: 0px 0px 1px;
-       padding: 12px 8px;
-}
-
-div.search {
-       font-size: 100%;
-       font-weight: normal;
-       margin: 4px 8px;
-       float: right;
-       top: 56px;
-       right: 12px
-}
-
-p.projsearch {
-       text-align: center;
-}
-
-td.linenr {
-       text-align: right;
-}
-
-a.linenr {
-       color: #999999;
-       text-decoration: none
+/* noage: "No commits" */
+.project_list td.noage {
+  color: #cdcdcd;
 }
 
-a.rss_logo {
-       float: right;
-       padding: 3px 0px;
-       width: 35px;
-       line-height: 10px;
-       border: 1px solid;
-       border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
-       color: #ffffff;
-       background-color: #ff6600;
-       font-weight: bold;
-       font-family: sans-serif;
-       font-size: 70%;
-       text-align: center;
-       text-decoration: none;
-}
-a.rss_logo2 {
-       float: right;
-       padding: 3px 0px;
-       width: 60px;
-       line-height: 10px;
-       border: 1px solid;
-       border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
-       color: #ffffff;
-       background-color: #ff6600;
-       font-weight: bold;
-       font-family: sans-serif;
-       font-size: 70%;
-       text-align: center;
-       text-decoration: none;
+/* age2: 60*60*24*2 <= age */
+.project_list td.age2, .blame td.age2 {
+  color: #545454;
 }
 
-a.rss_logo:hover {
-       background-color: #ee5500;
+/* age1: 60*60*2 <= age < 60*60*24*2 */
+.project_list td.age1 {
+  color: #009900;
 }
 
-a.rss_logo.generic {
-       background-color: #ff8800;
+/* age0: age < 60*60*2 */
+.project_list td.age0 {
+  color: #009900;
+  font-weight: bold;
 }
 
-a.rss_logo.generic:hover {
-       background-color: #ee7700;
-}
+/* File status
+---------------------------------------------------------------------------- */
 
-span.refs span {
-       padding: 0px 4px;
-       font-size: 70%;
-       font-weight: normal;
-       border: 1px solid;
-       background-color: #ffaaff;
-       border-color: #ffccff #ff00ee #ff00ee #ffccff;
+.diff_tree span.file_status.new {
+  color: #008000;
 }
 
-span.refs span a {
-       text-decoration: none;
-       color: inherit;
+table.diff_tree span.file_status.deleted {
+  color: #c00000;
 }
 
-span.refs span a:hover {
-       text-decoration: underline;
+table.diff_tree span.file_status.moved,
+table.diff_tree span.file_status.mode_chnge {
+  color: #545454;
 }
 
-span.refs span.indirect {
-       font-style: italic;
+table.diff_tree span.file_status.copied {
+  color: #70a070;
 }
 
-span.refs span.ref {
-       background-color: #aaaaff;
-       border-color: #ccccff #0033cc #0033cc #ccccff;
+span.cntrl {
+  border: dashed #aaaaaa;
+  border-width: 1px;
+  padding: 0px 2px 0px 2px;
+  margin:  0px 2px 0px 2px;
 }
-
-span.refs span.tag {
-       background-color: #ffffaa;
-       border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
+img.graph {
+    padding: 0px;
+    margin: 0px;
+    display: block;
 }
 
-span.refs span.head {
-       background-color: #aaffaa;
-       border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
+span.match {
+  background: #aaffaa;
+  color: #000;
 }
 
-span.atnight {
-       color: #cc0000;
+td.error {
+  color: red;
+  background: yellow;
 }
 
-span.match {
-       color: #e00000;
-}
+/* blob view */
 
-div.binary {
-       font-style: italic;
+td.pre, div.pre, div.diff {
+  white-space: pre;
 }
 
 /* Style definition generated by highlight 2.4.5, http://www.andre-simon.de/ */
 
 /* Highlighting theme definition: */
 
-.num    { color:#2928ff; }
+.num    { color:#6ecf36; }
 .esc    { color:#ff00ff; }
-.str    { color:#ff0000; }
+.str    { color:#ff00d3; background-color: #edc9ec }
 .dstr   { color:#818100; }
 .slc    { color:#838183; font-style:italic; }
 .com    { color:#838183; font-style:italic; }
 .dir    { color:#008200; }
 .sym    { color:#000000; }
 .line   { color:#555555; }
-.kwa    { color:#000000; font-weight:bold; }
-.kwb    { color:#830000; }
-.kwc    { color:#000000; font-weight:bold; }
-.kwd    { color:#010181; }
+.kwa    { color:#666666; font-weight:bold; }
+.kwb    { color:#6b3099; }
+.kwc    { color:#d4663d; }
+.kwd    { color:#2928ff; }
+
index 8d4993568ff9ee212efae669c40776dca53d79d4..480818d8b8ca2e9afaf55382a01710de60db4f3b 100644 (file)
--- a/index.cgi
+++ b/index.cgi
@@ -16,7 +16,6 @@ use Encode;
 use Fcntl ':mode';
 use File::Find qw();
 use File::Basename qw(basename);
-use LWP::Simple;
 binmode STDOUT, ':utf8';
 
 our $t0;
@@ -693,8 +692,6 @@ our %actions = (
        "opml" => \&git_opml,
        "project_list" => \&git_project_list,
        "project_index" => \&git_project_index,
-       "project_index2" => \&git_project_index2,
-       "download" => \&git_download,
 );
 
 # finally, we have the hash of allowed extra_options for the commands that
@@ -1023,7 +1020,7 @@ sub dispatch {
        if (!defined($actions{$action})) {
                die_error(400, "Unknown action");
        }
-       if ($action !~ m/^(?:opml|project_list|project_index2|project_index|download)$/ &&
+       if ($action !~ m/^(?:opml|project_list|project_index)$/ &&
            !$project) {
                die_error(400, "Project needed");
        }
@@ -2723,7 +2720,8 @@ sub git_get_last_activity {
             'refs/heads') or return;
        my $most_recent = <$fd>;
        close $fd or return;
-       if (defined $most_recent && $most_recent =~ / (\d+) [-+][01]\d\d\d$/) {
+       if (defined $most_recent &&
+           $most_recent =~ / (\d+) [-+][01]\d\d\d$/) {
                my $timestamp = $1;
                my $age = time - $timestamp;
                return ($age, age_string($age));
@@ -3344,7 +3342,7 @@ sub guess_file_syntax {
                'h' => 'c',
                map { $_ => 'cpp' } qw(cxx c++ cc),
                map { $_ => 'php' } qw(php3 php4),
-               map { $_ => 'pl'  } qw(perl pm cgi), # perhaps also 'cgi'
+               map { $_ => 'pl'  } qw(perl pm), # perhaps also 'cgi'
                'mak' => 'make',
                map { $_ => 'xml' } qw(xhtml html htm),
        );
@@ -3511,14 +3509,6 @@ EOF
                        print " / $action";
                }
                print "\n";
-       } else {
-               if (defined($action)) {
-                       if ($action eq 'project_list') {
-                       } else {
-                               print " $action";
-                       }
-               }
-               print "\n";
        }
        print "</div>\n";
 
@@ -3562,7 +3552,6 @@ EOF
 
 sub git_footer_html {
        my $feed_class = 'rss_logo';
-       my $feed_class2 = 'rss_logo2';
 
        print "<div class=\"page_footer\">\n";
        if (defined $project) {
@@ -3583,16 +3572,13 @@ sub git_footer_html {
                                      -title => "$href_params{'-title'} $format feed",
                                      -class => $feed_class}, $format)."\n";
                }
-               print $cgi->a({-href => href(project=>$project, action=>"download"),
-                                       -class => $feed_class2}, "Downloads") . "\n";
+
        } else {
-               print "<div class=\"page_footer_text\">Copyright &copy; 2012, <a href=\"http://nexus-irc.de\">Nexus-IRC.de</a></div>\n";
+               print "<div class=\"page_footer_text\">Copyright &copy; 2013, <a href=\"http://nexus-irc.de\">Nexus-IRC.de</a></div>\n";
                print $cgi->a({-href => href(project=>undef, action=>"opml"),
                              -class => $feed_class}, "OPML") . " ";
                print $cgi->a({-href => href(project=>undef, action=>"project_index"),
-                             -class => $feed_class}, "TXT") . " ";
-               print $cgi->a({-href => href(project=>undef, action=>"download"),
-                             -class => $feed_class2}, "Downloads") . "\n";
+                             -class => $feed_class}, "TXT") . "\n";
        }
        print "</div>\n"; # class="page_footer"
 
@@ -4665,6 +4651,7 @@ sub git_project_list_body {
                my $cloud = git_populate_project_tagcloud(\%ctags);
                print git_show_project_tagcloud($cloud, 64);
        }
+
        print "<table class=\"project_list\">\n";
        unless ($no_header) {
                print "<tr>\n";
@@ -4719,15 +4706,14 @@ sub git_project_list_body {
                      (defined $pr->{'age_string'} ? $pr->{'age_string'} : "No commits") . "</td>\n" .
                      "<td class=\"link\">" .
                      $cgi->a({-href => href(project=>$pr->{'path'}, action=>"summary")}, "summary")   . " | " .
-                     #$cgi->a({-href => href(project=>$pr->{'path'}, action=>"bugtrack")}, "bugtrack")   . " | " .
                      $cgi->a({-href => href(project=>$pr->{'path'}, action=>"shortlog")}, "shortlog") . " | " .
                      $cgi->a({-href => href(project=>$pr->{'path'}, action=>"log")}, "log") . " | " .
-                     $cgi->a({-href => href(project=>$pr->{'path'}, action=>"tree")}, "tree") . 
+                     $cgi->a({-href => href(project=>$pr->{'path'}, action=>"tree")}, "tree") .
                      ($pr->{'forks'} ? " | " . $cgi->a({-href => href(project=>$pr->{'path'}, action=>"forks")}, "forks") : '') .
                      "</td>\n" .
                      "</tr>\n";
        }
-       print "<tr><td>&nbsp;</td><td>&nbsp;</td><td>".$count." projects found</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
+       print "<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>".$count." projects found</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
        if (defined $extra) {
                print "<tr>\n";
                if ($check_forks) {
@@ -4788,7 +4774,9 @@ sub git_shortlog_body {
 
        print "<table class=\"shortlog\" cellspacing=\"0\" cellpadding=\"0\">\n";
        my $alternate = 1;
-       my $head = git_get_head_hash($project);
+       
+       my $graph_rand = int(rand(99999));
+       my $head = git_get_head_hash($project); 
        my $graph_hash;
        if (defined $allrefs && $allrefs == 1) {
                $graph_hash = "all";
@@ -4802,7 +4790,7 @@ sub git_shortlog_body {
        if (!defined $page) {
                $page = 0;
        }
-       my $graph_rand = int(rand(99999));
+
        print "<tr class=\"header\">\n";
        print "<td colspan=\"2\"><img class=\"graph\" src=\"git_graph.php?r=".$graph_rand.";p=".$project.";h=".$graph_hash.";from=".($from + (100 * $page)).";to=".($to + (100 * $page)).";c=header\" /></td>\n";
        print "<td valign=\"bottom\"><b>Author</b></td>\n";
@@ -4812,7 +4800,6 @@ sub git_shortlog_body {
        for (my $i = $from; $i <= $to; $i++) {
                my %co = %{$commitlist->[$i]};
                my $commit = $co{'id'};
-               
                my $ref = format_ref_marker($refs, $commit);
                if ($alternate) {
                        print "<tr class=\"dark\">\n";
@@ -4820,9 +4807,10 @@ sub git_shortlog_body {
                        print "<tr class=\"light\">\n";
                }
                $alternate ^= 1;
-               # git_summary() used print "<td><i>$co{'age_string'}</i></td>\n" .
+
                print "<td><img class=\"graph\" src=\"git_graph.php?r=".$graph_rand.";p=".$project.";h=".$graph_hash.";from=".($from + (100 * $page)).";to=".($to + (100 * $page)).";c=".$commit."\" /></td>";
-               print "<td class=\"". age_class($co{'age'}) . "\" title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
+               # git_summary() used print "<td><i>$co{'age_string'}</i></td>\n" .
+               print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
                      format_author_html('td', \%co, 10) . "<td>";
                print format_subject_html($co{'title'}, $co{'title_short'},
                                          href(action=>"commit", hash=>$commit), $ref);
@@ -4830,15 +4818,17 @@ sub git_shortlog_body {
                      "<td class=\"link\">" .
                      $cgi->a({-href => href(action=>"commit", hash=>$commit)}, "commit") . " | " .
                      $cgi->a({-href => href(action=>"commitdiff", hash=>$commit)}, "commitdiff") . " | " .
-                     $cgi->a({-href => href(action=>"tree", hash=>$commit, hash_base=>$commit)}, "tree"). " | " .
-                     "<a title='in format: tar.gz' href='http://git.nexus-irc.de/git_download.php?build=".$project.";h=".$commit."'>snapshot</a>";
-
+                     $cgi->a({-href => href(action=>"tree", hash=>$commit, hash_base=>$commit)}, "tree");
+               my $snapshot_links = format_snapshot_links($commit);
+               if (defined $snapshot_links) {
+                       print " | " . $snapshot_links;
+               }
                print "</td>\n" .
                      "</tr>\n";
        }
        if (defined $extra) {
                print "<tr>\n" .
-                     "<td colspan=\"4\">$extra</td>\n" .
+                     "<td colspan=\"5\">$extra</td>\n" .
                      "</tr>\n";
        }
        print "</table>\n";
@@ -4869,7 +4859,7 @@ sub git_history_body {
                        print "<tr class=\"light\">\n";
                }
                $alternate ^= 1;
-               print "<td class=\"". age_class($co{'age'}) . "\" title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
+               print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
        # shortlog:   format_author_html('td', \%co, 10)
                      format_author_html('td', \%co, 15, 3) . "<td>";
                # originally git_history used chop_str($co{'title'}, 50)
@@ -5136,48 +5126,15 @@ sub git_project_index {
                print "$path $owner\n";
        }
 }
-sub git_project_index2 {
-       my @projects = git_get_projects_list($project);
-
-       print $cgi->header(
-               -type => 'text/plain',
-               -charset => 'utf-8',
-               -content_disposition => 'inline; filename="index.aux"');
-
-       foreach my $pr (@projects) {
-               if (!exists $pr->{'owner'}) {
-                       $pr->{'owner'} = git_get_project_owner("$pr->{'path'}");
-               }
-
-               my ($path, $owner) = ($pr->{'path'}, $pr->{'owner'});
-               # quote as in CGI::Util::encode, but keep the slash, and use '+' for ' '
-               $path  =~ s/([^a-zA-Z0-9_.\-\/ ])/sprintf("%%%02X", ord($1))/eg;
-               $owner =~ s/([^a-zA-Z0-9_.\-\/ ])/sprintf("%%%02X", ord($1))/eg;
-               $path  =~ s/ /\+/g;
-               $owner =~ s/ /\+/g;
-
-               print "$path\n";
-       }
-}
-sub git_download {
-       my $dl = get("http://git.nexus-irc.de/git_download.php");
-       git_header_html();
-       print "<div class=\"title\">Downloads</div>\n";
-       print $dl;
-       git_footer_html();
-}
 
 sub git_summary {
        my $descr = git_get_project_description($project) || "none";
        my %co = parse_commit("HEAD");
        my %cd = %co ? parse_date($co{'committer_epoch'}, $co{'committer_tz'}) : ();
        my $head = $co{'id'};
-       
+
        my $owner = git_get_project_owner($project);
-       
-       my $version = get("http://git.nexus-irc.de/git_version.php?git=".$project);
-       my $download = get("http://git.nexus-irc.de/git_download.php?p=".$project);
-       
+
        my $refs = git_get_references();
        # These get_*_list functions return one more to allow us to see if
        # there are more ...
@@ -5192,6 +5149,7 @@ sub git_summary {
 
        git_header_html();
        git_print_page_nav('summary','', $head);
+
        print "<div class=\"title\">&nbsp;</div>\n";
        print "<table class=\"projects_list\">\n" .
              "<tr id=\"metadata_desc\"><td>description</td><td>" . esc_html($descr) . "</td></tr>\n" .
@@ -5210,8 +5168,7 @@ sub git_summary {
                print "<tr class=\"metadata_url\"><td>$url_tag</td><td>$git_url</td></tr>\n";
                $url_tag = "";
        }
-       print "<tr id=\"metadata_owner\"><td>version</td><td>" . esc_html($version) . "</td></tr>\n";
-       print "<tr id=\"metadata_owner\"><td>download</td><td>" . $download . "</td></tr>\n";
+
        # Tag cloud
        my $show_ctags = gitweb_check_feature('ctags');
        if ($show_ctags) {
@@ -5760,10 +5717,10 @@ sub git_tree {
                                                       hash_base=>"HEAD", file_name=>$file_name)},
                                        "HEAD"),
                }
-               my $snapshot_links = "1";
+               my $snapshot_links = format_snapshot_links($hash);
                if (defined $snapshot_links) {
                        # FIXME: Should be available when we have no hash base as well.
-                       push @views_nav, "<a title='in format: tar.gz' href='http://git.nexus-irc.de/git_download.php?build=".$project.";h=".$hash."'>snapshot</a>";
+                       push @views_nav, $snapshot_links;
                }
                git_print_page_nav('tree','', $hash_base, undef, undef,
                                   join(' | ', @views_nav));
@@ -5931,7 +5888,7 @@ sub git_log_generic {
        my $commit_hash = $base;
        if (defined $allrefs) {
                $commit_hash = "--all";
-       }
+       } 
        if (defined $parent) {
                $commit_hash = "$parent..$base";
        }
@@ -6079,9 +6036,9 @@ sub git_commit {
              "<td class=\"link\">" .
              $cgi->a({-href => href(action=>"tree", hash=>$co{'tree'}, hash_base=>$hash)},
                      "tree");
-       my $snapshot_links = "1";
+       my $snapshot_links = format_snapshot_links($hash);
        if (defined $snapshot_links) {
-               print " | " . "<a title='in format: tar.gz' href='http://git.nexus-irc.de/git_download.php?build=".$project.";h=".$hash."'>snapshot</a>";
+               print " | " . $snapshot_links;
        }
        print "</td>" .
              "</tr>\n";
diff --git a/patch/gitweb.cgi.diff b/patch/gitweb.cgi.diff
deleted file mode 100644 (file)
index dd7dbee..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
---- index.cgi  2012-08-29 01:30:10 +0000
-+++ index-graph.cgi    2012-09-07 20:12:12 +0000
-@@ -4764,13 +4768,37 @@
- sub git_shortlog_body {
-       # uses global variable $project
--      my ($commitlist, $from, $to, $refs, $extra) = @_;
-+      my ($commitlist, $from, $to, $refs, $extra, $file_name, $file_hash, $ftype, $allrefs) = @_;
-       $from = 0 unless defined $from;
-       $to = $#{$commitlist} if (!defined $to || $#{$commitlist} < $to);
--      print "<table class=\"shortlog\">\n";
-+      print "<table class=\"shortlog\" cellspacing=\"0\" cellpadding=\"0\">\n";
-       my $alternate = 1;
-+      my $graph_rand = int(rand(99999));
-+
-+      my $head = git_get_head_hash($project); 
-+    my $graph_hash;
-+    if (defined $allrefs && $allrefs == 1) {
-+        $graph_hash = "all";
-+    }
-+      if (!defined $hash) {
-+              $hash = $head;
-+      }
-+    if(!defined $graph_hash) {
-+        $graph_hash = $hash;
-+    }
-+      if (!defined $page) {
-+              $page = 0;
-+      }
-+
-+    print "<tr class=\"header\">\n";
-+    print "<td colspan=\"2\"><img class=\"graph\" src=\"git_graph.php?r=".$graph_rand.";p=".$project.";h=".$graph_hash.";from=".($from + (100 * $page)).";to=".($to + (100 * $page)).";c=header\" /></td>\n";
-+    print "<td valign=\"bottom\"><b>Author</b></td>\n";
-+    print "<td valign=\"bottom\"><b>Commit</b></td>\n";
-+    print "<td></td>\n";
-+      print "</tr>\n";
-+
-       for (my $i = $from; $i <= $to; $i++) {
-               my %co = %{$commitlist->[$i]};
-               my $commit = $co{'id'};
-@@ -4781,6 +4809,7 @@
-                       print "<tr class=\"light\">\n";
-               }
-               $alternate ^= 1;
-+              print "<td><img class=\"graph\" src=\"git_graph.php?r=".$graph_rand.";p=".$project.";h=".$graph_hash.";from=".($from + (100 * $page)).";to=".($to + (100 * $page)).";c=".$commit."\" /></td>";
-               # git_summary() used print "<td><i>$co{'age_string'}</i></td>\n" .
-               print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
-                     format_author_html('td', \%co, 10) . "<td>";
-@@ -5167,12 +5198,12 @@
-       # we need to request one more than 16 (0..15) to check if
-       # those 16 are all
--      my @commitlist = $head ? parse_commits($head, 17) : ();
-+      my @commitlist = $head ? parse_commits("--all", 17) : ();
-       if (@commitlist) {
-               git_print_header_div('shortlog');
-               git_shortlog_body(\@commitlist, 0, 15, $refs,
-                                 $#commitlist <=  15 ? undef :
--                                $cgi->a({-href => href(action=>"shortlog")}, "..."));
-+                                $cgi->a({-href => href(action=>"shortlog")}, "..."), 0, 0, 0, 1);
-       }
-       if (@taglist) {
-@@ -5847,8 +5878,10 @@
-       my ($fmt_name, $body_subr, $base, $parent, $file_name, $file_hash) = @_;
-       my $head = git_get_head_hash($project);
-+    my $allrefs;
-       if (!defined $base) {
-               $base = $head;
-+        $allrefs = 1;
-       }
-       if (!defined $page) {
-               $page = 0;
-@@ -5856,7 +5889,10 @@
-       my $refs = git_get_references();
-       my $commit_hash = $base;
--      if (defined $parent) {
-+    if (defined $allrefs) {
-+        $commit_hash = "--all";
-+    } 
-+    if (defined $parent) {
-               $commit_hash = "$parent..$base";
-       }
-       my @commitlist =
-@@ -5912,7 +5948,7 @@
-               if (defined $file_name);
-       $body_subr->(\@commitlist, 0, 99, $refs, $next_link,
--                   $file_name, $file_hash, $ftype);
-+                   $file_name, $file_hash, $ftype, $allrefs);
-       git_footer_html();
- }