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

Re: [RFCv3 1/2] gitweb: add patch view

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 3, 2008, 23:55 UTC
Message-ID
<7vy6yw95ln.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<1228345188-15125-2-git-send-email-giuseppe.bilotta@gmail.com>
Giuseppe Bilotta <giuseppe.bilotta@gmail.com> writes:
Show 39 quoted lines
> The manually-built email format in commitdiff_plain output is not
> appropriate for feeding git-am, because of two limitations:
>  * when a range of commits is specified, commitdiff_plain publishes a
>    single patch with the message from the first commit, instead of a
>    patchset,
>  * in either case, the patch summary is replicated both as email subject
>    and as first line of the email itself, resulting in a doubled summary
>    if the output is fed to git-am.
>
> We thus create a new view that can be fed to git-am directly by exposing
> the output of git format-patch directly. This allows patch exchange and
> submission via gitweb.
>
> A configurable limit is imposed on the number of commits which will be
> included in a patchset, to prevent DoS attacks on the server. Setting
> the limit to 0 will disable the patch view, setting it to a negative
> number will remove the limit.
>
> Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
> ---
>  gitweb/gitweb.perl |   41 ++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 40 insertions(+), 1 deletions(-)
>
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 2738643..c9abfcf 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -329,6 +329,13 @@ our %feature = (
>  	'ctags' => {
>  		'override' => 0,
>  		'default' => [0]},
> +
> +	# The maximum number of patches in a patchset generated in patch
> +	# view. Set this to 0 or undef to disable patch view, or to a
> +	# negative number to remove any limit.
> +	'patches' => {
> +		'override' => 1,
> +		'default' => [16]},
>  );

Looking at the existing entries in the %feature hash, it seems that it is our tradition that a new feature starts as disabled and not overridable (see 'ctags' in the context above).

Show 8 quoted lines
>  sub git_commitdiff {
>  	my $format = shift || 'html';
> +
> +	my $patch_max = gitweb_check_feature('patches');
> +	if ($format eq 'patch') {
> +		die_error(403, "Patch view not allowed") unless $patch_max;
> +	}
> +

Should you have to pay overhead for the check-feature call even when the $format is not "patch"?

Show 5 quoted lines
> @@ -5396,6 +5410,7 @@ sub git_commitdiff {
>  	}
>  	# we need to prepare $formats_nav before almost any parameter munging
>  	my $formats_nav;
> +
Noise.
Show 13 quoted lines
> @@ -5532,6 +5552,15 @@ sub git_commitdiff {
>  			print to_utf8($line) . "\n";
>  		}
>  		print "---\n\n";
> +	} elsif ($format eq 'patch') {
> +		my $filename = basename($project) . "-$hash.patch";
> +
> +		print $cgi->header(
> +			-type => 'text/plain',
> +			-charset => 'utf-8',
> +			-expires => $expires,
> +			-content_disposition => 'inline; filename="' . "$filename" . '"');
> +		# TODO add X-Git-Tag/X-Git-Url headers in a sensible way

A stupid question. Are you talking about sending these X-Foo as extra HTTP headers? What good would they do (iow what will they be used for by the receiving browser/wget)?

Other than that the patch seems quite straightforward and was a pleasant read. Thanks.

Previous: Jakub NarebskiNext: Giuseppe Bilotta
Message 7 of 20 in “[RFCv3 0/2] gitweb: patch view”
  1. Giuseppe BilottaDec 3, 2008
  2. 1/2 gitweb: add patch viewGiuseppe Bilotta, Dec 3, 2008
  3. 2/2 gitweb: links to patch action in commitdiff and shortlog viewGiuseppe Bilotta, Dec 3, 2008
  4. Jakub NarebskiDec 6, 2008
  5. Giuseppe BilottaDec 6, 2008
  6. Jakub NarebskiDec 6, 2008
  7. Junio C HamanoDec 3, 2008
  8. Giuseppe BilottaDec 4, 2008
  9. Junio C HamanoDec 4, 2008
  10. Jakub NarebskiDec 4, 2008
  11. Giuseppe BilottaDec 4, 2008
  12. Jakub NarebskiDec 6, 2008
  13. Junio C HamanoDec 6, 2008
  14. Jakub NarebskiDec 6, 2008
  15. Junio C HamanoDec 6, 2008
  16. Giuseppe BilottaDec 6, 2008
  17. Petr BaudisDec 6, 2008
  18. Giuseppe BilottaDec 6, 2008
  19. Jakub NarebskiDec 6, 2008
  20. Giuseppe BilottaDec 6, 2008

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.