]> Lady’s Gitweb - Gitweb/log
Gitweb
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 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>
30 hours agogitweb: Fix git_patchset_body not closing <div class="patch">
Jakub Narebski [Tue, 9 Jan 2007 23:07:43 +0000 (00:07 +0100)]
gitweb: Fix git_patchset_body not closing <div class="patch">

Fix case when git_patchset_body didn't close <div class="patch">,
for patchsets with last patch empty.

This patch also removes some commented out code in git_patchset_body.

Signed-off-by: Jakub Narebski <redacted>
Acked-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Remove superfluous "|" in "commit" view
Jakub Narebski [Mon, 8 Jan 2007 01:10:42 +0000 (02:10 +0100)]
gitweb: Remove superfluous "|" in "commit" view

Remove superfluous trailing "|" separator from difftree part of "commit"
view for new files (created in given commit).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix split patches output (e.g. file to symlink)
Jakub Narebski [Sun, 7 Jan 2007 01:52:27 +0000 (02:52 +0100)]
gitweb: Fix split patches output (e.g. file to symlink)

Do not replace /dev/null in two-line from-file/to-file diff header for
split patches ("split" patch mean more than one patch per one
diff-tree raw line) by a/file or b/file link.

Split patches differ from pair of deletion/creation patch in git diff
header: both a/file and b/file are hyperlinks, in all patches in a
split.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agoRevert "gitweb: There can be empty patches (in git_patchset_body)"
Jakub Narebski [Sun, 7 Jan 2007 01:52:26 +0000 (02:52 +0100)]
Revert "gitweb: There can be empty patches (in git_patchset_body)"

This reverts commit 1ebb948f656c03a5bdaab4de1a113b9ffcb98bea,
as that patch quieted warning but was not proper solution.
The previous commit was.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix errors in git_patchset_body for empty patches
Jakub Narebski [Sun, 7 Jan 2007 01:52:25 +0000 (02:52 +0100)]
gitweb: Fix errors in git_patchset_body for empty patches

We now do not skip over empty patches in git_patchset_body (where
empty means that they consist only of git diff header, and of extended
diff header, for example "pure rename" patch).  This means that after
extended diff header there can be next patch (i.e. /^diff /) or end of
patchset, and not necessary patch body (i.e. /^--- /).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix error in "rename to"/"copy to" git diff header output
Jakub Narebski [Sun, 7 Jan 2007 01:52:24 +0000 (02:52 +0100)]
gitweb: Fix error in "rename to"/"copy to" git diff header output

Fix error in git_patchset_body subroutine, which caused "rename to"/"copy
to" line in extended diff header to be displayed incorrectly.

While at it, fix align.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix error in git_patchest_body for file creation/deletion patch
Jakub Narebski [Sun, 7 Jan 2007 01:52:23 +0000 (02:52 +0100)]
gitweb: Fix error in git_patchest_body for file creation/deletion patch

$from_id, $to_id variables should be local per PATCH.

Fix error in git_patchset_body for file creation (deletion) patches,
where instead of /dev/null as from-file (to-file) diff header line, it
had link to previous file with current file name.  This error occured
only if there was another patch before file creation (deletion) patch.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agoBlame "linenr" link jumps to previous state at "orig_lineno"
Luben Tuikov [Fri, 5 Jan 2007 02:37:45 +0000 (18:37 -0800)]
Blame "linenr" link jumps to previous state at "orig_lineno"

Blame currently displays the commit id which introduced a
block of one or more lines, the line numbers wrt the current
listing of the file and the file's line contents.

The commit id displayed is hyperlinked to the commit.

Currently the linenr links are hyperlinked to the same
commit id displayed to the left, which is _no_ different
than the block of lines displayed, since it is the _same
commit_ that is hyperlinked.  And thus clicking on it leads
to the same state of the file for that chunk of
lines. I.e. data mining is not currently possible with
gitweb given a chunk of lines introduced by a commit.

This patch makes such data mining possible.

The line numbers are now hyperlinked to the parent of the
commit id of the block of lines.  Furthermore they are
linked to the line where that block was introduced.

Thus clicking on a linenr link will show you the file's
line(s) state prior to the commit id you were viewing.

So clicking continually on a linenr link shows you how this
line and its line number changed over time, leading to the
initial commit where it was first introduced.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix "Use of uninitialized value" warning in git_tags_body
Jakub Narebski [Wed, 3 Jan 2007 21:54:29 +0000 (22:54 +0100)]
gitweb: Fix "Use of uninitialized value" warning in git_tags_body

Fix "Use of uninitialized value" warning in git_tags_body generated
for lightweight tags of tree and blob object; those don't have age
($tag{'age'}) defined.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix shortlog only showing HEAD revision.
Robert Fitzsimons [Wed, 3 Jan 2007 20:25:55 +0000 (20:25 +0000)]
gitweb: Fix shortlog only showing HEAD revision.

My change in 190d7fdcf325bb444fa806f09ebbb403a4ae4ee6 had a small bug
found by Michael Krufky which caused the passed in hash value to be
ignored, so shortlog would only show the HEAD revision.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: There can be empty patches (in git_patchset_body)
Jakub Narebski [Wed, 3 Jan 2007 19:47:25 +0000 (20:47 +0100)]
gitweb: There can be empty patches (in git_patchset_body)

We now do not skip over empty patches in git_patchset_body
(where empty means that they consist only of git diff header,
and of extended diff header), so uncomment branch of code dealing
with empty patches (patches which do not have even two-line
from/to header)

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix bug in git_difftree_body (was '!=' instead of 'ne')
Jakub Narebski [Wed, 3 Jan 2007 19:47:24 +0000 (20:47 +0100)]
gitweb: Fix bug in git_difftree_body (was '!=' instead of 'ne')

Fix bug in git_difftree_body subroutine; it was used '!=' comparison
operator for strings (file type) instead of correct 'ne'.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix error in git_project_index subroutine
Jakub Narebski [Wed, 3 Jan 2007 15:03:01 +0000 (16:03 +0100)]
gitweb: Fix error in git_project_index subroutine

Instead of "$projectroot/$pr->{'path'}" to get the path to project
GIT_DIR, it was used "$projectroot/$project" which is valid only
for actions where project parameter is set, and 'project_index' is not
one of them.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Precompile CGI routines for mod_perl
Jakub Narebski [Wed, 27 Dec 2006 23:00:52 +0000 (00:00 +0100)]
gitweb: Precompile CGI routines for mod_perl

Following advice from CGI(3pm) man page, precompile all CGI routines
for mod_perl, in the BEGIN block.

  If you want to compile without importing use the compile() method
  instead:

    use CGI();
    CGI->compile();

  This is particularly useful in a mod_perl environment, in which you
  might want to precompile all CGI routines in a startup script, and then
  import the functions individually in each mod_perl script.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add mod_perl version string to "generator" meta header
Jakub Narebski [Wed, 27 Dec 2006 22:59:51 +0000 (23:59 +0100)]
gitweb: Add mod_perl version string to "generator" meta header

Add mod_perl version string (the value of $ENV{'MOD_PERL'} if it is
set) to "generator" meta header.

The purpose of this is to identify version of gitweb, now that
codepath may differ for gitweb run as CGI script, run under
mod_perl 1.0 and run under mod_perl 2.0.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Re-enable rev-list --parents for parse_commit.
Robert Fitzsimons [Wed, 27 Dec 2006 14:22:21 +0000 (14:22 +0000)]
gitweb: Re-enable rev-list --parents for parse_commit.

Re-enable rev-list --parents for parse_commit which was removed in
(208b2dff95bb48682c351099023a1cbb0e1edf26).  rev-list --parents is not
just used to return the parent headers in the commit object, it
includes any grafts which are vaild for the commit.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Use rev-list --skip option.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:49 +0000 (14:31 +0000)]
gitweb: Use rev-list --skip option.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Change history action to use parse_commits.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:48 +0000 (14:31 +0000)]
gitweb: Change history action to use parse_commits.

Also added missing accesskey.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Change atom, rss actions to use parse_commits.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:47 +0000 (14:31 +0000)]
gitweb: Change atom, rss actions to use parse_commits.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Change header search action to use parse_commits.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:46 +0000 (14:31 +0000)]
gitweb: Change header search action to use parse_commits.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Change log action to use parse_commits.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:45 +0000 (14:31 +0000)]
gitweb: Change log action to use parse_commits.

Also add missing next link to bottom of page.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Change summary, shortlog actions to use parse_commits.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:44 +0000 (14:31 +0000)]
gitweb: Change summary, shortlog actions to use parse_commits.

Also added missing accesskey.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: We do longer need the --parents flag in rev-list.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:43 +0000 (14:31 +0000)]
gitweb: We do longer need the --parents flag in rev-list.

We only want to know the direct parents of a given commit object,
these parents are available in the --header output of rev-list.  If
--parents is supplied with --full-history the output includes merge
commits that aren't relevant.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add parse_commits, used to bulk load commit objects.
Robert Fitzsimons [Sun, 24 Dec 2006 14:31:42 +0000 (14:31 +0000)]
gitweb: Add parse_commits, used to bulk load commit objects.

Add a new method parse_commits which is able to parse multiple commit
objects at once.  Reworked parse_commit to share the commit object
parsing logic.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Paginate commit/author/committer search output
Robert Fitzsimons [Sat, 23 Dec 2006 14:57:12 +0000 (14:57 +0000)]
gitweb: Paginate commit/author/committer search output

Paginate commit/author/committer search output to only show 100 commits
at a time, added appropriate nav links.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Allow search to be disabled from the config file.
Robert Fitzsimons [Sat, 23 Dec 2006 03:35:16 +0000 (03:35 +0000)]
gitweb: Allow search to be disabled from the config file.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Require a minimum of two character for the search text.
Robert Fitzsimons [Sat, 23 Dec 2006 03:35:15 +0000 (03:35 +0000)]
gitweb: Require a minimum of two character for the search text.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Use rev-list pattern search options.
Robert Fitzsimons [Sat, 23 Dec 2006 03:35:14 +0000 (03:35 +0000)]
gitweb: Use rev-list pattern search options.

Use rev-list pattern search options instead of hand coded perl.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: optimize git_summary.
Robert Fitzsimons [Fri, 22 Dec 2006 19:38:15 +0000 (19:38 +0000)]
gitweb: optimize git_summary.

We don't need to call git_get_head_hash at all just pass in "HEAD" and
use the return id field.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: optimize git_shortlog_body.
Robert Fitzsimons [Fri, 22 Dec 2006 19:38:14 +0000 (19:38 +0000)]
gitweb: optimize git_shortlog_body.

Don't call gitweb_have_snapshot from within the loop.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: optimize git_get_last_activity.
Robert Fitzsimons [Fri, 22 Dec 2006 19:38:13 +0000 (19:38 +0000)]
gitweb: optimize git_get_last_activity.

Only return one line of output and we don't need the refname value.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add missing show '...' links change.
Robert Fitzsimons [Fri, 22 Dec 2006 19:38:12 +0000 (19:38 +0000)]
gitweb: Add missing show '...' links change.

Part of the patch for "gitweb: Show '...' links in "summary" view only
if there are more items" (313ce8cee665447e4476d7e8985b270346a8e5a1) is
missing.  Add it back in.

Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Show '...' links in "summary" view only if there are more items
Robert Fitzsimons [Tue, 19 Dec 2006 12:08:54 +0000 (12:08 +0000)]
gitweb: Show '...' links in "summary" view only if there are more items

Show "..." links in "summary" view to shortlog, heads (if there are
any), and tags (if there are any) only if there are more items to show
than shown already.

This means that "..." link is shown below shortened shortlog if there
are more than 16 commits, "..." link below shortened heads list if
there are more than 16 heads refs (16 branches), "..." link below
shortened tags list if there are more than 16 tags.

Modified patch from Jakub to to apply cleanly to master, also preform
the same "..." link logic to the forks list.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Robert Fitzsimons <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add "next" link to commit view
Jakub Narebski [Fri, 15 Dec 2006 20:57:16 +0000 (21:57 +0100)]
gitweb: Add "next" link to commit view

Add a kind of "next" view in the bottom part of navigation bar for
"commit" view, similar to what was added for "commitdiff" view in
commit 151602df00b8e5c5b4a8193f59a94b85f9b5aebc
  'gitweb: Add "next" link to commitdiff view'

For "commit" view for single parent commit:
  (parent: _commit_)
For "commit" view for merge (multi-parent) commit:
  (merge: _commit_ _commit_ ...)
For "commit" view for root (parentless) commit
  (initial)
where _link_ denotes hyperlink.  SHA1 of commit is shortened
to 7 characters on display.

While at it, remove leftovers from commit cae1862a by Petr Baudis:
  'gitweb: More per-view navigation bar links'
namely the "blame" link if there exist $file_name and commit has a
parent; it was added in git_commit probably by mistake.  The rest
of what mentioned commit added for git_commit was removed in
commit 6e0e92fda893311ff5af91836e5007bf6bbd4a21 by Luben Tuikov:
  'gitweb: Do not print "log" and "shortlog" redundantly in commit view'
(which should have probably removed also this "blame" link removed now).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add title attribute to ref marker with full ref name
Jakub Narebski [Fri, 15 Dec 2006 22:49:12 +0000 (23:49 +0100)]
gitweb: Add title attribute to ref marker with full ref name

Add title attribute, which will be shown as popup on mouseover in
graphical web browsers, with full name of ref, including part (type)
removed from the name of ref itself. This is useful to see that this
strange ref is StGIT ref, or it is remote branch, or it is lightweigh
tag (with branch-like name).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Do not show difftree for merges in "commit" view
Jakub Narebski [Fri, 15 Dec 2006 16:53:45 +0000 (17:53 +0100)]
gitweb: Do not show difftree for merges in "commit" view

Do not show difftree against first parent for merges (commits with
more than one parent) in "commit" view, because it usually is
misleading.  git-show and git-whatchanged doesn't show diff for merges
either.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: SHA-1 in commit log message links to "object" view
Jakub Narebski [Sun, 10 Dec 2006 12:25:49 +0000 (13:25 +0100)]
gitweb: SHA-1 in commit log message links to "object" view

Instead of checking if explicit SHA-1 in commit log message is sha1 of
commit and making link to "commit" view, make [fragment of] explicit
SHA-1 in commit log message link to "object" view.  While at it allow
to hyperlink also shortened SHA-1, from 8 characters up to full SHA-1,
instead of requiring full 40 characters of SHA-1.

This makes the following changes:

 * SHA-1 of objects which no longer exists, for example in commit
   cherry-picked from no longer existing temporary branch, or revert
   of commit in rebased branch, are no longer marked as such by not
   being made into hyperlink (and not having default hyperlink view:
   being underlined among others).  On the other hand it makes gitweb
   to not write error messages when object is not found to web serwer
   log; it also moves cost of getting type and SHA-1 validation to
   when link is clicked, and not only viewed.

 * SHA-1 of other objects: blobs, trees, tags are also hyperlinked
   and lead to appropriate view (although in the case of tags it is
   more natural to just use tag name).

 * You can put shortened SHA-1 of commit in the commit message, and it
   would be hyperlinked; it would be checked on clicking if abbrev is
   unique.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Hyperlink target of symbolic link in "tree" view (if possible)
Jakub Narebski [Sun, 10 Dec 2006 12:25:48 +0000 (13:25 +0100)]
gitweb: Hyperlink target of symbolic link in "tree" view (if possible)

Make symbolic link target in "tree" view into hyperlink to generic
"object" view (as we don't know if the link target is file (blob) or
directory (tree), and if it exist at all).

Target of link is made into hyperlink when:
 * hash_base is provided (otherwise we cannot find hash
   of link target)
 * link is relative
 * in no place link goes out of root tree (top dir)

Full path of symlink target from the root dir is provided in the title
attribute of hyperlink.

Currently symbolic link name uses ordinary file style (hidden
hyperlink), while the hyperlink to symlink target uses default
hyperlink style, so it is underlined while link target which is not
made into hyperlink is not underlined.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add generic git_object subroutine to display object of any type
Jakub Narebski [Sun, 10 Dec 2006 12:25:47 +0000 (13:25 +0100)]
gitweb: Add generic git_object subroutine to display object of any type

Add generic "object" view implemented in git_object subroutine, which is
used to display object of any type; to be more exact it redirects to the
view of correct type: "blob", "tree", "commit" or "tag".  To identify object
you have to provide either hash (identifier of an object), or (in the case of
tree and blob objects) hash of commit object (hash_base) and path (file_name).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Show target of symbolic link in "tree" view
Jakub Narebski [Sun, 10 Dec 2006 12:25:46 +0000 (13:25 +0100)]
gitweb: Show target of symbolic link in "tree" view

In "tree" view (git_print_tree_entry subroutine), for entries which are
symbolic links, add " -> link_target" after file name (a la "ls -l").

Link target is _not_ hyperlinked.

While at it, correct whitespaces (tabs are for aling, spaces are for indent)
in modified git_print_tree_entry subroutine.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Don't use Content-Encoding: header in git_snapshot
Jakub Narebski [Mon, 11 Dec 2006 17:09:58 +0000 (18:09 +0100)]
gitweb: Don't use Content-Encoding: header in git_snapshot

Do not use Content-Encoding: HTTP header in git_snapshot, using
instead type according to the snapshot type (compression type).
Some of web browser take Content-Encoding: to be _transparent_
also for downloading, and store decompressed file (with incorrect
compression suffix) on download.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agoFix documentation copy&paste typo
Uwe Zeisberger [Fri, 8 Dec 2006 11:44:31 +0000 (12:44 +0100)]
Fix documentation copy&paste typo

This was introduced in 45a3b12cfd3eaa05bbb0954790d5be5b8240a7b5

Signed-off-by: Uwe Kleine-K\e,AC6\e(Bnig <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view
Jakub Narebski [Mon, 4 Dec 2006 22:47:22 +0000 (23:47 +0100)]
gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view

Allow images in one of web formats (PNG, GIF, JPEG) - actually files
with mimetype of image/png, image/git, image/jpeg - to be displayed in
"blob" view using <img /> element, instead of using "blob_plain" view
for them, like for all other files except also text/* mimetype files.

This makes possible to easily go to file history, to HEAD version of
the file, to appropriate commit etc; all of those are not available
in "blob_plain" (raw) view.

Only text files can have "blame" view link in the formats part of
navbar.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Fix Atom feed <logo>: it is $logo, not $logo_url
Jakub Narebski [Mon, 4 Dec 2006 13:09:43 +0000 (14:09 +0100)]
gitweb: Fix Atom feed <logo>: it is $logo, not $logo_url

Fix contents of Atom feed <logo> element; it should be URL
of $logo, not URL pointed by logo link.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Make project description in projects list link to summary view
Jakub Narebski [Sun, 26 Nov 2006 01:18:26 +0000 (02:18 +0100)]
gitweb: Make project description in projects list link to summary view

Make (shortened) project description in the "projects list" view
hyperlink to the "summary" view of the project. Project names are
sometimes short; having project description be hyperling gives larger
are to click. While at it, display full description on mouseover via
'title' attribute to introduced link.

Additionally, fix whitespace usage in modified git_project_list_body
subroutine: tabs are for indent, spaces are for align.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Use author_epoch for pubdate in gitweb feeds
Jakub Narebski [Sat, 25 Nov 2006 14:54:34 +0000 (15:54 +0100)]
gitweb: Use author_epoch for pubdate in gitweb feeds

Use creation date (author_epoch) instead of former commit date
(committer_epoch) as publish date in gitweb feeds (RSS, Atom).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add author and contributor email to Atom feed
Jakub Narebski [Sat, 25 Nov 2006 14:54:33 +0000 (15:54 +0100)]
gitweb: Add author and contributor email to Atom feed

Add author email (from 'author_email') and contributor email (from
'committer_email') to items in the Atom format gitweb feed.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add author and committer email extraction to parse_commit
Jakub Narebski [Sat, 25 Nov 2006 14:54:32 +0000 (15:54 +0100)]
gitweb: Add author and committer email extraction to parse_commit

Extract author email to 'author_email' key, and comitter mail to
'committer_mail' key; uniquify committer and author lines handling
by the way.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Use git-show-ref instead of git-peek-remote
Jakub Narebski [Sat, 25 Nov 2006 10:32:08 +0000 (11:32 +0100)]
gitweb: Use git-show-ref instead of git-peek-remote

Use "git show-ref --dereference" instead of "git peek-remote
$projectroot/project" in git_get_references. git-show-ref is faster
than git-peek-remote (40ms vs 56ms user+sys for git.git repository);
even faster is reading info/refs file (if it exists), but the
information in info/refs can be stale; that and the fact that
info/refs is meant for dumb protocol transports, not for gitweb.

git-show-ref is available since v1.4.4; the output format is slightly
different than git-peek-remote output format, but we accept both.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Do not use esc_html in esc_path
Jakub Narebski [Sat, 25 Nov 2006 08:43:59 +0000 (09:43 +0100)]
gitweb: Do not use esc_html in esc_path

Do not use esc_html in esc_path subroutine to avoid double quoting;
expand esc_html body (except quoting) in esc_path.

Move esc_path before quot_cec and quot_upr. Add some comments.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: (style) use chomp without parentheses consistently.
Junio C Hamano [Fri, 24 Nov 2006 22:04:01 +0000 (14:04 -0800)]
gitweb: (style) use chomp without parentheses consistently.

It seems that gitweb tries to consistently use chomp without parentheses
around its operands, but there were two places that said "chomp($var);".

Let's be consistent.

Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Replace SPC with &nbsp; also in tag comment
Jakub Narebski [Fri, 24 Nov 2006 21:25:50 +0000 (22:25 +0100)]
gitweb: Replace SPC with &nbsp; also in tag comment

Commit messages had SPC replaced with &nbsp; entity;
make it so also in tag message (tag comment).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Finish restoring "blob" links in git_difftree_body
Jakub Narebski [Sun, 19 Nov 2006 21:51:39 +0000 (22:51 +0100)]
gitweb: Finish restoring "blob" links in git_difftree_body

This finishes work started by commit 4777b0141a4812177390da4b6ebc9d40ac3da4b5
  "gitweb: Restore object-named links in item lists"
by Petr Baudis. It brings back rest of "blob" links in difftree-raw
like part of "commit" and "commitdiff" views, namely in
git_difftree_body subroutine.

Now the td.link table cell has the following links:
 * link to diff ("blobdiff" view) in "commit" view, if applicable
   (there is no link to uninteresting creation/deletion diff), or
   link to patch anchor in "commitdiff" view.
 * link to current version of file ("blob" view), with the obvious
   exception of file deletion, where it is link to the parent
   version.
 * link to "blame" view, if it is enabled, and file was not just
   created (i.e. it has any history).
 * link to history of the file ("history" view), again with sole
   exception of the case of new file.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Refactor feed generation, make output prettier, add Atom feed
Jakub Narebski [Sun, 19 Nov 2006 14:05:22 +0000 (15:05 +0100)]
gitweb: Refactor feed generation, make output prettier, add Atom feed

Add support for more modern Atom web feed format. Both RSS and Atom
feeds are generated by git_feed subroutine to avoid code duplication;
git_rss and git_atom are thin wrappers around git_feed. Add links to
Atom feed in HTML header and in page footer (but not in OPML; we
should use APP, Atom Publishing Proptocol instead).

Allow for feed generation for branches other than current (HEAD)
branch, and for generation of feeds for file or directory history.

Do not use "pre ${\sub_returning_scalar(...)} post" trick, but join
strings instead: "pre " . sub_returning_scalar(...) . " post".
Use href(-full=>1, ...) instead of hand-crafting gitweb urls.

Make output prettier:
* Use title similar to the title of web page
* Use project description (if exists) for description/subtitle
* Do not add anything (committer name, commit date) to feed entry title
* Wrap the commit message in <pre>
* Make file names into an unordered list
* Add links (diff, conditional blame, history) to the file list.

In addition to the above points, the attached patch emits a
Last-Changed: HTTP response header field, and doesn't compute the feed
body if the HTTP request type was HEAD. This helps keep the web server
load down for well-behaved feed readers that check if the feed needs
updating.

If browser (feed reader) sent Accept: header, and it prefers 'text/xml' type
to 'application/rss+xml' (in the case of RSS feed) or 'application/atom+xml'
(in the case of Atom feed), then use 'text/xml' as content type.

Both RSS and Atom feeds validate at http://feedvalidator.org
and at http://validator.w3.org/feed/

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Andreas Fuchs <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Add an option to href() to return full URL
Jakub Narebski [Sun, 19 Nov 2006 14:05:21 +0000 (15:05 +0100)]
gitweb: Add an option to href() to return full URL

href subroutine by default generates absolute URL (generated using
CGI::url(-absolute=>1), and saved in $my_uri) using $my_uri as base;
add an option to generate full URL using $my_url as base.

New feature usage: href(..., -full=>1)

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: New improved formatting of chunk header in diff
Jakub Narebski [Sat, 18 Nov 2006 22:35:40 +0000 (23:35 +0100)]
gitweb: New improved formatting of chunk header in diff

If we have provided enough info, and diff is not combined diff,
and if provided diff line is chunk header, then:
* split chunk header into .chunk_info and .section span elements,
  first containing proper chunk header, second section heading
  (aka. which function), for separate styling: the proper chunk
  header is on non-white background, section heading part uses
  slightly lighter color.
* hyperlink from-file-range to starting line of from-file, if file
  was not created.
* hyperlink to-file-range to starting line of to-file, if file
  was not deleted.
Links are of invisible variety (and "list" class).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Default to $hash_base or HEAD for $hash in "commit" and "commitdiff"
Jakub Narebski [Sat, 18 Nov 2006 22:35:41 +0000 (23:35 +0100)]
gitweb: Default to $hash_base or HEAD for $hash in "commit" and "commitdiff"

Set $hash parameter to $hash_base || "HEAD" if it is not set (if it is
not true to be more exact). This allows [hand-edited] URLs with 'action'
"commit" or "commitdiff" but without 'hash' parameter.

If there is 'h' (hash) parameter provided, then gitweb tries
to use this. HEAD is used _only_ if nether hash, nor hash_base
are provided, i.e. for URL like below
  URL?p=project.git;a=commit
i.e. without neither 'h' nor 'hb'.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Buffer diff header to deal with split patches + git_patchset_body refactoring
Jakub Narebski [Sat, 18 Nov 2006 22:35:39 +0000 (23:35 +0100)]
gitweb: Buffer diff header to deal with split patches + git_patchset_body refactoring

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. To deal
with this buffer git diff header and extended diff header (everything up to
actual patch) to check from information from "index <hash>..<hash>" extended
header line if the patch corresponds to the same or next difftree raw line.

This could also be used to gather information needed for hyperlinking, and
used for printing gitweb quoted filenames, from extended diff header instead
of raw git-diff output.

While at it, refactor git_patchset_body subroutine from the event-driven,
AWK-like state-machine parsing to sequential parsing: for each patch
parse (and output) git diff header, parse extended diff header, parse two-line
from-file/to-file diff header, parse patch itself; patch ends with the end
of input [file] or the line matching m/^diff /.

For better understanding the code, there were added assertions in the
comments a la Carp::Assert module. Just in case there is commented out code
dealing with unexpected end of input (should not happen, hence commented
out).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Protect against possible warning in git_commitdiff
Jakub Narebski [Sat, 18 Nov 2006 22:35:38 +0000 (23:35 +0100)]
gitweb: Protect against possible warning in git_commitdiff

We may read an undef from <$fd> and unconditionally chomping it
would result in a warning.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Put back shortlog instead of graphiclog in the project list.
Alexandre Julliard [Wed, 15 Nov 2006 20:37:50 +0000 (21:37 +0100)]
gitweb: Put back shortlog instead of graphiclog in the project list.

Looks like a repo.or.cz-specific change slipped in.

Signed-off-by: Alexandre Julliard <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: fix unmatched div in commitdiff
Junio C Hamano [Thu, 9 Nov 2006 10:33:35 +0000 (02:33 -0800)]
gitweb: fix unmatched div in commitdiff

When the last filepair changed only metainfo we failed to close the
extended header <div>.

Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: protect commit messages from controls.
Junio C Hamano [Thu, 9 Nov 2006 08:57:13 +0000 (00:57 -0800)]
gitweb: protect commit messages from controls.

The same change as the previous.  It is rather sad that commit log
message parser gives list of chomped lines while tag message parser
gives unchomped ones.

Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: protect blob and diff output lines from controls.
Junio C Hamano [Wed, 8 Nov 2006 23:11:10 +0000 (15:11 -0800)]
gitweb: protect blob and diff output lines from controls.

This revealed that the output from blame and tag was not chomped
properly and was relying on HTML output not noticing that extra
whitespace that resulted from the newline, which was also fixed.

Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: do not give blame link unconditionally in diff-tree view
Junio C Hamano [Wed, 8 Nov 2006 20:22:04 +0000 (12:22 -0800)]
gitweb: do not give blame link unconditionally in diff-tree view

Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: New improved patchset view
Jakub Narebski [Wed, 8 Nov 2006 16:59:41 +0000 (17:59 +0100)]
gitweb: New improved patchset view

Replace "gitweb diff header" with its full sha1 of blobs and replace
it by "git diff" header and extended diff header. Change also somewhat
highlighting of diffs.

Added `file_type_long' subroutine to convert file mode in octal to
file type description (only for file modes which used by git).

Changes:
* "gitweb diff header" which looked for example like below:
    file:_<sha1 before>_ -> file:_<sha1 after>_
  where 'file' is file type and '<sha1>' is full sha1 of blob is
  changed to
    diff --git _a/<file before>_ _b/<file after>_
  In both cases links are visible and use default link style. If file
  is added, a/<file> is not hyperlinked. If file is deleted, b/<file>
  is not hyperlinked.
* there is added "extended diff header", with <path> and <hash>
  hyperlinked (and <hash> shortened to 7 characters), and <mode>
  explained: '<mode>' is extended to '<mode> (<file type description>)',
  where added text is slightly lighter to easy distinguish that it
  was added (and it is difference from git-diff output).
* from-file/to-file two-line header lines have slightly darker color
  than removed/added lines.
* chunk header has now delicate line above for easier finding chunk
  boundary, and top margin of 2px, both barely visible.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
30 hours agogitweb: Use character or octal escape codes (and add span.cntrl) in esc_path
Jakub Narebski [Wed, 8 Nov 2006 10:50:07 +0000 (11:50 +0100)]
gitweb: Use character or octal escape codes (and add span.cntrl) in esc_path

Instead of simply hiding control characters in esc_path by replacing
them with '?', use Character Escape Codes (CEC) i.e. alphabetic
backslash sequences like those found in C programming language and
many other languages influenced by it, such as Java and Perl.  If
control characted doesn't have corresponding character escape code,
use octal char sequence to escape it.

Alternatively, controls can be replaced with Unicode Control
Pictures U+2400 - U+243F (9216 - 9279), the Unicode characters
reserved for representing control characters when it is
necessary to print or display them.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
This page took 0.669605 seconds and 4 git commands to generate.