diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-12-16 19:42:02 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-12-16 21:54:44 -0800 |
commit | dfff4b7aa42de7e7d58caeebe2c6128449f09b76 (patch) | |
tree | 4bf8fbc8a9bffd10627fceb57cc972e4cbbdd8f8 | |
parent | 872354dcb3ce5f34f7ddb12d2c89d26a1ea4daf0 (diff) | |
download | git-dfff4b7aa42de7e7d58caeebe2c6128449f09b76.tar.gz |
gitweb: do not run "git diff" that is Porcelain
Jakub says that legacy-style URI to view two blob differences are never
generated since 1.4.3. This codepath runs "git diff" Porcelain from the
gitweb, which is a no-no. It can trigger diff.external command that is
specified in the configuration file of the repository being viewed.
This patch applies to v1.5.4 and later.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | gitweb/gitweb.perl | 38 |
1 files changed, 2 insertions, 36 deletions
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index b582332f45..86a6ced11a 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -4809,43 +4809,9 @@ sub git_blobdiff { or die_error(undef, "Open git-diff-tree failed"); } - # old/legacy style URI - if (!%diffinfo && # if new style URI failed - defined $hash && defined $hash_parent) { - # fake git-diff-tree raw output - $diffinfo{'from_mode'} = $diffinfo{'to_mode'} = "blob"; - $diffinfo{'from_id'} = $hash_parent; - $diffinfo{'to_id'} = $hash; - if (defined $file_name) { - if (defined $file_parent) { - $diffinfo{'status'} = '2'; - $diffinfo{'from_file'} = $file_parent; - $diffinfo{'to_file'} = $file_name; - } else { # assume not renamed - $diffinfo{'status'} = '1'; - $diffinfo{'from_file'} = $file_name; - $diffinfo{'to_file'} = $file_name; - } - } else { # no filename given - $diffinfo{'status'} = '2'; - $diffinfo{'from_file'} = $hash_parent; - $diffinfo{'to_file'} = $hash; - } - - # non-textual hash id's can be cached - if ($hash =~ m/^[0-9a-fA-F]{40}$/ && - $hash_parent =~ m/^[0-9a-fA-F]{40}$/) { - $expires = '+1d'; - } - - # open patch output - open $fd, "-|", git_cmd(), "diff", @diff_opts, - '-p', ($format eq 'html' ? "--full-index" : ()), - $hash_parent, $hash, "--" - or die_error(undef, "Open git-diff failed"); - } else { + # old/legacy style URI -- not generated anymore since 1.4.3. + if (!%diffinfo) { die_error('404 Not Found', "Missing one of the blob diff parameters") - unless %diffinfo; } # header |