# [PATCH] gitweb: Restore object-named links in item lists

4 messages from 2006-10-11 to 2006-10-11. Participants: Petr Baudis, Junio C Hamano, Luben Tuikov, Jakub Narebski.
Thread: https://gitlist.dev/t/5889

## Petr Baudis, 2006-10-11 20:18

Subject: [PATCH] gitweb: Restore object-named links in item lists
Message-ID: <20061011201812.26857.58295.stgit@rover>
URL: https://gitlist.dev/e/20061011201812.26857.58295.stgit%40rover

```
This restores the redundant links removed earlier. It supersedes my patch
to stick slashes to tree entries.

Signed-off-by: Petr Baudis <pasky@suse.cz>
---

 gitweb/gitweb.perl |   42 ++++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index a11fa38..d8298b9 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1785,18 +1785,20 @@ sub git_print_tree_entry {
 					       file_name=>"$basedir$t->{'name'}", %base_key),
 				 -class => "list"}, esc_html($t->{'name'})) . "</td>\n";
 		print "<td class=\"link\">";
+		print $cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
+					     file_name=>"$basedir$t->{'name'}", %base_key)},
+			      "blob");
 		if ($have_blame) {
-			print $cgi->a({-href => href(action=>"blame", hash=>$t->{'hash'},
+			print " | " .
+				$cgi->a({-href => href(action=>"blame", hash=>$t->{'hash'},
 						     file_name=>"$basedir$t->{'name'}", %base_key)},
-				      "blame");
+					"blame");
 		}
 		if (defined $hash_base) {
-			if ($have_blame) {
-				print " | ";
-			}
-			print $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
+			print " | " .
+				$cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
 			                             hash=>$t->{'hash'}, file_name=>"$basedir$t->{'name'}")},
-			              "history");
+					"history");
 		}
 		print " | " .
 			$cgi->a({-href => href(action=>"blob_plain", hash_base=>$hash_base,
@@ -1811,17 +1813,19 @@ sub git_print_tree_entry {
 		              esc_html($t->{'name'}));
 		print "</td>\n";
 		print "<td class=\"link\">";
+		print $cgi->a({-href => href(action=>"tree", hash=>$t->{'hash'},
+					     file_name=>"$basedir$t->{'name'}", %base_key)},
+			      "tree");
 		if (defined $hash_base) {
-			print $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
+			print " | " .
+				$cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
 			                             file_name=>"$basedir$t->{'name'}")},
-			              "history");
-			if ($have_snapshot) {
-				print " | ";
-			}
+					"history");
 		}
 		if ($have_snapshot) {
-			print $cgi->a({-href => href(action=>"snapshot", hash=>$t->{'hash'})},
-				      "snapshot");
+			print " | " .
+				$cgi->a({-href => href(action=>"snapshot", hash=>$t->{'hash'})},
+					"snapshot");
 		}
 		print "</td>\n";
 	}
@@ -1902,6 +1906,9 @@ sub git_difftree_body {
 				print $cgi->a({-href => "#patch$patchno"}, "patch");
 				print " | ";
 			}
+			print $cgi->a({-href => href(action=>"blob", hash=>$diff{'from_id'},
+			                             hash_base=>$parent, file_name=>$diff{'file'})},
+				      "blob") . " | ";
 			print $cgi->a({-href => href(action=>"blame", hash_base=>$parent,
 						     file_name=>$diff{'file'})},
 				      "blame") . " | ";
@@ -1947,6 +1954,9 @@ sub git_difftree_body {
 				}
 				print " | ";
 			}
+			print $cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
+						     hash_base=>$hash, file_name=>$diff{'file'})},
+				      "blob") . " | ";
 			print $cgi->a({-href => href(action=>"blame", hash_base=>$hash,
 						     file_name=>$diff{'file'})},
 				      "blame") . " | ";
@@ -1987,6 +1997,9 @@ sub git_difftree_body {
 				}
 				print " | ";
 			}
+			print $cgi->a({-href => href(action=>"blob", hash=>$diff{'from_id'},
+						     hash_base=>$parent, file_name=>$diff{'from_file'})},
+				      "blob") . " | ";
 			print $cgi->a({-href => href(action=>"blame", hash_base=>$parent,
 						     file_name=>$diff{'from_file'})},
 				      "blame") . " | ";
@@ -2154,6 +2167,7 @@ sub git_shortlog_body {
 		                          href(action=>"commit", hash=>$commit), $ref);
 		print "</td>\n" .
 		      "<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");
 		if (gitweb_have_snapshot()) {

```

## Junio C Hamano, 2006-10-11 21:48

Subject: Re: [PATCH] gitweb: Restore object-named links in item lists
Message-ID: <7viriqsew5.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7viriqsew5.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20061011201812.26857.58295.stgit@rover>

```
I would love to take this but please defer it for now; the patch
does not apply to any of my topic branches (nor "next").

I'd like to stabilize "master" for v1.4.3 this week, and would
like to merge bunch of stuff that are already in "next" to
"master" after that.  I'd prefer to come back to gitweb when the
dust settles.

```

## Luben Tuikov, 2006-10-11 22:21

Subject: Re: [PATCH] gitweb: Restore object-named links in item lists
Message-ID: <20061011222101.36525.qmail@web31808.mail.mud.yahoo.com>
URL: https://gitlist.dev/e/20061011222101.36525.qmail%40web31808.mail.mud.yahoo.com
In-Reply-To: <20061011201812.26857.58295.stgit@rover>

```
--- Petr Baudis <pasky@suse.cz> wrote:
> This restores the redundant links removed earlier. It supersedes my patch
> to stick slashes to tree entries.

I NACK this, but it depends on Junio.

BTW, if you so much like to bring this back,
why don't you _revert_ the commit which removed them,
_resolve_, _commit_ and then submit that commit.

The reason is that we know that the original works
and here you're rewriting (untested as opposed
to the original) code.

NACK, I don't see the need for this.

But if this does go in, can you please remove the
"hidden" links so that _less_ identical code is left
to be maintained.  (I don't know anyone who's getting
paid to maintain gitweb, do you?)

   Luben

> 
> Signed-off-by: Petr Baudis <pasky@suse.cz>
> ---
> 
>  gitweb/gitweb.perl |   42 ++++++++++++++++++++++++++++--------------
>  1 files changed, 28 insertions(+), 14 deletions(-)
> 
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index a11fa38..d8298b9 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -1785,18 +1785,20 @@ sub git_print_tree_entry {
>  					       file_name=>"$basedir$t->{'name'}", %base_key),
>  				 -class => "list"}, esc_html($t->{'name'})) . "</td>\n";
>  		print "<td class=\"link\">";
> +		print $cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
> +					     file_name=>"$basedir$t->{'name'}", %base_key)},
> +			      "blob");
>  		if ($have_blame) {
> -			print $cgi->a({-href => href(action=>"blame", hash=>$t->{'hash'},
> +			print " | " .
> +				$cgi->a({-href => href(action=>"blame", hash=>$t->{'hash'},
>  						     file_name=>"$basedir$t->{'name'}", %base_key)},
> -				      "blame");
> +					"blame");
>  		}
>  		if (defined $hash_base) {
> -			if ($have_blame) {
> -				print " | ";
> -			}
> -			print $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
> +			print " | " .
> +				$cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
>  			                             hash=>$t->{'hash'}, file_name=>"$basedir$t->{'name'}")},
> -			              "history");
> +					"history");
>  		}
>  		print " | " .
>  			$cgi->a({-href => href(action=>"blob_plain", hash_base=>$hash_base,
> @@ -1811,17 +1813,19 @@ sub git_print_tree_entry {
>  		              esc_html($t->{'name'}));
>  		print "</td>\n";
>  		print "<td class=\"link\">";
> +		print $cgi->a({-href => href(action=>"tree", hash=>$t->{'hash'},
> +					     file_name=>"$basedir$t->{'name'}", %base_key)},
> +			      "tree");
>  		if (defined $hash_base) {
> -			print $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
> +			print " | " .
> +				$cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
>  			                             file_name=>"$basedir$t->{'name'}")},
> -			              "history");
> -			if ($have_snapshot) {
> -				print " | ";
> -			}
> +					"history");
>  		}
>  		if ($have_snapshot) {
> -			print $cgi->a({-href => href(action=>"snapshot", hash=>$t->{'hash'})},
> -				      "snapshot");
> +			print " | " .
> +				$cgi->a({-href => href(action=>"snapshot", hash=>$t->{'hash'})},
> +					"snapshot");
>  		}
>  		print "</td>\n";
>  	}
> @@ -1902,6 +1906,9 @@ sub git_difftree_body {
>  				print $cgi->a({-href => "#patch$patchno"}, "patch");
>  				print " | ";
>  			}
> +			print $cgi->a({-href => href(action=>"blob", hash=>$diff{'from_id'},
> +			                             hash_base=>$parent, file_name=>$diff{'file'})},
> +				      "blob") . " | ";
>  			print $cgi->a({-href => href(action=>"blame", hash_base=>$parent,
>  						     file_name=>$diff{'file'})},
>  				      "blame") . " | ";
> @@ -1947,6 +1954,9 @@ sub git_difftree_body {
>  				}
>  				print " | ";
>  			}
> +			print $cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
> +						     hash_base=>$hash, file_name=>$diff{'file'})},
> +				      "blob") . " | ";
>  			print $cgi->a({-href => href(action=>"blame", hash_base=>$hash,
>  						     file_name=>$diff{'file'})},
>  				      "blame") . " | ";
> @@ -1987,6 +1997,9 @@ sub git_difftree_body {
>  				}
>  				print " | ";
>  			}
> +			print $cgi->a({-href => href(action=>"blob", hash=>$diff{'from_id'},
> +						     hash_base=>$parent, file_name=>$diff{'from_file'})},
> +				      "blob") . " | ";
>  			print $cgi->a({-href => href(action=>"blame", hash_base=>$parent,
>  						     file_name=>$diff{'from_file'})},
>  				      "blame") . " | ";
> @@ -2154,6 +2167,7 @@ sub git_shortlog_body {
>  		                          href(action=>"commit", hash=>$commit), $ref);
>  		print "</td>\n" .
>  		      "<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");
>  		if (gitweb_have_snapshot()) {
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

```

## Jakub Narebski, 2006-10-11 22:46

Subject: Re: [PATCH] gitweb: Restore object-named links in item lists
Message-ID: <egjs8b$tmh$1@sea.gmane.org>
URL: https://gitlist.dev/e/egjs8b%24tmh%241%40sea.gmane.org
In-Reply-To: <20061011222101.36525.qmail@web31808.mail.mud.yahoo.com>

```
Luben Tuikov wrote:

> But if this does go in, can you please remove the
> "hidden" links so that _less_ identical code is left
> to be maintained.  (I don't know anyone who's getting
> paid to maintain gitweb, do you?)

We could instead save common part of links in the temporary
variable. I quite like those "hidden links", they make area where
we can click larger.
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git

```
