]> Lady’s Gitweb - Gitweb/log
Gitweb
29 hours agogitweb: Make use of the $git_dir variable at sub git_get_project_url_list
Bruno Ribas [Wed, 6 Feb 2008 17:15:12 +0000 (15:15 -0200)]
gitweb: Make use of the $git_dir variable at sub git_get_project_url_list

Signed-off-by: Bruno Ribas <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Make feed entries point to commitdiff view
Florian La Roche [Sun, 3 Feb 2008 11:38:46 +0000 (12:38 +0100)]
gitweb: Make feed entries point to commitdiff view

Change feeds entries (feeds items) from pointing (linking) to 'commit'
view to pointing to 'commitdiff' view.

First, feed entries have whatchanged-like list of files which were
modified in a commit, so 'commitdiff' view more naturally reflects
feed entry (is more naturally alternate / extended version of a feed
item). Second, this way the patches are shown directly and code review
is done more easily via watching feeds.

[jn: Rewritten commit message]

Signed-off-by: Florian La Roche <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Make use of the $git_dir variable at sub git_get_project_description
Bruno Ribas [Wed, 30 Jan 2008 05:37:56 +0000 (03:37 -0200)]
gitweb: Make use of the $git_dir variable at sub git_get_project_description

Signed-off-by: Bruno Ribas <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add info about $projectroot and $projects_list to gitweb/README
Jakub Narebski [Tue, 29 Jan 2008 19:52:32 +0000 (20:52 +0100)]
gitweb: Add info about $projectroot and $projects_list to gitweb/README

Those two configuration variables are important enough that it is
worth to explicitely write about them in the "Gitweb config file
variables" section even if they are usually set during build by
GITWEB_PROJECTROOT and GITWEB_LIST build (Makefile) configuration
variables.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Convert generated contents to utf8 in commitdiff_plain
Yasushi SHOJI [Tue, 29 Jan 2008 12:16:02 +0000 (21:16 +0900)]
gitweb: Convert generated contents to utf8 in commitdiff_plain

If the commit message, or commit author contains non-ascii, it must be
converted from Perl internal representation to utf-8, to follow what
got declared in HTTP header.  Use to_utf8() to do the conversion.

This necessarily replaces here-doc with "print" statements.

Signed-off-by: Yasushi SHOJI <redacted>
Acked-by: İsmail Dönmez <redacted>
Acked-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: fix whitespace in config_to_multi (indent with tab)
Jakub Narebski [Thu, 20 Dec 2007 09:48:09 +0000 (10:48 +0100)]
gitweb: fix whitespace in config_to_multi (indent with tab)

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Make config_to_multi return [] instead of [undef]
Petr Baudis [Sat, 8 Dec 2007 11:30:59 +0000 (12:30 +0100)]
gitweb: Make config_to_multi return [] instead of [undef]

This is important for the list of clone urls, where if there are
no per-repository clone URL configured, the default base URLs
are never used for URL construction without this patch.

Add tests for different ways of setting project URLs, just in case.
Note that those tests in current form wouldn't detect breakage fixed
by this patch, as it only checks for errors and not for expected
output.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Teach "a=blob" action to be more lenient about blob/file mime type
Jakub Narebski [Sat, 15 Dec 2007 14:41:49 +0000 (15:41 +0100)]
gitweb: Teach "a=blob" action to be more lenient about blob/file mime type

Since 930cf7dd7cc6b87d173f182230763e1f1913d319 'blob' action knows the
file type; if the file type is not "text/*" or one of common network
image formats/mimetypes (gif, png, jpeg) then the action "blob"
defaulted to "blob_plain".  This caused the problem if mimetypes file
was not well suited for web, for example returning "application/x-sh"
for "*.sh" shell scripts, instead of "text/plain" (or other "text/*").

Now "blob" action defaults to "blob_plain" ('raw' view) only if file
is of type which is neither "text/*" nor "image/{gif,png,jpeg}"
AND it is binary file.  Otherwise it assumes that it can be displayed
either in <img> tag ("image/*" mimetype), or can be displayed line by
line (otherwise).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: disambiguate heads and tags withs the same name
Jakub Narebski [Sat, 15 Dec 2007 14:40:28 +0000 (15:40 +0100)]
gitweb: disambiguate heads and tags withs the same name

Avoid wrong disambiguation that would link logs/trees of tags and
heads which share the same name to the same page, leading to
a disambiguation that would prefer the tag, thus making it impossible
to access the corresponding head log and tree without hacking the url
by hand.

It does it by using full refname (with 'refs/heads/' or 'refs/tags/'
prefix) instead of shortened one in the URLs in 'heads' and 'tags'
tables.  This makes URLs (and refs) provided by gitweb unambiguous.

Signed-off-by: Guillaume Seguin <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: use Perl built-in utf8 function for UTF-8 decoding.
İsmail Dönmez [Tue, 4 Dec 2007 08:55:41 +0000 (10:55 +0200)]
gitweb: use Perl built-in utf8 function for UTF-8 decoding.

Signed-off-by: İsmail Dönmez <redacted>
Tested-by: Martin Koegler <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Update and improve gitweb/README file
Jakub Narebski [Sun, 2 Dec 2007 23:22:02 +0000 (00:22 +0100)]
gitweb: Update and improve gitweb/README file

Update list of build configuration variables, add references
to gitweb/INSTALL, add description of runtime and per-repository
runtime configuration.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: the commitdiff is very commonly used, it's needed on search page, too
Denis Cheng [Mon, 26 Nov 2007 12:42:06 +0000 (20:42 +0800)]
gitweb: the commitdiff is very commonly used, it's needed on search page, too

Acked-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Put project README in div.readme, fix its padding
Jakub Narebski [Mon, 19 Nov 2007 13:16:12 +0000 (14:16 +0100)]
gitweb: Put project README in div.readme, fix its padding

Put (optional) projects README on "summary" page in <div> element
using "readme" class.  This allow to style it using CSS.

Add padding to project's README to make it line out with the rest
of the page.

Signed-off-by: Jakub Narebski <redacted>
29 hours agogitweb: Style all tables using CSS
Jakub Narebski [Mon, 19 Nov 2007 13:16:11 +0000 (14:16 +0100)]
gitweb: Style all tables using CSS

Remove all cellspacing="0" attributes from tables in gitweb,
replacing it by CSS rule.  Add CSS classes for all tables.

While at it, change class(es) of table for commit message and commit
authorship search from "grep" to "commit_search"; similarly,
"grep_search" class is now used for table with results of grep (files)
search.

Signed-off-by: Jakub Narebski <redacted>
29 hours agogitweb: correct month in date display for atom feeds
Vincent Zanotti [Sat, 10 Nov 2007 18:55:27 +0000 (19:55 +0100)]
gitweb: correct month in date display for atom feeds

Signed-off-by: Vincent Zanotti <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Use config file for repository description and URLs
Jakub Narebski [Fri, 2 Nov 2007 23:41:20 +0000 (00:41 +0100)]
gitweb: Use config file for repository description and URLs

Allow to use configuration variable gitweb.description for repository
description if there is no $GIT_DIR/description file, and multivalued
configuration variable gitweb.url for URLs of a project (to clone or
fetch from) if there is no $GIT_DIR/cloneurl file.

While repository description is shown in the projects list page, so it
is better to use file and not config variable for performance, it is I
think better to use gitweb.url for URLs (as it is shown only on
project summary page).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Read repo config using 'git config -z -l'
Jakub Narebski [Fri, 2 Nov 2007 23:41:19 +0000 (00:41 +0100)]
gitweb: Read repo config using 'git config -z -l'

Change git_get_project_config to run git-config only once per
repository, without changing its signature (its calling convention).
This means for example that it returns 'true' or 'false' when called
with second argument '--bool', and not true or false value.

Instead of calling 'git config [<type>] --get gitweb.<key>' once for
each config variable, call 'git config -z -l' only once, parsing and
saving its output to %config variable.  This makes possible to add new
per repository configuration without paying cost of forking once per
variable checked.  We can now allow repository description and
repository URLs to be stored in config file without badly affecting
gitweb performance.

For now only configuration variables for 'gitweb' section are stored.

Multiple values for single configuration variable are stored as
anonymous array reference; configuration variable with no value is
stored as undef.

Converting configuration variable values to boolean or integer value
are done in Perl.  Results differ from git-config in the fact that no
conversion error is ever raised.  For boolean values no value, 'true'
(any case) and 'false' (any case) are considered true, numbers are
true if not zero; all other values (even invalid for bool) are
considered false.  For integer values value suffix of 'k', 'm', or 'g'
following decimal number will cause the value to be multiplied by
1024, 1048576, or 1073741824; other values are returned as-is, only
whitespace stripped.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Use href(-replay=>1, action=>...) to generate alternate views
Jakub Narebski [Thu, 1 Nov 2007 12:06:29 +0000 (13:06 +0100)]
gitweb: Use href(-replay=>1, action=>...) to generate alternate views

Use href(action=>..., -replay=>1) to generate links to alternate views
of current page in the $formats_nav (bottom) part of page_nav
navigation bar.  This form is used only when all parameters are
repeated, and when the replay form is shorter.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Use href(-replay=>1, page=>...) to generate pagination links
Jakub Narebski [Thu, 1 Nov 2007 12:06:28 +0000 (13:06 +0100)]
gitweb: Use href(-replay=>1, page=>...) to generate pagination links

Use href(-replay=>1, page=>$page-1) and href(-replay=>1, page=>$page+1)
to generate previous page and next page links.

Generate next page link only once.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Easier adding/changing parameters to current URL
Jakub Narebski [Thu, 1 Nov 2007 12:06:27 +0000 (13:06 +0100)]
gitweb: Easier adding/changing parameters to current URL

Add boolean option '-replay' to href() subroutine, which is used to
generate links in gitweb.  This option "replays" current URL,
overriding it with provided parameters.  It means that current value
of each CGI parameter is used unless otherwise provided.

This change is meant to make it easier to generate links which differ
from current page URL only by one parameter, for example the same view
but sorted by different column:
  href(-replay=>1, order=>"age")
or view which differs by some option, e.g. in log views
  href(-replay=>1, extra_options=>"--no-merges")
or alternate view of the same object, e.g. in the 'blob' view
  href(-replay=>1, action=>"blob_plain")

Actual use of this functionality is left for later.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add 'status_str' to parse_difftree_raw_line output
Jakub Narebski [Thu, 1 Nov 2007 11:38:09 +0000 (12:38 +0100)]
gitweb: Add 'status_str' to parse_difftree_raw_line output

Add 'status_str' to diffinfo output, which stores status (also for
merge commit) as a string.  This allows for easy checking if there is
given status among all for merge commit, e.g.
  $diffinfo->{'status_str'} =~ /D/;

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Always set 'from_file' and 'to_file' in parse_difftree_raw_line
Jakub Narebski [Thu, 1 Nov 2007 11:38:08 +0000 (12:38 +0100)]
gitweb: Always set 'from_file' and 'to_file' in parse_difftree_raw_line

Always set 'from_file' and 'to_file' keys when parsing raw diff output
format line, even if filename didn't change (file was not renamed).
This allows for simpler code.

Previously, you would have written:

  $diffinfo->{'from_file'} || $diffinfo->{'file'}

but now you can just use

  $diffinfo->{'from_file'}

as 'from_file' is always defined.

While at it, replace (for merge commits)

  $diffinfo->{'from_file'}[$i] || $diffinfo->{'to_file'}

by

  defined $diffinfo->{'from_file'}[$i] ?
          $diffinfo->{'from_file'}[$i] :
          $diffinfo->{'to_file'};

to have no problems with file named '0'.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Update config file example for snapshot feature in gitweb/INSTALL
Jakub Narebski [Thu, 1 Nov 2007 12:45:33 +0000 (13:45 +0100)]
gitweb: Update config file example for snapshot feature in gitweb/INSTALL

Commit a3c8ab30a54c30a6a434760bedf04548425416ef by Matt McCutchen
  "gitweb: snapshot cleanups & support for offering multiple formats"
introduced new format of $feature{'snapshot'}{'default'} value. Update
"Config file example" in gitweb/INSTALL accordingly.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix and simplify "split patch" detection
Jakub Narebski [Tue, 30 Oct 2007 00:35:05 +0000 (01:35 +0100)]
gitweb: Fix and simplify "split patch" detection

There are some cases when one line from "raw" git-diff output (raw
format) corresponds to more than one patch in the patchset git-diff
output; we call this situation "split patch". Old code misdetected
subsequent patches (for different files) with the same pre-image and
post-image as fragments of "split patch", leading to mislabeled
from-file/to-file diff header etc.

Old code used pre-image and post-image SHA-1 identifier ('from_id' and
'to_id') to check if current patch corresponds to old raw diff format
line, to find if one difftree raw line coresponds to more than one
patch in the patch format.  Now we use post-image filename for that.
This assumes that post-image filename alone can be used to identify
difftree raw line.  In the case this changes (which is unlikely
considering current diff engine) we can add 'from_id' and 'to_id'
to detect "patch splitting" together with 'to_file'.

Because old code got pre-image and post-image SHA-1 identifier for the
patch from the "index" line in extended diff header, diff header had
to be buffered.  New code takes post-image filename from "git diff"
header, which is first line of a patch; this allows to simplify
git_patchset_body code.  A side effect of resigning diff header
buffering is that there is always "diff extended_header" div, even
if extended diff header is empty.

Alternate solution would be to check when git splits patches, and do
not check if parsed info from current patch corresponds to current or
next raw diff format output line.  Git splits patches only for 'T'
(typechange) status filepair, and there always two patches
corresponding to one raw diff line.  It was not used because it would
tie gitweb code to minute details of git diff output.

While at it, use newly introduced parsed_difftree_line wrapper
subroutine in git_difftree_body.

Noticed-by: Yann Dirson <redacted>
Diagnosed-by: Petr Baudis <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Use chop_and_escape_str in more places.
David Symonds [Tue, 23 Oct 2007 01:31:23 +0000 (11:31 +1000)]
gitweb: Use chop_and_escape_str in more places.

Signed-off-by: David Symonds <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Refactor abbreviation-with-title-attribute code.
David Symonds [Tue, 23 Oct 2007 01:31:22 +0000 (11:31 +1000)]
gitweb: Refactor abbreviation-with-title-attribute code.

Signed-off-by: David Symonds <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Provide title attributes for abbreviated author names.
David Symonds [Mon, 22 Oct 2007 00:28:03 +0000 (10:28 +1000)]
gitweb: Provide title attributes for abbreviated author names.

Signed-off-by: David Symonds <redacted>
Signed-off-by: Shawn O. Pearce <redacted>
29 hours agogitweb: speed up project listing on large work trees by limiting find depth
Luke Lu [Wed, 17 Oct 2007 03:45:25 +0000 (20:45 -0700)]
gitweb: speed up project listing on large work trees by limiting find depth

Signed-off-by: Luke Lu <redacted>
Signed-off-by: Shawn O. Pearce <redacted>
29 hours agogitweb: No difftree output for trivial merge
Jakub Narebski [Sat, 8 Sep 2007 19:54:28 +0000 (21:54 +0200)]
gitweb: No difftree output for trivial merge

In 'commitdiff' view, for the merge commit, there is an extra header
for the difftree table, with links to commitdiffs to individual
parents.  Do not show such header when there is nothing to show, for
trivial merges.

This means that for trivial merge you have to go to 'commit' view
to get links to diffs to each parent.

Signed-off-by: Jakub Narebski <redacted>
29 hours agogitweb: Remove parse_from_to_diffinfo code from git_patchset_body
Jakub Narebski [Sat, 8 Sep 2007 19:49:11 +0000 (21:49 +0200)]
gitweb: Remove parse_from_to_diffinfo code from git_patchset_body

In commit 90921740bd00029708370673fdc537522aa48e6f
  "gitweb: Split git_patchset_body into separate subroutines"
a part of git_patchset_body code was separated into parse_from_to_diffinfo
subroutine.  But instead of replacing the separated code by the call to
mentioned subroutine, the call to subroutine was placed before the separated
code.  This patch removes parse_from_to_diffinfo code from git_patchset_body
subroutine.

Signed-off-by: Jakub Narebski <redacted>
29 hours agogitweb: Fix escaping HTML of project owner in 'projects_list' and 'summary' views
Jakub Narebski [Tue, 28 Aug 2007 14:05:43 +0000 (16:05 +0200)]
gitweb: Fix escaping HTML of project owner in 'projects_list' and 'summary' views

This for example allows to put email address in the project owner
field in the projects index file (when $projects_list points to
a file, and not to a directory), in the form of:

path/to/repo.git Random+J+Developer+<redacted>

Noticed-by: Jon Smirl <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Lift any characters restriction on searched strings
Petr Baudis [Sat, 25 Aug 2007 22:18:47 +0000 (00:18 +0200)]
gitweb: Lift any characters restriction on searched strings

Everything is already fully quoted along the way so I believe this to be
unnecessary at this point. It would pose trouble for regexp searches.

Signed-off-by: Petr Baudis <redacted>
Acked-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix searchbox positioning
Petr Baudis [Sun, 26 Aug 2007 19:31:32 +0000 (21:31 +0200)]
gitweb: Fix searchbox positioning

Currently, searchbox is CSS'd to have position: absolute, which has the
unfortunate consequence that if the viewport is too small and can't fit
into the page width together with the navbar, it gets overlapped and part
of the navbar gets obscured. This makes searchbox float: right instead,
thus the navbar simply gets wrapped.

Discovered and fix pointed out by Michael Olson <redacted>.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix handling of $file_name in feed generation
Jakub Narebski [Fri, 3 Aug 2007 17:50:42 +0000 (19:50 +0200)]
gitweb: Fix handling of $file_name in feed generation

The commit b6093a5c, by Robert Fitzsimons:
  "gitweb: Change atom, rss actions to use parse_commits."
forgot to pass $file_name parameter to parse_commits subroutine.

If git_feed is provided a file name, it ought to show only the history
affecting that file or a directory.  The title was being set
correctly, but all commits from history were being shown.

Signed-off-by: Steven Walter <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: do not choke on recursive symlink
Junio C Hamano [Fri, 27 Jul 2007 08:23:03 +0000 (01:23 -0700)]
gitweb: do not choke on recursive symlink

If somebody used to advertise his repository that physically
resides at /pub/lic.git/ as:

git://git.example.com/pub/lic.git/

but now wants to use --base-path to allow:

git://git.example.com/lic.git/

she can start git-daemon with --base-path option, like this:

git-daemon --base-path=/pub --export-all

During the transition, however, she would also want to allow
older URL as well.  One natural way to achieve that is to create
a symlink:

ln -s /pub /pub/pub

so that a request to git://git.example.com/pub/lic.git/ is first
translated by --base-path to a request to /pub/pub/lic.git/
which goes to /pub/lic.git, thanks to the symlink.

So far so good.

However, gitweb chokes if there is such a symlink (File::Find
barfs with "/pub/pub is a recursive symbolic link").  Make the
code ignore such a symlink.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Allow for multivalued parameters passed to href subroutine
Jakub Narebski [Sat, 28 Jul 2007 23:04:09 +0000 (01:04 +0200)]
gitweb: Allow for multivalued parameters passed to href subroutine

Make it possible to generate URLs with multivalued parameters in the
href() subroutine, via passing reference to array of values.

Example:
  href(action=>"log", extra_options=>["--no-merges", "--first-parent"])

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Simplify 'opt' parameter validation, add "no merges" feeds
Jakub Narebski [Sat, 28 Jul 2007 14:27:32 +0000 (16:27 +0200)]
gitweb: Simplify 'opt' parameter validation, add "no merges" feeds

Simplify and make more readable validation of 'opt' (extra options)
parameter, using exists($hash{key}) instead of grepping keys of a hash
for value.

Move 'opt' parameter to be the last (for now) in the URL.

Make use of '--no-merges' extra option ('opt') by adding "no merges"
RSS and Atom feeds to the HTML header.  Note that alternate format
links in the RSS and Atom views do not use '--no-merges' option yet!

Adds tests for the 'opt' parameter to t9500-gitweb-standalone-no-errors.sh

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Show submodule entries in the 'tree' view
Jakub Narebski [Sat, 28 Jul 2007 14:27:31 +0000 (16:27 +0200)]
gitweb: Show submodule entries in the 'tree' view

Add S_ISGITLINK subroutine and S_IFGITLINK, S_IFINVALID constants.
Add support for "commit" (submodule) entries in the tree object to
mode_str ('m---------', following cgit), file_type and file_type_long
('submodule') subroutines.

There is only link to the history of submodule entry in the
supermodule (current repository) for now, because gitweb doesn't know
where to search for submodule repository objects.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: fix broken snapshot
Junio C Hamano [Wed, 25 Jul 2007 22:49:55 +0000 (15:49 -0700)]
gitweb: fix broken snapshot

Recent updates to snapshot code had a typo that broke the command line to
invoke underlying "git archive" command.  This is a simple typofix for it.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: More detailed error messages for snapshot format
Jakub Narebski [Tue, 24 Jul 2007 23:19:58 +0000 (01:19 +0200)]
gitweb: More detailed error messages for snapshot format

Improve error messages for snapshot format in git_snapshot:
distinguish between situation where snapshots are turned off, where
snapshot format ('sf') parameter is invalid, where given snapshot
format does not exist in %known_snapshot_formats hash, and where
gitweb was given unsupported snapshot format.

While at it, use first from all supported snapshots format as default,
if no snapshot format was provided.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix support for legacy gitweb config for snapshots
Jakub Narebski [Sun, 22 Jul 2007 21:41:20 +0000 (23:41 +0200)]
gitweb: Fix support for legacy gitweb config for snapshots

Earlier commit which cleaned up snapshot support and introduced
support for multiple snapshot formats changed the format of
$feature{'snapshot'}{'default'} (gitweb configuration) and
gitweb.snapshot configuration variable (repository configuration).
It supported old gitweb.snapshot values of 'gzip', 'bzip2' and 'zip'
and tried to support, but failed to do that, old values of
$feature{'snapshot'}{'default'}; at least those corresponding to
old gitweb.snapshot values of 'gzip', 'bzip2' and 'zip', i.e.
  ['x-gzip', 'gz', 'gzip']
  ['x-bzip2', 'bz2', 'bzip2']
  ['x-zip', 'zip', '']

This commit moves legacy configuration support out of feature_snapshot
subroutine to separate filter_snapshot_fmts subroutine. The
filter_snapshot_fmts is used on result on result of
gitweb_check_feature('snapshot').  This way feature_snapshot deals
_only_ with repository config.

As a byproduct you can now use 'gzip' and 'bzip2' as aliases to 'tgz'
and 'tbz2' also in $feature{'snapshot'}{'default'}, not only in
gitweb.snapshot.

While at it do some whitespace cleanup: use tabs for indent, but
spaces for align.

Noticed-by: Matt McCutchen <redacted>
Signed-off-by: Jakub Narebski <redacted>
Tested-by: Matt McCutchen <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: snapshot cleanups & support for offering multiple formats
Matt McCutchen [Sat, 21 Jul 2007 23:30:27 +0000 (01:30 +0200)]
gitweb: snapshot cleanups & support for offering multiple formats

- Centralize knowledge about snapshot formats (mime types, extensions,
  commands) in %known_snapshot_formats and improve how some of that
  information is specified.  In particular, zip files are no longer a
  special case.

- Add support for offering multiple snapshot formats to the user so
  that he/she can download a snapshot in the format he/she prefers.
  The site-wide or project configuration now gives a list of formats
  to offer, and if more than one format is offered, the "_snapshot_"
  link becomes something like "snapshot (_tar.bz2_ _zip_)".

- If only one format is offered, a tooltip on the "_snapshot_" link
  tells the user what it is.

- Fix out-of-date "tarball" -> "archive" in comment.

Alert for gitweb site administrators: This patch changes the format of
$feature{'snapshot'}{'default'} in gitweb_config.perl from a list of
three pieces of information about a single format to a list of one or
more formats you wish to offer from the set ('tgz', 'tbz2', 'zip').
Update your gitweb_config.perl appropriately.  There was taken care
for old-style gitweb configuration to work as it used to, but this
backward compatibility works only for the values which correspond to
gitweb.snapshot values of 'gzip', 'bzip2' and 'zip', i.e.
  ['x-gzip', 'gz', 'gzip']
  ['x-bzip2', 'bz2', 'bzip2']
  ['x-zip', 'zip', '']

The preferred names for gitweb.snapshot in repository configuration
have also changed from 'gzip' and 'bzip2' to 'tgz' and 'tbz2', but
the old names are still recognized for compatibility.

Signed-off-by: Matt McCutchen <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb cleanup: Move @diff_opts declaration earlier
Jakub Narebski [Fri, 20 Jul 2007 00:15:09 +0000 (02:15 +0200)]
gitweb cleanup: Move @diff_opts declaration earlier

Move @diff_opts declaration earlier, so that all gitweb options are
together (and not separated by %feature hash and some subroutines),
with the exception of $GITWEB_CONFIG which must be after all option
variables including %feature hash.

While at it, in the moved comment, note that diff option '-C' implies
'-M', instead of suggesting that '-M', '-C' is required.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: new cgi parameter: opt
Miklos Vajna [Thu, 12 Jul 2007 18:39:27 +0000 (20:39 +0200)]
gitweb: new cgi parameter: opt

Currently the only supported value is '--no-merges' for the 'rss', 'atom',
'log', 'shortlog' and 'history' actions, but it can be easily extended to allow
other parameters for other actions.

Signed-off-by: Miklos Vajna <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: configurable width for the projects list Description column
Michael Hendricks [Thu, 5 Jul 2007 00:36:48 +0000 (18:36 -0600)]
gitweb: configurable width for the projects list Description column

This allows gitweb users to set $projects_list_description_width
in their gitweb.conf to determine how many characters of a project
description are displayed before being truncated with an ellipsis.

Signed-off-by: Michael Hendricks <redacted>
Acked-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: make "No commits" in project list gray, not bold green
Matt McCutchen [Thu, 28 Jun 2007 22:15:22 +0000 (18:15 -0400)]
gitweb: make "No commits" in project list gray, not bold green

A missing return statement in git_get_last_activity made gitweb think
a project with no commits was in age class "age0", so the "No commits"
appeared in bold green, which was ridiculous.  I added the return so
those projects get "noage" and added a block to gitweb.css to format
the "No commits" text gray.

Signed-off-by: Matt McCutchen <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: make search form generate pathinfo-style URLs
Matt McCutchen [Thu, 28 Jun 2007 18:57:07 +0000 (14:57 -0400)]
gitweb: make search form generate pathinfo-style URLs

The search form generated traditional-style URLs with a "p=" parameter
even when the pathinfo feature was on.  This patch makes it generate
pathinfo-style URLs when appropriate.

Signed-off-by: Matt McCutchen <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: prefer git_get_project_owner() over get_file_owner()
Miklos Vajna [Tue, 3 Jul 2007 22:11:23 +0000 (00:11 +0200)]
gitweb: prefer git_get_project_owner() over get_file_owner()

This way if $projects_list exists, it'll be used, otherwise get_file_owner()
will be used as before.

Signed-off-by: Miklos Vajna <redacted>
Acked-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: make repeated calls to git_get_project_owner() bearable
Junio C Hamano [Wed, 4 Jul 2007 05:10:42 +0000 (22:10 -0700)]
gitweb: make repeated calls to git_get_project_owner() bearable

If repeated calls to git_get_project_owner() are made, we would have read the
same file over and over again.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: change filename/directory name of snapshots
Matthias Lederhofer [Thu, 7 Jun 2007 09:27:08 +0000 (11:27 +0200)]
gitweb: change filename/directory name of snapshots

/.git or .git is removed from the project name and the
basename of the remaining path is used as the beginning of
the filename and as the directory in the archive.

The regexp will actually not strip off /.git or .git if there
wouldn't be anything left after removing it.

Currently the full project name is used as directory in the
archive and the basename is used as filename.  For example a
repository named foo/bar/.git will have a archive named
.git-<version>.* and extract to foo/bar/.git.  With this patch
the file is named bar-<version>.* and extracts to bar.

Signed-off-by: Matthias Lederhofer <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: '--cc' for merges in 'commitdiff' view
Jakub Narebski [Fri, 8 Jun 2007 11:33:28 +0000 (13:33 +0200)]
gitweb: '--cc' for merges in 'commitdiff' view

Allow choosing between '-c' (combined diff) and '--cc' (compact
combined) diff format in 'commitdiff' view for merge (multiparent)
commits.  Default is now '--cc'.

In the bottom part of navigation bar there is link allowing to change
diff format: "combined" for '-c' (when using '--cc') and "compact" for
'--cc' (when using '-c'), just on the right of "raw" link to
'commitdiff_plain" view.

About patchset part of diff --cc output: the difftree (whatchanged
table) has "patch" links to anchors to individual patches (on the same
page). The --cc option further compresses the patch output by
omitting some hunks; when this optimization makes all hunks disappear,
the patch is not shown (like in any other "empty diff" case). But the
fact that patch has been simplified out is not reflected in the raw
(difftree) part of diff output; the raw part is the same for '-c' and
'--cc' options. As correcting difftree is rather out of the question,
as it would require scanning patchset part before writing out
difftree, we add "Simple merge" empty diffs as a place to have anchor
to in place of those simplified out and removed patches.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add links to blobdiffs in from-file/to-file header for merges
Jakub Narebski [Fri, 8 Jun 2007 11:32:44 +0000 (13:32 +0200)]
gitweb: Add links to blobdiffs in from-file/to-file header for merges

Add links to diff to file ('blobdiff' view) for each of individual
versions of the file in a merge commit to the from-file/to-file header
in the patch part of combined 'commitdiff' view for merges.

The from-file/to-file header for combined diff now looks like:

  --- _1_/_git-gui/git-gui.sh_
  --- _2_/_git-gui.sh_
  +++ b/_git-gui/git-gui.sh_

where _<filename>_ link is link to appropriate version of a file
('blob' view), and _<n>_ is link to respective diff to mentioned
version of a file ('blobdiff' view). There is even hint provided in
the form of title attribute.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Create special from-file/to-file header for combined diff
Jakub Narebski [Fri, 8 Jun 2007 11:29:49 +0000 (13:29 +0200)]
gitweb: Create special from-file/to-file header for combined diff

Instead of using default, diff(1) like from-file/to-file header for
combined diff (for a merge commit), which looks like:

  --- a/git-gui/git-gui.sh
  +++ b/_git-gui/git-gui.sh_

(where _link_ denotes [hidden] hyperlink), create from-file(n)/to-file
header, using "--- <n>/_<filename>_" for each of parents, e.g.:

  --- 1/_git-gui/git-gui.sh_
  --- 2/_git-gui.sh_
  +++ b/_git-gui/git-gui.sh_

Test it on one of merge commits involving rename, e.g.
  95f97567c1887d77f3a46b42d8622c76414d964d (rename at top)
  5bac4a671907604b5fb4e24ff682d5b0e8431931 (file from one branch)

This is mainly meant to easier see renames in a merge commit.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Split git_patchset_body into separate subroutines
Jakub Narebski [Fri, 8 Jun 2007 11:27:42 +0000 (13:27 +0200)]
gitweb: Split git_patchset_body into separate subroutines

This commit makes git_patchset_body easier to read, and reduces level of
nesting and indent level. It adds more lines that it removes because of
extra parameter passing in subroutines, and subroutine calls in
git_patchset_body. Also because there are few added comments.

Below there are descriptions of all split-off subroutines:

Separate formatting "git diff" header into format_git_diff_header_line.
While at it fix it so it always escapes pathname. It would be even more
useful if we decide to use `--cc' for merges, and need to generate by
hand empty patches for anchors.

Separate formatting extended (git) diff header lines into
format_extended_diff_header_line. This one is copied without changes.

Separate formatting two-lines from-file/to-file diff header into
format_diff_from_to_header subroutine. While at it fix it so it always
escapes pathname. Beware calling convention: it takes _two_ lines.

Separate generating %from and %to hashes (with info used among others to
generate hyperlinks) into parse_from_to_diffinfo subroutine. This one is
copied without changes.

Separate checking if file was deleted (and among others therefore does
not have link to the result file) into is_deleted subroutine. This would
allow us to easily change the algotithm to find if file is_deleted in
the result.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Improve "next" link in commitdiff view
Jakub Narebski [Fri, 8 Jun 2007 11:26:31 +0000 (13:26 +0200)]
gitweb: Improve "next" link in commitdiff view

Check if 'hp' (hash_parent) parameter to 'commitdiff' view is one of
'h' (hash) commit parents, i.e. if commitdiff is of the form
"<commit>^<n> <commit>", and mark it as such in the bottom part of
navigation bar. The "next" link in commitdiff view was introduced
in commit 151602df00b8e5c5b4a8193f59a94b85f9b5aebc

If 'hb' is n-th parent of 'h', show the following at the bottom
of navigation bar:
  (from parent n: _commit_)

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Provide links to commitdiff to each parent in 'commitdiff' view
Jakub Narebski [Fri, 8 Jun 2007 11:24:56 +0000 (13:24 +0200)]
gitweb: Provide links to commitdiff to each parent in 'commitdiff' view

Since commit-fb1dde4a we show combined diff for merges in 'commitdiff'
view, and since commit-208ecb2e also in 'commit' view. Sometimes
though one would want to see diff to one of merge commit parents. It
is easy in 'commit' view: in the commit header part there are "diff"
links for each of parent header. This commit adds such links also for
'commitdiff' view.

Add to difftree / whatchanged table row with "1", "2", ... links to
'commitdiff' view for diff with n-th parent for merge commits, as a
table header.  This is visible only in 'comitdiff' view, and only for
a merge commit (comit with more than one parent).

To save space links are shown as "n", where "n" is number of a parent,
and not as for example shortened (to 7 characters) sha1 of a parent
commit.  To make it easier to discover what links is for, each link
has 'title' attribute explaining the link.

Note that one would need to remember that difftree table in 'commit'
view has one less column (it doesn't have "patch" link column), if one
would want to add such table header also in 'commit' view.

Example output:
                          1       2       3
  Makefile      patch | diff1 | diff2 | diff3 | blob | history
  cache.h       patch | diff1 | diff2 | diff3 | blob | history

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agoWar on whitespace
Junio C Hamano [Thu, 7 Jun 2007 07:04:01 +0000 (00:04 -0700)]
War on whitespace

This uses "git-apply --whitespace=strip" to fix whitespace errors that have
crept in to our source files over time.  There are a few files that need
to have trailing whitespaces (most notably, test vectors).  The results
still passes the test, and build result in Documentation/ area is unchanged.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Handle non UTF-8 text better
Martin Koegler [Sun, 3 Jun 2007 15:42:44 +0000 (17:42 +0200)]
gitweb: Handle non UTF-8 text better

gitweb assumes that everything is in UTF-8. If a text contains invalid
UTF-8 character sequences, the text must be in a different encoding.

This commit introduces $fallback_encoding which would be used as input
encoding if gitweb encounters text with is not valid UTF-8.

Add basic test for this in t/t9500-gitweb-standalone-no-errors.sh

Signed-off-by: Martin Koegler <redacted>
Signed-off-by: Jakub Narebski <redacted>
Tested-by: Alexandre Julliard <redacted>
Tested-by: Ismail Dönmez <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb.perl - Optionally send archives as .zip files
Mark Levedahl [Sun, 20 May 2007 15:46:46 +0000 (11:46 -0400)]
gitweb.perl - Optionally send archives as .zip files

git-archive already knows how to generate an archive as a tar or a zip
file, but gitweb did not. zip archvies are much more usable in a Windows
environment due to native support and this patch allows a site admin the
option to deliver zip rather than tar files. The selection is done by
inserting

    $feature{'snapshot'}{'default'} = ['x-zip', 'zip', ''];

in gitweb_config.perl.

Tar files remain the default option.

Signed-off-by: Mark Levedahl <redacted>
Acked-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix "Use of uninitialized value" warning in git_feed
Jakub Narebski [Sat, 19 May 2007 00:47:51 +0000 (02:47 +0200)]
gitweb: Fix "Use of uninitialized value" warning in git_feed

Initial (root) commit has no parents, and $co{'parent'} is
undefined. Use '--root' for initial commit.

This fixes "Use of uninitialized value in open at gitweb/gitweb.perl
line 4925." warning.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Remove redundant $searchtype setup
Petr Baudis [Fri, 18 May 2007 23:12:32 +0000 (01:12 +0200)]
gitweb: Remove redundant $searchtype setup

Sorry, this was inadverently introduced by my grep search patch. It causes
annoying "redefined" warnings.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Allow arbitrary strings to be dug with pickaxe
Petr Baudis [Thu, 17 May 2007 02:30:42 +0000 (04:30 +0200)]
gitweb: Allow arbitrary strings to be dug with pickaxe

Currently, there are rather draconian restrictions on the strings accepted
by the pickaxe search, which degrades its usefulness for digging in code
significantly. This patch remedies mentioned limitation.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add support for grep searches
Petr Baudis [Thu, 17 May 2007 02:31:12 +0000 (04:31 +0200)]
gitweb: Add support for grep searches

The 'grep' type of search greps the currently selected tree for given
regexp and shows the results in a fancy table with links into blob view.
The number of shown matches is limited to 1000 and the whole feature
can be turned off (grepping linux-2.6.git already makes repo.or.cz a bit
unhappy).

This second revision makes it in documentation explicit that grep accepts
regexps, and makes grep accept extended regexps instead of basic regexps.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Normalize searchbar font size
Petr Baudis [Thu, 17 May 2007 02:24:19 +0000 (04:24 +0200)]
gitweb: Normalize searchbar font size

Currently, searchbar font was as big as the page heading font, because
font-size was made relative - but to the parent element, which was for some
reason indeed page_header. Since that seems to be illogical to me, I just
moved the div.search outside of div.page_header. I'm no CSS/DOM expert but
no adverse effects were observed by me.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix error in git_patchset_body for deletion in merge commit
Jakub Narebski [Thu, 17 May 2007 20:54:28 +0000 (22:54 +0200)]
gitweb: Fix error in git_patchset_body for deletion in merge commit

Checking if $diffinfo->{'status'} is equal 'D' is no longer the way to
check if the file was deleted in result.  For merge commits
$diffinfo->{'status'} is reference to array of statuses for each
parent.  Use the fact that $diffinfo->{'to_id'} is all zeros as sign
that file was deleted in result.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: fix another use of undefined value
Junio C Hamano [Thu, 17 May 2007 04:04:16 +0000 (21:04 -0700)]
gitweb: fix another use of undefined value

Pasky and Jakub competed fixing these and in the confusion this ended up
not being covered.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Empty patch for merge means trivial merge, not no differences
Jakub Narebski [Wed, 16 May 2007 22:05:55 +0000 (00:05 +0200)]
gitweb: Empty patch for merge means trivial merge, not no differences

Earlier commit 4280cde95fa4e3fb012eb6d0c239a7777baaf60c made gitweb
show "No differences found" message for empty diff, for the HTML
output. But for merge commits, either -c format we use or --cc format,
empty diff doesn't mean no differences, but trivial merge.

Show "Trivial merge" message instead of "No differences found" for
merges.

While at it reword conditional in the code for easier reading.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Separate search regexp from search text
Jakub Narebski [Tue, 15 May 2007 23:56:10 +0000 (01:56 +0200)]
gitweb: Separate search regexp from search text

Separate search text, which is saved in $searchtext global variable,
and is used in links, as default value for the textfield in search
form, and for pickaxe search, from search regexp, which is saved in
$search_regexp global variable, and is used as parameter to --grep,
--committer or --author options to git-rev-list, and for searching
commit body in gitweb.  For now $search_regexp is unconditionallt
equal to quotemeta($searchtext), meaning that we always search for
fixed string.

This fixes bug where 'next page' links for 'search' view didn't work
for searchtext containing quotable characters, like `@'.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Do not use absolute font sizes
Jakub Narebski [Tue, 15 May 2007 23:59:55 +0000 (01:59 +0200)]
gitweb: Do not use absolute font sizes

David Kågedal proposed that gitweb should explicitely request
being somewhat smaller than normal, because it has good use for
long lines. However gitweb presents a table with several
columns, so having wider line is OK for it. Therefore explicit
'font-size: small' would make sense.  Apparently many people on
the list seem to agree with him.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add a few comments about %feature hash
Jakub Narebski [Mon, 14 May 2007 23:55:44 +0000 (01:55 +0200)]
gitweb: Add a few comments about %feature hash

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix "Use of unitialized value" warnings in empty repository
Jakub Narebski [Sun, 13 May 2007 10:39:22 +0000 (12:39 +0200)]
gitweb: Fix "Use of unitialized value" warnings in empty repository

Fix it so gitweb doesn't write "Use of unitialized value..." warnings
(which gets written in web server logs) for empty (no commits)
repository.

In empty repository "last change" (last activity) doesn't make sense;
also there is no sense in parsing commits which aren't there.

In projects list for empty repositories gitweb now writes "No commits"
using "noage" class, instead of leaving cell empty, in the last change
column.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Check if requested object exists
Jakub Narebski [Sat, 12 May 2007 19:16:34 +0000 (21:16 +0200)]
gitweb: Check if requested object exists

Try to avoid "Use of uninitialized value ..." errors caused by bad
revision, incorrect filename, wrong object id, bad file etc. (wrong
value of 'h', 'hb', 'f', etc. parameters). This avoids polluting web
server errors log.

Correct git_get_hash_by_path and parse_commit_text (and, in turn,
parse_commit) to return undef if object does not exist.  Check in
git_tag if requested tag exists.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Test if $from_id and $to_id are defined before comparison
Jakub Narebski [Sat, 12 May 2007 10:42:32 +0000 (12:42 +0200)]
gitweb: Test if $from_id and $to_id are defined before comparison

Get rid of "Use of uninitialized value in string eq at
gitweb/gitweb.perl line 2320" warning caused by the fact that "empty"
patches, consisting only of extended git diff header and with patch
body empty, such as patch for pure rename, does not have "index" line
in extended diff header.  For such patches $from_id and $to_id, filled
from parsing extended diff header, are undefined.  But such patches
cannot be continuation patches.

Test if $from_id and $to_id are defined before comparing them with
$diffinfo.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Do not use absolute font sizes
Petr Baudis [Wed, 9 May 2007 01:41:50 +0000 (03:41 +0200)]
gitweb: Do not use absolute font sizes

Avoid specifying font sizes in pixels, since that is just pure evil.
Pointed out by Chris Riddoch.

Note that this is pretty much just a proposal; I didn't test if everything
fits perfectly right, but things seem to be pretty much okay. repo.or.cz
uses it now as a test drive - if you find any visual quirks, please point
them out, with a patch if possible since I'm total CSS noob and debugging
CSS is an extremely painful experience for me.

Note that this patch actually does change visual look of gitweb in Firefox
with my resolution and default settings - everything is bigger and I can't
explain the joy of actually seeing gitweb text that is in _readable_ size;
also, my horizontal screen real estate feels better used now. But judging
from the look of most modern webpages on the 'net, most people prefer
reading the web with strained eyes and/or a magnifying glass (I wonder what
species of scientists should look into this mystifying phenomenon) - so,
please tell us what you think.

Maybe we might want to get rid of absolute sizes other than font sizes in
the CSS file too in the long term.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: choose appropriate view for file type if a= parameter missing
Gerrit Pape [Thu, 10 May 2007 07:32:07 +0000 (07:32 +0000)]
gitweb: choose appropriate view for file type if a= parameter missing

gitweb URLs use the a= parameter for the view to use on the given path, such
as "blob" or "tree".  Currently, if a gitweb URL omits the a= parameter,
gitweb just shows the top-level repository summary, regardless of the path
given.  gitweb could instead choose an appropriate view based on the file
type: blob for blobs (files), tree for trees (directories), and summary if
no path given (the URL included no f= parameter, or an empty f= parameter).

Apart from making gitweb more robust and supporting URL editing more easily,
this change would aid the creation of shortcuts to git repositories using
simple substitution, such as:
http://example.org/git/?p=path/to/repo.git;hb=HEAD;f=%s

With this patch, if given the hash through the h= parameter, or the hash
base (hb=) and a filename (f=), gitweb uses cat-file -t to automatically set
the a= parameter.

This feature was requested by Josh Triplett through
 http://bugs.debian.org/410465

Signed-off-by: Gerrit Pape <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Show combined diff for merge commits in 'commit' view
Jakub Narebski [Sun, 6 May 2007 23:10:08 +0000 (01:10 +0200)]
gitweb: Show combined diff for merge commits in 'commit' view

When commit shown is a merge commit (has more than one parent),
display combined difftree output (result of git-diff-tree -c).
Earlier (since commit 549ab4a30703012ff3a12b5455d319216805a8db)
difftree output (against first parent) was not printed for merges.

Examples of non-trivial merges:
  5bac4a671907604b5fb4e24ff682d5b0e8431931 (includes rename)
  addafaf92eeb86033da91323d0d3ad7a496dae83 (five parents)
  95f97567c1887d77f3a46b42d8622c76414d964d (evil merge)

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Show combined diff for merge commits in 'commitdiff' view
Jakub Narebski [Sun, 6 May 2007 23:10:07 +0000 (01:10 +0200)]
gitweb: Show combined diff for merge commits in 'commitdiff' view

When 'commitdiff' action is requested without 'hp' (hash parent)
parameter, and commit given by 'h' (hash) parameter is merge commit,
show merge as combined diff.

Earlier for merge commits without 'hp' parameter diff to first parent
was shown.

Note that in compact combined (--cc) format 'uninteresting' hunks
omission mechanism can make that there is no patch corresponding to
line in raw format (difftree) output. That is why (at least for now)
we use --combined and not --cc format for showing commitdiff for merge
commits.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Make it possible to use pre-parsed info in git_difftree_body
Jakub Narebski [Sun, 6 May 2007 23:10:06 +0000 (01:10 +0200)]
gitweb: Make it possible to use pre-parsed info in git_difftree_body

Make it possible to use pre-parsed, or generated by hand, difftree
info in git_difftree_body, similarly to how was and is it done in
git_patchset_body.

Use just introduced feature in git_commitdiff to parse difftree info
(raw diff output) only once: difftree info is now parsed in
git_commitdiff directly, and parsed information is passed to both
git_difftree_body and git_patchset_body. (Till now only git_blobdiff
made use of git_patchset_body ability to use pre-parsed or hand
generated info.) Additionally this makes rename info for combined diff
with renames (or copies) calculated only once in git_difftree_body;
the $difftree is modified and git_patchset_body makes use of added
info.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add combined diff support to git_patchset_body
Jakub Narebski [Sun, 6 May 2007 23:10:05 +0000 (01:10 +0200)]
gitweb: Add combined diff support to git_patchset_body

Calling convention for combined diff similar to the one for
git_difftree_body subroutine: difftree info (first parameter) must be
result of calling git-diff-tree with -c/--cc option, and all parents
of a commit must be passed as last parameters. See also description in
  "gitweb: Add combined diff support to git_difftree_body"

This ability is not used yet.

Generating "src" file name for renames in combined diff was separated
into fill_from_file_info subroutine; git_difftree_body was modified to
use it. Currently git_difftree_body and git_patchset_body fills this
info separately.

The from-file line in two-line from-file/to-file header is not
hyperlinked: there can be more than one "from"/"src" file. This
differs from HTML output of ordinary (not combined) diff.

format_diff_line subroutine needs extra $from/$to parameters to format
combined diff patch line correctly.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add combined diff support to git_difftree_body
Jakub Narebski [Sun, 6 May 2007 23:10:04 +0000 (01:10 +0200)]
gitweb: Add combined diff support to git_difftree_body

You have to pass all parents as final parameters of git_difftree_body
subroutine; the number of parents of a diff must be equal to the
number derived from parsing git-diff-tree output, raw combined diff
for git_difftree_body to display combined diff correctly (but it is
not checked).

Currently the possibility of displaying diffree of combined diff is
not used in gitweb code; git_difftree_body is always caled for
ordinary diff, and with only one parent.

Description of output for combined diff:
----------------------------------------

The difftree table for combined diff starts with a cell with pathname
of changed blob (changed file), which if possible is hidden link
(class="list") to the 'blob' view of final version (if it exists),
like for difftree for ordinary diff. If file was deleted in the final
commit then filename is not hyperlinked.

There is no cell with single file status (new, deleted, mode change,
rename), as for combined diff as there is no single status: different
parents might have different status.

If git_difftree_body was called from git_commitdiff (for 'commitdiff'
action) there is inner link to anchor to appropriate fragment (patch)
in patchset body; the "patch" link does not replace "diff" link like
for ordinary diff.

Each of "diff" links is in separate cell, contrary to output for
ordinary diff in which all links are (at least for now) in a single
cell.

For each parent, if file was not present we leave cell empty. If file
was deleted in the result, we provide link to 'blob' view. Otherwise
we provide link to 'commitdiff' view, even if patch (diff) consist
only of extended diff header, and contents is not changed (pure
rename, pure mode change). The only difference is that link to
"blobdiff" view with no contents change is with 'nochange' class.

At last, there is provided link to current version of file as "blob"
link, if the file was not deleted in the result, and lik to history of
a file, if there exists one. (The link to file history might be
confused, at least for now, by renames.)

Note that git-diff-tree raw output dor combined diff does not provide
filename before change for renames and copies; we use
git_get_path_by_hash to get "src" filename for renames (this means
additional call to git-ls-tree for a _whole_ tree).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add parsing of raw combined diff format to parse_difftree_raw_line
Jakub Narebski [Sun, 6 May 2007 23:10:03 +0000 (01:10 +0200)]
gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line

Add parsing line of raw combined diff ("git diff-tree -c/-cc" output)
as described in section "diff format for merges" in diff-format.txt
to parse_difftree_raw_line subroutine.

Returned hash (or hashref) has for combined diff 'nparents' key which
holds number of parents in a merge. At keys 'from_mode' and 'from_id'
there are arrayrefs holding modes and ids, respectively. There is no
'similarity' value, and there is only 'to_file' value and no
'from_file' value.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: use decode_utf8 directly
Ismail Dönmez [Tue, 1 May 2007 21:12:13 +0000 (00:12 +0300)]
gitweb: use decode_utf8 directly

Using decode() tries to decode data that is already UTF-8 and
borks, but decode_utf8 from Encode.pm has a built-in safety
against that.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Show "no difference" message for empty diff
Martin Koegler [Mon, 23 Apr 2007 05:49:25 +0000 (22:49 -0700)]
gitweb: Show "no difference" message for empty diff

Currently, gitweb shows only header and footer, if no differences are
found. This patch adds a "No differences found" message for the html
output.

Signed-off-by: Martin Koegler <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Allow configuring the default projects order and add order 'none'
Frank Lichtenheld [Fri, 6 Apr 2007 21:58:24 +0000 (23:58 +0200)]
gitweb: Allow configuring the default projects order and add order 'none'

Introduce new configuration variable $default_projects_order
that can be used to specify the default order of projects on
the index page if no 'o' parameter is given.

Allow a new value 'none' for order that will cause the projects
to be in the order we learned about them. In case of reading the
list of projects from a file, this should be the order as they are
listed in the file. In case of reading the list of projects from
a directory this will probably give random results depending on the
filesystem in use.

Signed-off-by: Frank Lichtenheld <redacted>
Acked-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Allow forks with project list file
Frank Lichtenheld [Fri, 6 Apr 2007 21:58:11 +0000 (23:58 +0200)]
gitweb: Allow forks with project list file

Make it possible to use the forks feature even when
reading the list of projects from a file, by creating
a list of known prefixes as we go. Forks have to be
listed after the main project in order to be recognised
as such.

Signed-off-by: Frank Lichtenheld <redacted>
Acked-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches
Jakub Narebski [Thu, 5 Apr 2007 11:45:41 +0000 (13:45 +0200)]
gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches

git_patchset_body needs patch generated with --full-index option to
detect split patches, meaning two patches which corresponds to single
difftree (raw diff) entry.  An example of such situation is changing
type (mode) of a file, e.g. from plain file to symbolic link.

Add, in git_blobdiff, --full-index option to patch generating git diff
invocation, for the 'html' format output ("blobdiff" view).

"blobdiff_plain" still uses shortened sha1 in the extended git diff
header "index <hash>..<hash>[ <mode>]" line.

Noticed-by: Martin Koegler <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Quote hash keys, and do not use barewords keys
Jakub Narebski [Sun, 1 Apr 2007 20:22:21 +0000 (22:22 +0200)]
gitweb: Quote hash keys, and do not use barewords keys

Ensure that in all references to an element of a hash, the
key is singlequoted, instead of using bareword: use $hash{'key'}
instead of $hash{key}

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Whitespace cleanup - tabs are for indent, spaces are for align (3)
Jakub Narebski [Sun, 1 Apr 2007 20:21:38 +0000 (22:21 +0200)]
gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (3)

Code should be look the same way, regardless of tab size.
Use tabs for indent, but spaces for align.

Indent continued part of command spanning multiple lines, but only once.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Support comparing blobs (files) with different names
Jakub Narebski [Fri, 30 Mar 2007 21:41:26 +0000 (23:41 +0200)]
gitweb: Support comparing blobs (files) with different names

Fix the bug that caused "blobdiff" view called with new style URI
for a rename with change diff to be show as new (added) file diff.

New style URI for "blobdiff" for rename means with $hash_base ('hb') and
$hash_parent_base ('hpb') paramaters denoting tree-ish (usually commit)
of a blobs being compared, together with both $file_name ('f') and
$file_parent ('fp') parameters.

It is done by adding $file_parent ('fp') to the path limiter, meaning
that diff command becomes:

git diff-tree [options] hpb hb -- fp f

Other option would be finding hash of a blob using git_get_hash_by_path
subroutine and comparing blobs using git-diff, or using extended SHA-1
syntax and compare blobs using git-diff:

git diff [options] hpb:fp hp:f

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Cleanup and uniquify die_error calls
Jakub Narebski [Tue, 27 Mar 2007 00:07:11 +0000 (02:07 +0200)]
gitweb: Cleanup and uniquify die_error calls

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add example of config file and how to generate projects list to gitweb/INSTALL
Jakub Narebski [Mon, 26 Mar 2007 01:34:41 +0000 (02:34 +0100)]
gitweb: Add example of config file and how to generate projects list to gitweb/INSTALL

Add simple example of config file (turning on and allowing override of
a few %features). Also example config file and script to generate list
of projects in a format that can be used as GITWEB_LIST / $projects_list.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Add some installation notes in gitweb/INSTALL
Jakub Narebski [Sat, 24 Mar 2007 19:59:53 +0000 (20:59 +0100)]
gitweb: Add some installation notes in gitweb/INSTALL

Add some installation and configuration notes for gitweb in
gitweb/INSTALL. Make use of filling gitweb configuration by
Makefile.

It does not cover (yet?) all the configuration variables and
options.

Some of contents duplicates information in gitweb/README file
(it is referred from gitweb/INSTALL).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix not marking signoff lines in "log" view
Jakub Narebski [Sat, 24 Mar 2007 19:59:13 +0000 (20:59 +0100)]
gitweb: Fix not marking signoff lines in "log" view

The CSS selector for signoff lines style was too strict: in the "log"
view the commit message is not encompassed in container "page_body"
div.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Don't escape attributes in CGI.pm HTML methods
Jakub Narebski [Wed, 7 Mar 2007 01:21:25 +0000 (02:21 +0100)]
gitweb: Don't escape attributes in CGI.pm HTML methods

There is no need to escape HTML tag's attributes in CGI.pm
HTML methods (like CGI::a()), because CGI.pm does attribute
escaping automatically.

  $cgi->a({ ... -attribute => atribute_value }, tag_contents)

is translated to

  <a ... attribute="attribute_value">tag_contents</a>

The rules for escaping attribute values (which are string contents) are
different. For example you have to take care about escaping embedded '"'
and "'" characters; CGI::a() does that for us automatically.

CGI::a() does not HTML escape tag_contents; we would need to write

  <a href="URL">some <b>bold</b> text</a>

for example. So we use esc_html (or esc_path) to escape tag_contents
as needed.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Change to use explicitly function call cgi->escapHTML()
Li Yang [Tue, 6 Mar 2007 03:58:56 +0000 (11:58 +0800)]
gitweb: Change to use explicitly function call cgi->escapHTML()

Change to use explicitly function call cgi->escapHTML().
This fix the problem on some systems that escapeHTML() is not
functioning, as default CGI is not setting 'escape' parameter.

Signed-off-by: Li Yang <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Fix "next" link in commit view
Jakub Narebski [Fri, 23 Mar 2007 20:04:31 +0000 (21:04 +0100)]
gitweb: Fix "next" link in commit view

Fix copy'n'paste error in commit c9d193df which caused that "next"
link for merge commits in "commit" view
  (merge: _commit_ _commit_ ...)
was to "commitdiff" view instead of being to "commit" view.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: fix mismatched parenthesis
Junio C Hamano [Tue, 6 Feb 2007 09:09:32 +0000 (01:09 -0800)]
gitweb: fix mismatched parenthesis

An earlier commit 04179418 broke gitweb.  Badly.

Signed-off-by: Junio C Hamano <redacted>
29 hours agogitweb: Convert project name to UTF-8
Yasushi SHOJI [Tue, 30 Jan 2007 10:23:38 +0000 (19:23 +0900)]
gitweb: Convert project name to UTF-8

If the repository directory name is in non-ascii, $project needs to be
converted from perl internal to utf-8 because it will be used as
title, page path, and snapshot filename.

use to_utf8() to do the conversion.

Signed-off-by: Junio C Hamano <redacted>
29 hours agoAssorted typo fixes
Pavel Roskin [Sun, 4 Feb 2007 04:49:16 +0000 (23:49 -0500)]
Assorted typo fixes

Signed-off-by: Junio C Hamano <redacted>
29 hours agoRename git-repo-config to git-config.
Tom Prince [Mon, 29 Jan 2007 00:16:53 +0000 (16:16 -0800)]
Rename git-repo-config to git-config.

Signed-off-by: Tom Prince <redacted>
Signed-off-by: Junio C Hamano <redacted>
This page took 0.868464 seconds and 4 git commands to generate.