git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 6/7] gitweb: pass root directory as empty file parameter

From
MKMartin Koegler <mkoegler@auto.tuwien.ac.at>
Date
Apr 15, 2007, 20:46 UTC
Message-ID
<11766699714077-git-send-email-mkoegler@auto.tuwien.ac.at>
In-Reply-To
<1176669971921-git-send-email-mkoegler@auto.tuwien.ac.at>

This patch add the automatic propagation of the file name from f to fp for git_treeview, if fp is undefined. To distinguish it from the root directory, allow an empty string for this in f/fp.

Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
---

It was requested, that git_treediff should propagate f to fp, if the fp parameter is missing. So I created this patch.

As any other path could be a valid blob, I use the empty string for the root directory.

As I personally don't like this, I have split this change into a seperate patch:

* As git_treediff is new code, not propagating f->fp would not break any
  existing urls. 
* The f->fp propagation currently only happens in blobdiff (The only
  place, where fp is used). Is this enough to make it the standard
  gitweb parameter convention?
* The root tree is specified in git_tree with an missing f parameter.
* I don't know all security implication, if an empty file name is
  passed to all existing git function.

So I would like to drop this patch and pass the root directory as missing f/fp parameter, which does not allow propagating f to fp.

Comments from other on this topic?
 gitweb/gitweb.perl |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 769e755..e4d3f8f 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -310,14 +310,14 @@ if (defined $project) {
 }
 
 our $file_name = $cgi->param('f');
-if (defined $file_name) {
+if (defined $file_name && $file_name ne '') {
 	if (!validate_pathname($file_name)) {
 		die_error(undef, "Invalid file parameter");
 	}
 }
 
 our $file_parent = $cgi->param('fp');
-if (defined $file_parent) {
+if (defined $file_parent && $file_parent ne '') {
 	if (!validate_pathname($file_parent)) {
 		die_error(undef, "Invalid file parent parameter");
 	}
@@ -4203,6 +4203,10 @@ sub git_treediff {
 					"raw");
 	}
 
+	$file_parent = $file_name if (!defined $file_parent);
+	$file_name = undef if(defined $file_name && $file_name eq '');
+	$file_parent = undef if(defined $file_parent && $file_parent eq '');
+
 	if (!defined $hash) {
 		if (!defined $hash_base) {
 			die_error(undef,'tree parameter missing');
-- 
1.5.1.1.85.gf1888
Previous: Martin KoeglerNext: Martin Koegler
Message 6 of 14 in “gitweb: show "no difference" message for empty diff”
  1. 1/7 gitweb: show "no difference" message for empty diffMartin Koegler, Apr 15, 2007
  2. 2/7 gitweb: Support comparing blobs with different namesMartin Koegler, Apr 15, 2007
  3. 3/7 gitweb: support filename prefix in git_patchset_body/git_difftree_bodyMartin Koegler, Apr 15, 2007
  4. 4/7 gitweb: Add treediff viewMartin Koegler, Apr 15, 2007
  5. 5/7 gitweb: Prototyp for selecting diffs in JavaScriptMartin Koegler, Apr 15, 2007
  6. 6/7 gitweb: pass root directory as empty file parameterMartin Koegler, Apr 15, 2007
  7. 7/7 gitweb: Adapt gitweb.js to new git_treeview calling conventionMartin Koegler, Apr 15, 2007
  8. Jakub NarebskiApr 27, 2007
  9. Martin KoeglerApr 28, 2007
  10. Jakub NarebskiApr 20, 2007
  11. Junio C HamanoApr 20, 2007
  12. Jakub NarebskiApr 20, 2007
  13. 0/4 git-diff: use mode for tree:name syntax (was: Re: [PATCH 2/7] gitweb: Support comparing blobs with different names)Martin Koegler, Apr 21, 2007
  14. Jakub NarebskiApr 18, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.