]> Lady’s Gitweb - Gitweb/log
Gitweb
33 hours agogitweb: document webserver configuration for common gitweb/repo URLs.
Martin Waitz [Tue, 3 Oct 2006 08:03:28 +0000 (10:03 +0200)]
gitweb: document webserver configuration for common gitweb/repo URLs.

Add a small apache configuration which shows how to use apache
to put gitweb and GIT repositories at the same URL.

Signed-off-by: Martin Waitz <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Escape ESCAPE (\e) character
Luben Tuikov [Mon, 2 Oct 2006 21:54:53 +0000 (14:54 -0700)]
gitweb: Escape ESCAPE (\e) character

Take a look at commit 20a3847d8a5032ce41f90dcc68abfb36e6fee9b1
using gitweb before this patch.  This patch fixes this.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: start to generate PATH_INFO URLs.
Martin Waitz [Sun, 1 Oct 2006 21:57:48 +0000 (23:57 +0200)]
gitweb: start to generate PATH_INFO URLs.

Instead of providing the project as a ?p= parameter it is simply appended to
the base URI.  All other parameters are appended to that, except for ?a=summary
which is the default and can be omitted.

The this can be enabled with the "pathinfo" feature in gitweb_config.perl.

[jc: let's introduce new features disabled by default not to
 upset too many existing installations.]

Signed-off-by: Martin Waitz <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: tree view: hash_base and hash are now context sensitive
Luben Tuikov [Fri, 29 Sep 2006 16:57:43 +0000 (09:57 -0700)]
gitweb: tree view: hash_base and hash are now context sensitive

In tree view, by default, hash_base is HEAD and hash is the
entry equivalent.  Else the user had selected a hash_base or
hash, say by clicking on a revision or commit, in which case
those values are used.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: History: blob and tree are first, then commitdiff, etc
Luben Tuikov [Fri, 29 Sep 2006 00:21:07 +0000 (17:21 -0700)]
gitweb: History: blob and tree are first, then commitdiff, etc

Reorder link display in history to be consistent with other
list displays: log, shortlog, etc.  We now display:

blob | commitdiff
blob | commitdiff | diff_to_current

and

tree | commitdiff

Instead of the old history format where "blob" and "tree"
are between "commitdiff" and "diff_to_current" if present/
applicable.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove redundant "commit" from history
Luben Tuikov [Fri, 29 Sep 2006 00:20:23 +0000 (17:20 -0700)]
gitweb: Remove redundant "commit" from history

Remove redundant "commit" from history -- it can be had
by clicking on the title of the commit.  This commit
makes visualization consistent with shortlog, log, etc.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Don't use quotemeta on internally generated strings
Luben Tuikov [Thu, 28 Sep 2006 23:51:43 +0000 (16:51 -0700)]
gitweb: Don't use quotemeta on internally generated strings

Do not use quotemeta on internally generated strings
such as filenames of snapshot, blobs, etc.
quotemeta quotes any characters not matching /A-Za-z_0-9/.
Which means that we get strings like this:

before: linux\-2\.6\.git\-5c2d97cb31fb77981797fec46230ca005b865799\.tar\.gz
after:  linux-2.6.git-5c2d97cb31fb77981797fec46230ca005b865799.tar.gz

This patch fixes this.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add snapshot to shortlog
Luben Tuikov [Thu, 28 Sep 2006 23:50:09 +0000 (16:50 -0700)]
gitweb: Add snapshot to shortlog

Add snapshot to each commit-row of shortlog.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Factor out gitweb_have_snapshot()
Luben Tuikov [Thu, 28 Sep 2006 23:49:21 +0000 (16:49 -0700)]
gitweb: Factor out gitweb_have_snapshot()

Create gitweb_have_snapshot() which returns true
of snapshot is available and enabled, else false.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove redundant "commit" link from shortlog
Luben Tuikov [Thu, 28 Sep 2006 23:48:40 +0000 (16:48 -0700)]
gitweb: Remove redundant "commit" link from shortlog

Remove the redundant "commit" link from shortlog.
It can be had by simply clicking on the entry title
of the row.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: "alternate" starts with shade (i.e. 1)
Luben Tuikov [Thu, 28 Sep 2006 23:47:50 +0000 (16:47 -0700)]
gitweb: "alternate" starts with shade (i.e. 1)

When displaying a list of rows (difftree, shortlog, etc),
the first entry is now printed shaded, i.e. alternate is
initialized to 1, as opposed to non-shaded (alternate
initialized to 0).

This solves the problem when there is only one row to
display -- it is displayed shaded to visually indicate that
it is "active", part of a "list", etc.

(Compare this to the trivial case of more than one entry,
where the rows have alternating shade, thus suggesting
being part of a "list" of "active" entries, etc.)

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add history and blame to git_difftree_body()
Luben Tuikov [Thu, 28 Sep 2006 00:24:49 +0000 (17:24 -0700)]
gitweb: Add history and blame to git_difftree_body()

Add blame and history to Deleted files.
Add blame and history to Modified or Type changed files.
Add blame and history to Renamed or Copied files.

This allows us to do
blame->commit->blame->commit->blame->...
instead of
blame->commit->file->blame->commit->file->blame->...
which is longer and easier to get wrong.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove excessively redundant entries from git_difftree_body
Luben Tuikov [Thu, 28 Sep 2006 00:23:25 +0000 (17:23 -0700)]
gitweb: Remove excessively redundant entries from git_difftree_body

1) All entries on the left are blobs and clicking on them
leads to blobs.  No more diff or blob depending on what
happened (modified or mode changed) to the file -- this goes
to the right, in the "link" column.

2) Remove redundant "blob" from the link column on the right.
This can now be had by clicking on the entry itself.

This reduces and simplifies the code.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agoRevert "gitweb: extend blame to show links to diff and previous"
Luben Tuikov [Thu, 28 Sep 2006 00:22:03 +0000 (17:22 -0700)]
Revert "gitweb: extend blame to show links to diff and previous"

This concept is very fine, but it makes blame slow
across renames and across branches, so revert it.
There is a better way to do this.

This reverts commit 03d06a8e26f4fbd37800d1e1125c6ecf4c104466.

Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Quote filename in HTTP Content-Disposition: header
Jakub Narebski [Mon, 25 Sep 2006 23:59:43 +0000 (01:59 +0200)]
gitweb: Quote filename in HTTP Content-Disposition: header

Finish work started by commit a2f3db2 (although not documented
in commit message) of quoting using quotemeta the filename in
HTTP -content_disposition header.

Just in case filename contains end of line character.

Also use consistent coding style to compute -content_disposition
parameter.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add git_url subroutine, and use it to quote full URLs
Jakub Narebski [Mon, 25 Sep 2006 23:58:41 +0000 (01:58 +0200)]
gitweb: Add git_url subroutine, and use it to quote full URLs

Add git_url subroutine, which does what git_param did before commit
a2f3db2f5de2a3667b0e038aa65e3e097e642e7d, and is used to quote full
URLs, currently only $home_link.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Split validate_input into validate_pathname and validate_refname
Jakub Narebski [Mon, 25 Sep 2006 23:57:02 +0000 (01:57 +0200)]
gitweb: Split validate_input into validate_pathname and validate_refname

Split validate_input subroutine into validate_pathname which is used
for $project, $file_name and $file_parent parameters, and
validate_refname which is used for $hash, $hash_base, $hash_parent and
$hash_parent_base parameters.  Reintroduce validation of $file_name
and $file_parent parameters, removed in a2f3db2f

validate_pathname in addition to what validate_input did checks also
for doubled slashes and NUL character. It does not check if input is
textual hash, and does not check if all characters are from the
following set: [a-zA-Z0-9_\x80-\xff\ \t\.\/\-\+\#\~\%].

validate_refname first check if the input is textual hash, then checks
if it is valid pathname, then checks for invalid characters (according
to git-check-ref-format manpage). It does not check if all charactes
are from the [a-zA-Z0-9_\x80-\xff\ \t\.\/\-\+\#\~\%] set.

We do not have to validate pathnames we got from git.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Use "return" instead of "return undef" for some subs
Jakub Narebski [Mon, 25 Sep 2006 23:56:17 +0000 (01:56 +0200)]
gitweb: Use "return" instead of "return undef" for some subs

Use "return" instead of "return undef" when subroutine can return, or
always return, non-scalar (list) value.

Other places are left as is.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Strip trailing slashes from $path in git_get_hash_by_path
Jakub Narebski [Mon, 25 Sep 2006 23:54:24 +0000 (01:54 +0200)]
gitweb: Strip trailing slashes from $path in git_get_hash_by_path

It also removes unused local variable $tree

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: extend blame to show links to diff and previous
Luben Tuikov [Tue, 26 Sep 2006 23:45:31 +0000 (16:45 -0700)]
gitweb: extend blame to show links to diff and previous

git_blame2() now has two more columns, "Prev" and "Diff",
before the "Commit" column, as follows:

Prev Diff Commit Line Data
SHA     Diff    SHA        N    ...
...

The "Prev" column shows the SHA of the parent commit,
between which this line changed.  Clicking on it shows the
blame of the file as of the parent commit, for that line.

So clicking repeatedly on "Prev" would show you the blame
of that file, from the point of view of the changes
of that particular line whose "Prev" you're clicking on.

The "Diff" column shows "Diff" which is a link to blobdiff
between "Prev" and "Commit" commits _for that line_.

So clicking on "Diff" would show you the blobdiff (HTML)
between the parent commit and this commit which changed
that particular line.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Decode long title for link tooltips
Yasushi SHOJI [Wed, 27 Sep 2006 03:04:10 +0000 (12:04 +0900)]
gitweb: Decode long title for link tooltips

This is a simple one liner to decode long title string in perl's
internal form to utf-8 for link tooltips.

This is not crucial if the commit message is all in ASCII, however, if
you decide to use other encoding, such as UTF-8, tooltips ain't
readable any more.

Signed-off-by: Yasushi SHOJI <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove redundant "tree" link
Luben Tuikov [Tue, 26 Sep 2006 19:45:37 +0000 (12:45 -0700)]
gitweb: Remove redundant "tree" link

In "tree" view, remove redundant "tree" link in the tree
listing.  It is identical to simply clicking on the tree
entry itself.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: tree view: eliminate redundant "blob"
Luben Tuikov [Tue, 26 Sep 2006 05:38:16 +0000 (22:38 -0700)]
gitweb: tree view: eliminate redundant "blob"

Binary and non-binary blobs:

The "list" table element of tree view is identical
to the "blob" link part of the link table element.
I.e. clicking on "blob" is identical to clicking on
the entry itself.

Thus, eliminate "blob" from being shown -- the user
can get identical result by simply clicking on the
entry itself.

Signed-off-by: Luben Tuikov <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: fix over-eager application of esc_html().
Petr Baudis [Sun, 24 Sep 2006 21:57:40 +0000 (14:57 -0700)]
gitweb: fix over-eager application of esc_html().

Contents of %diffinfo hash should be quoted upon output but kept
unquoted internally.  Later users of this hash expect filenames
to be filenames, not HTML gibberish.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Consolidate escaping/validation of query string
Petr Baudis [Sat, 23 Sep 2006 22:18:41 +0000 (00:18 +0200)]
gitweb: Consolidate escaping/validation of query string

Consider:

http://repo.or.cz/?p=glibc-cvs.git;a=tree;h=2609cb0411389325f4ee2854cc7159756eb0671e;hb=2609cb0411389325f4ee2854cc7159756eb0671e

(click on the funny =__ify file)

We ought to handle anything in filenames and I actually see no reason why
we don't, modulo very little missing escaping that this patch hopefully
also fixes.

I have also made esc_param() escape [?=&;]. Not escaping [&;] was downright
buggy and [?=] just feels better escaped. ;-) YMMV.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agoFix snapshot link in tree view
Petr Baudis [Fri, 22 Sep 2006 23:21:20 +0000 (01:21 +0200)]
Fix snapshot link in tree view

It would just give HEAD snapshot instead of one of the particular tree.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Fix @git_base_url_list usage
Petr Baudis [Fri, 22 Sep 2006 23:15:18 +0000 (01:15 +0200)]
gitweb: Fix @git_base_url_list usage

As it is now, that array was never used because the customurl accessor was
broken and ''unless @url_list'' never happenned.

Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Fix tree link associated with each commit log entry.
Petr Baudis [Fri, 22 Sep 2006 23:56:43 +0000 (16:56 -0700)]
gitweb: Fix tree link associated with each commit log entry.

The link forgot to have hb parameter and the resulting tree view
failed to show the navbar for that commit.

Signed-off-by: Junio C Hamano <redacted>
33 hours agoMake path in tree view look nicer
Petr Baudis [Fri, 22 Sep 2006 23:00:12 +0000 (01:00 +0200)]
Make path in tree view look nicer

Based on talk on the IRC with Junio some evenings ago, I've updated the
path showing in tree view to look better and sent updated patches
privately, but it seems the old version ended up being used, so here's
the new one again.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Relabel "head" as "HEAD"
Petr Baudis [Fri, 22 Sep 2006 01:19:53 +0000 (03:19 +0200)]
gitweb: Relabel "head" as "HEAD"

"head" is a reference in refs/heads/, while those labels mean HEAD,
the latest revision of the default branch.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Rename "plain" labels to "raw"
Petr Baudis [Fri, 22 Sep 2006 01:19:50 +0000 (03:19 +0200)]
gitweb: Rename "plain" labels to "raw"

I don't have much preference either way and as far as I'm concerned, it may
go the other way as well. Consistency is what is important.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Link to associated tree from a particular log item in full log view
Petr Baudis [Fri, 22 Sep 2006 01:19:48 +0000 (03:19 +0200)]
gitweb: Link to associated tree from a particular log item in full log view

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Link to latest tree from the head line in heads list
Petr Baudis [Fri, 22 Sep 2006 01:19:46 +0000 (03:19 +0200)]
gitweb: Link to latest tree from the head line in heads list

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Link to tree instead of snapshot in shortlog
Petr Baudis [Fri, 22 Sep 2006 01:19:44 +0000 (03:19 +0200)]
gitweb: Link to tree instead of snapshot in shortlog

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: More per-view navigation bar links
Petr Baudis [Fri, 22 Sep 2006 01:19:41 +0000 (03:19 +0200)]
gitweb: More per-view navigation bar links

Navigation bars in various views were empty or missed important items that
should have been there, e.g. getting a snapshot in tree view or log of
ancestry in commit view...

This feeble patch attempts to consolidate that.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Link (HEAD) tree for each project from projects list
Petr Baudis [Thu, 21 Sep 2006 23:58:40 +0000 (01:58 +0200)]
gitweb: Link (HEAD) tree for each project from projects list

Current projects list is oriented on easily getting "what's new"
information. But when already using gitweb as an interface to something,
I personally find myself to _much_ more frequently wanting to rather
see "what's in" (or "what's new in") and it's quite annoying to have to
go through the summary page (which is also rather expensive to generate)
just to get there.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Make git_get_hash_by_path check type if provided
Jakub Narebski [Thu, 21 Sep 2006 16:09:12 +0000 (18:09 +0200)]
gitweb: Make git_get_hash_by_path check type if provided

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agoFix showing of path in tree view
Petr Baudis [Thu, 21 Sep 2006 00:05:50 +0000 (02:05 +0200)]
Fix showing of path in tree view

This patch fixes two things - links to all path elements except the last
one were broken since gitweb does not like the trailing slash in them, and
the root tree was not reachable from the subdirectory view.

To compensate for the one more slash in the front, the trailing slash is
not there anymore. ;-) I don't care if it stays there though.

Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: fix display of trees via PATH_INFO.
Martin Waitz [Thu, 21 Sep 2006 07:48:21 +0000 (09:48 +0200)]
gitweb: fix display of trees via PATH_INFO.

When adding a / to the URL, git should display the corresponding
tree object, but it has to remove the / first.

Signed-off-by: Martin Waitz <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Fix thinko in git_tags and git_heads
Jakub Narebski [Tue, 19 Sep 2006 18:47:27 +0000 (20:47 +0200)]
gitweb: Fix thinko in git_tags and git_heads

git_get_refs_list always return reference to list (and reference to
hash which we ignore), so $taglist (in git_tags) and $headlist (in
git_heads) are always defined, but @$taglist / @$headlist might be
empty. Replaced incorrect "if (defined @$taglist)" with
"if (@$taglist)" in git_tags and respectively in git_heads.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Make git_get_refs_list do work of git_get_references
Jakub Narebski [Tue, 19 Sep 2006 12:33:22 +0000 (14:33 +0200)]
gitweb: Make git_get_refs_list do work of git_get_references

Make git_get_refs_list do also work of git_get_references, to avoid
calling git-peek-remote twice.  Change meaning of git_get_refs_list
meaning: it is now type, and not a full path, e.g. we now use
git_get_refs_list("heads") instead of former
git_get_refs_list("refs/heads").

Modify git_summary to use only one call to git_get_refs_list instead
of one call to git_get_references and two to git_get_refs_list.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Always use git-peek-remote in git_get_references
Jakub Narebski [Tue, 19 Sep 2006 12:31:49 +0000 (14:31 +0200)]
gitweb: Always use git-peek-remote in git_get_references

Instead of trying to read info/refs file, which might not be present
(we did fallback to git-ls-remote), always use git-peek-remote in
git_get_references.

It is preparation for git_get_refs_info to also return references
info.  We should not use info/refs for git_get_refs_info as the
repository is not served for http-fetch clients.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Require project for almost all actions
Jakub Narebski [Tue, 19 Sep 2006 19:53:22 +0000 (21:53 +0200)]
gitweb: Require project for almost all actions

Require that project (repository) is given for all actions except
project_list, project_index and opml.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Even more support for PATH_INFO based URLs
Jakub Narebski [Tue, 19 Sep 2006 22:49:51 +0000 (00:49 +0200)]
gitweb: Even more support for PATH_INFO based URLs

Now the following types of path based URLs are supported:

* project              overview (summary) page of project
* project/branch       shortlog of branch
* project/branch:file  file in branch, blob_plain view
* project/branch:dir/  directory listing of dir in branch, tree view

The following shortcuts works (see explanation below):

* project/branch:      directory listing of branch, main tree view
* project/:file        file in HEAD (raw)
* project/:dir/        directory listing of dir in HEAD
* project/:            directory listing of project's HEAD

We use ':' as separator between branch (ref) name and file name
(pathname) because valid branch (ref) name cannot have ':' inside.
This limit applies to branch name only. This allow for hierarchical
branches e.g. topic branch 'topic/subtopic', separate remotes
tracking branches e.g. 'refs/remotes/origin/HEAD', and discriminate
between head (branch) and tag with the same name.

Empty branch should be interpreted as HEAD.

If pathname (the part after ':') ends with '/', we assume that pathname
is name of directory, and we want to show contents of said directory
using "tree" view. If pathname is empty, it is equivalent to '/' (top
directory).

If pathname (the part after ':') does not end with '/', we assume that
pathname is name of file, and we show contents of said file using
"blob_plain" view.

Pathname is stripped of leading '/', so we can use ':/' to separate
branch from pathname. The rationale behind support for PATH_INFO based
URLs was to support project web pages for small projects: just create
an html branch and then use an URL like
  http://nowhere.com/gitweb.cgi/project.git/html:/index.html
The ':/' syntax allow for working links between .html files served
in such way, e.g. <a href="main.html"> link inside "index.html"
would get
  http://nowhere.com/gitweb.cgi/project.git/html:/main.html.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Fix mimetype_guess_file for files with multiple extensions
Jakub Narebski [Tue, 19 Sep 2006 11:57:03 +0000 (13:57 +0200)]
gitweb: Fix mimetype_guess_file for files with multiple extensions

Fix getting correct mimetype for "blob_plain" view for files which have
multiple extensions, e.g. foo.1.html; now only the last extension
is used to find mimetype.

Noticed by Martin Waitz.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb fix validating pg (page) parameter
Matthias Lederhofer [Sun, 17 Sep 2006 11:52:45 +0000 (13:52 +0200)]
gitweb fix validating pg (page) parameter

Currently it is possible to give any string ending with a number as
page.  -1 for example is quite bad (error log shows probably 100
warnings).

Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: fix warnings in PATH_INFO code and add export_ok/strict_export
Matthias Lederhofer [Sun, 17 Sep 2006 13:29:48 +0000 (15:29 +0200)]
gitweb: fix warnings in PATH_INFO code and add export_ok/strict_export

Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: export options
Matthias Lederhofer [Sat, 16 Sep 2006 22:31:01 +0000 (00:31 +0200)]
gitweb: export options

$export_ok: If this variable evaluates to true it is checked
if a file with this name exists in the repository.  If it
does not exist the repository cannot be viewed from gitweb.
(Similar to git-daemon-export-ok for git-daemon).

$strict_export: If this variable evaluates to true only
repositories listed on the project-list-page of gitweb can
be accessed.

Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: do not use 'No such directory' error message
Matthias Lederhofer [Sat, 16 Sep 2006 22:30:27 +0000 (00:30 +0200)]
gitweb: do not use 'No such directory' error message

undef $project; to prevent a file named description to be read.

Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: fix uninitialized variable warning.
Martin Waitz [Sat, 16 Sep 2006 21:09:02 +0000 (23:09 +0200)]
gitweb: fix uninitialized variable warning.

Perl spit out a varning when "blob" or "blob_plain" actions were
used without a $hash parameter.

Signed-off-by: Martin Waitz <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: more support for PATH_INFO based URLs
Martin Waitz [Sat, 16 Sep 2006 21:08:32 +0000 (23:08 +0200)]
gitweb: more support for PATH_INFO based URLs

Now three types of path based URLs are supported:
gitweb.cgi/project.git
gitweb.cgi/project.git/branch
gitweb.cgi/project.git/branch/filename

The first one (show project summary) was already supported for a long time
now.  The other two are new: they show the shortlog of a branch or
the plain file contents of some file contained in the repository.

This is especially useful to support project web pages for small
projects: just create an html branch and then use an URL like
gitweb.cgi/project.git/html/index.html.

Signed-off-by: Martin Waitz <redacted>
Acked-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add link to "project_index" view to "project_list" page
Jakub Narebski [Fri, 15 Sep 2006 09:11:33 +0000 (11:11 +0200)]
gitweb: Add link to "project_index" view to "project_list" page

Add link to "project_index" view as [TXT] beside link to "opml" view,
(which is marked by [OPML]) to "project_list" page.

While at it add alternate links for "opml" and "project_list" to HTML
header for "project_list" view.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Allow for href() to be used for links without project param
Jakub Narebski [Fri, 15 Sep 2006 17:30:34 +0000 (19:30 +0200)]
gitweb: Allow for href() to be used for links without project param

Make it possible to use href() subroutine to generate link with
query string which does not include project ('p') parameter.
href() used to add project=$project to its parameters, if it
was not set (to be more exact if $params{'project'} was false).
Now you can pass "project => undef" if you don't want for href()
to add project parameter to query string in the generated link.

Links to "project_list", "project_index" and "opml" (all related
to list of all projects/all git repositories) doesn't need project
parameter. Moreover "project_list" is default view (action) if
project ('p') parameter is not set, just like "summary" is default
view (action) if project is set; project list served as a kind
of "home" page for gitweb instalation, and links to "project_list"
view were done without specyfying it as an action.

Convert remaining links (except $home_link and anchor links)
to use href(); this required adding 'order => "o"' to @mapping
in href(). This finishes consolidation of URL generation.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add git_project_index for generating index.aux
Jakub Narebski [Fri, 15 Sep 2006 02:56:03 +0000 (04:56 +0200)]
gitweb: Add git_project_index for generating index.aux

Add git_project_index, which generates index.aux file that can be used
as a source of projects list, instead of generating projects list from
a directory.  Using file as a source of projects list allows for some
projects to be not present in gitweb main (project_list) page, and/or
correct project owner info. And is probably faster.

Additionally it can be used to get the list of all available repositories
for scripts (in easily parseable form).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Do not parse refs by hand, use git-peek-remote instead
Jakub Narebski [Fri, 15 Sep 2006 01:43:28 +0000 (03:43 +0200)]
gitweb: Do not parse refs by hand, use git-peek-remote instead

This is in response to Linus's work on packed refs. Additionally it
makes gitweb work with symrefs, too.

Do not parse refs by hand, using File::Find and reading individual
heads to get hash of reference, but use git-peek-remote output
instead.  Assume that the hash for deref (with ^{}) always follows hash
for ref, and that we have derefs only for tag objects; this removes
call to git_get_type (and git-cat-file -t invocation) for tags, which
speeds "summary" and "tags" views generation, but might slow generation
of "heads" view a bit.  For now, we do not save and use the deref hash.

Remove git_get_hash_by_ref while at it, as git_get_refs_list was the
only place it was used.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Use File::Find::find in git_get_projects_list
Jakub Narebski [Thu, 14 Sep 2006 20:18:59 +0000 (22:18 +0200)]
gitweb: Use File::Find::find in git_get_projects_list

Earlier code to get list of projects when $projects_list is a
directory (e.g. when it is equal to $projectroot) had a hardcoded flat
(one level) list of directories.  Allow for projects to be in
subdirectories also for $projects_list being a directory by using
File::Find.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Paginate history output
Jakub Narebski [Sun, 10 Sep 2006 22:36:04 +0000 (00:36 +0200)]
gitweb: Paginate history output

git_history output is now divided into pages, like git_shortlog,
git_tags and git_heads output. As whole git-rev-list output is now
read into array before writing anything, it allows for better
signaling of errors.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Make pickaxe search a feature
Jakub Narebski [Sun, 10 Sep 2006 22:29:27 +0000 (00:29 +0200)]
gitweb: Make pickaxe search a feature

As pickaxe search (selected using undocumented 'pickaxe:' operator in
search query) is resource consuming, allow to turn it on/off using
feature meachanism.  Turned on by default, for historical reasons.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Divide page path into directories -- path's "breadcrumbs"
Jakub Narebski [Mon, 4 Sep 2006 16:17:58 +0000 (18:17 +0200)]
gitweb: Divide page path into directories -- path's "breadcrumbs"

Divide page path into directories, so that each part of path links to
the "tree" view of the $hash_base (or HEAD, if $hash_base is not set)
version of the directory.

If the entity is blob, final part (basename) links to $hash_base or
HEAD revision of the "raw" blob ("blob_plain" view).  If the entity is
tree, link to the "tree" view.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Correct typo: '==' instead of 'eq' in git_difftree_body
Jakub Narebski [Mon, 4 Sep 2006 16:19:58 +0000 (18:19 +0200)]
gitweb: Correct typo: '==' instead of 'eq' in git_difftree_body

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add GIT favicon, assuming image/png type
Jakub Narebski [Mon, 4 Sep 2006 18:32:13 +0000 (20:32 +0200)]
gitweb: Add GIT favicon, assuming image/png type

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Change the name of diff to parent link in "commit" view to "diff
Jakub Narebski [Sun, 3 Sep 2006 21:43:03 +0000 (23:43 +0200)]
gitweb: Change the name of diff to parent link in "commit" view to "diff

Change the name of diff to parent (current commit to one of parents)
link in "commit" view (git_commit subroutine) from "commitdiff" to
"diff".  Let's leave "commitdiff" for equivalent of git-show, or
git-diff-tree with one revision, i.e. diff for a given commit to its
parent (parents).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Fix git_blame
Aneesh Kumar K.V [Fri, 1 Sep 2006 03:43:32 +0000 (09:13 +0530)]
gitweb: Fix git_blame

Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Extend parse_difftree_raw_line to save commit info
Jakub Narebski [Wed, 30 Aug 2006 22:36:04 +0000 (00:36 +0200)]
gitweb: Extend parse_difftree_raw_line to save commit info

Extend parse_difftree_raw_line to save commit info from when
git-diff-tree is given only one <tree-ish>, for example when fed
from git-rev-list using --stdin option.

git-diff-tree outputs a line with the commit ID when applicable.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Separate printing of git_tree row into git_print_tree_entry
Jakub Narebski [Wed, 30 Aug 2006 22:35:07 +0000 (00:35 +0200)]
gitweb: Separate printing of git_tree row into git_print_tree_entry

This is preparation for "tree blame" (similar to what ViewVC shows)
output, i.e. for each entry give commit where it was changed.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Move git-ls-tree output parsing to parse_ls_tree_line
Jakub Narebski [Wed, 30 Aug 2006 22:32:15 +0000 (00:32 +0200)]
gitweb: Move git-ls-tree output parsing to parse_ls_tree_line

Add new subroutine parse_ls_tree_line and use it in git_tree.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agouse do() instead of require() to include configuration
Dennis Stosberg [Tue, 29 Aug 2006 07:19:02 +0000 (09:19 +0200)]
use do() instead of require() to include configuration

When run under mod_perl, require() will read and execute the configuration
file on the first invocation only.  On every subsequent invocation, all
configuration variables will be reset to their default values.  do() reads
and executes the configuration file unconditionally.

Signed-off-by: Dennis Stosberg <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove forgotten call to git_to_hash
Dennis Stosberg [Thu, 31 Aug 2006 19:32:45 +0000 (21:32 +0200)]
gitweb: Remove forgotten call to git_to_hash

On Aug 27th, Jakub Narebski sent a patch which removed the git_to_hash()
function and this call to it. The patch did not apply cleanly and had to
be applied manually. Removing the last chunk has obviously been forgotten.

See: commit  0aea33762b1262d11fb43eda9f3fc152b5622cca and
     message <redacted>

Signed-off-by: Dennis Stosberg <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add local time and timezone to git_print_authorship
Jakub Narebski [Mon, 28 Aug 2006 21:17:31 +0000 (23:17 +0200)]
gitweb: Add local time and timezone to git_print_authorship

Add local time (hours and minutes) and local timezone to the output of
git_print_authorship command, used by git_commitdiff.  The code was
taken from git_commit subroutine.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add diff tree, with links to patches, to commitdiff view
Jakub Narebski [Mon, 28 Aug 2006 12:48:14 +0000 (14:48 +0200)]
gitweb: Add diff tree, with links to patches, to commitdiff view

Added/uncommented git_difftree_body invocation in git_commitdiff.
Added anchors (via 'id' attribute) to patches in patchset.
git_difftree_body is modified to link to patch anchor when called from
git_commitdiff, instead of link to blobdiff.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: git_print_log: signoff line is non-empty line
Jakub Narebski [Mon, 28 Aug 2006 12:48:13 +0000 (14:48 +0200)]
gitweb: git_print_log: signoff line is non-empty line

This correct minor error in git_print_log that didn't add final empty
line when requested, if commit log ended with signoff.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add author information to commitdiff view
Jakub Narebski [Mon, 28 Aug 2006 12:48:12 +0000 (14:48 +0200)]
gitweb: Add author information to commitdiff view

Add subroutine git_print_authorship to print author and date of
commit, div.author_date style to CSS, and use them in git_commitdiff.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Do not remove signoff lines in git_print_simplified_log
Jakub Narebski [Mon, 28 Aug 2006 12:48:11 +0000 (14:48 +0200)]
gitweb: Do not remove signoff lines in git_print_simplified_log

Remove '-remove_signoff => 1' option to git_print_log call in the
git_print_simplified_log subroutine.  This means that in "log" and
"commitdiff" views (git_log and git_commitdiff subroutines) signoff
lines will be shown.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Make git_print_log generic; git_print_simplified_log uses it
Jakub Narebski [Mon, 28 Aug 2006 12:48:10 +0000 (14:48 +0200)]
gitweb: Make git_print_log generic; git_print_simplified_log uses it

Collapse git_print_log and git_print_simplified_log into one
subroutine git_print_log.  git_print_simplified_log now simply calls
git_print_log with proper options.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Use --git-dir parameter instead of setting $ENV{'GIT_DIR'}
Dennis Stosberg [Mon, 28 Aug 2006 15:49:58 +0000 (17:49 +0200)]
gitweb: Use --git-dir parameter instead of setting $ENV{'GIT_DIR'}

This makes it possible to run gitweb under mod_perl's Apache::Registry.

It needs a fairly new git version, with --git-dir=<path>
parameter to git wrapper, i.e. post v1.4.2-rc2-g6acbcb9 version.

Signed-off-by: Dennis Stosberg <redacted>
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Use @diff_opts, default ('M'), as git-diff and git-diff-tree paramete
Jakub Narebski [Sun, 27 Aug 2006 21:49:36 +0000 (23:49 +0200)]
gitweb: Use @diff_opts, default ('M'), as git-diff and git-diff-tree paramete

Added new global configuration variable @diff_opts, which holds
additional options (parameters) to git-diff and git-diff-tree, usually
dealing rename/copying detection.  Default value is '-M', taken from
git_commit subroutine.  Description of options and their approximate
cost by Junio C Hamano.

Changes:
* git_commitdiff, git_blobdiff and git_blobdiff_plain now use '-M'
  instead of '-M', '-C'
* git-diff now uses the same options as git-diff-tree
* git_comittdiff_plain now uses '-M' instead of '-B'
  and is now rename-aware
* git_rss uses now '-M' instead of ()

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove git_to_hash function
Jakub Narebski [Sun, 27 Aug 2006 21:45:26 +0000 (23:45 +0200)]
gitweb: Remove git_to_hash function

Remove git_to_hash function, which was to translate symbolic reference
to hash, and it's use in git_blobdiff.  We don't try so hard to guess
filename if it was not provided.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove unused git_get_{preceding,following}_references
Jakub Narebski [Sun, 27 Aug 2006 21:44:38 +0000 (23:44 +0200)]
gitweb: Remove unused git_get_{preceding,following}_references

Remove unused (and with errors in implementation)
git_get_{preceding,following}_references subroutines.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Fix typo in git_patchset_body
Jakub Narebski [Sat, 26 Aug 2006 17:14:23 +0000 (19:14 +0200)]
gitweb: Fix typo in git_patchset_body

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Fix typo in git_difftree_body
Jakub Narebski [Sat, 26 Aug 2006 21:33:58 +0000 (23:33 +0200)]
gitweb: Fix typo in git_difftree_body

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: blobs defined by non-textual hash ids can be cached
Jakub Narebski [Sat, 26 Aug 2006 17:14:25 +0000 (19:14 +0200)]
gitweb: blobs defined by non-textual hash ids can be cached

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Improve comments about gitweb features configuration
Jakub Narebski [Sat, 26 Aug 2006 17:14:22 +0000 (19:14 +0200)]
gitweb: Improve comments about gitweb features configuration

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove workaround for git-diff bug fixed in f82cd3c
Jakub Narebski [Sat, 26 Aug 2006 10:33:17 +0000 (12:33 +0200)]
gitweb: Remove workaround for git-diff bug fixed in f82cd3c

Remove workaround in git_blobdiff for error in git-diff (showing
reversed diff for diff of blobs), corrected in commit f82cd3c
Fix "git diff blob1 blob2" showing the diff in reverse.  which
is post 1.4.2-rc2 commit.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: git_annotate didn't expect negative numeric timezone
Jakub Narebski [Sat, 26 Aug 2006 00:13:05 +0000 (02:13 +0200)]
gitweb: git_annotate didn't expect negative numeric timezone

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove creating directory for temporary files
Jakub Narebski [Fri, 25 Aug 2006 19:35:27 +0000 (21:35 +0200)]
gitweb: Remove creating directory for temporary files

Remove $git_temp variable which held location for temporary files
needed by git_diff_print, and removed creating $git_temp directory.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove git_diff_print subroutine
Jakub Narebski [Fri, 25 Aug 2006 19:15:27 +0000 (21:15 +0200)]
gitweb: Remove git_diff_print subroutine

Remove git_diff_print subroutine, used to print diff in previous
versions of "diff" actions, namely git_commitdiff,
git_commitdiff_plain, git_blobdiff, git_blobdiff_plain.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: git_blobdiff_plain is git_blobdiff('plain')
Jakub Narebski [Fri, 25 Aug 2006 19:14:49 +0000 (21:14 +0200)]
gitweb: git_blobdiff_plain is git_blobdiff('plain')

git_blobdiff and git_blobdiff_plain are now collapsed into one
subroutine git_blobdiff, with format (currently 'html' which is
default format corresponding to git_blobdiff, and 'plain'
corresponding to git_blobdiff_plain) specified in argument.

blobdiff_plain format is now generated either by git-diff-tree
or by git-diff.  Added X-Git-Url: header.  From-file and to-file name
in header are corrected.

Note that for now commitdiff_plain does not detect renames
and copying, while blobdiff_plain does.

While at it, set expires to "+1d" for non-textual hash ids.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Use git-diff-tree or git-diff patch output for blobdiff
Jakub Narebski [Fri, 25 Aug 2006 19:13:34 +0000 (21:13 +0200)]
gitweb: Use git-diff-tree or git-diff patch output for blobdiff

This is second part of removing gitweb dependency on external
diff (used in git_diff_print).

Get rid of git_diff_print invocation in git_blobdiff, and use either
git-diff-tree (when both hash_base and hash_parent_base are provided)
patch format or git-diff patch format (when only hash and hash_parent
are provided) for output.

Supported URI schemes, and output formats:
* New URI scheme: both hash_base and hash_parent_base (trees-ish
  containing blobs versions we want to compare) are provided.
  Also either filename is provided, or hash (of blob) is provided
  (we try to find filename then).

  For this scheme we have copying and renames detection, mode changes,
  file types etc., and information extended diff header is correct.

* Old URI scheme: hash_parent_base is not provided, we use hash and
  hash_parent to directly compare blobs using git-diff. If no filename
  is given, blobs hashes are used in place of filenames.

  This scheme has always "blob" as file type, it cannot detect mode
  changes, and we rely on CGI parameters to provide name of the file.

Added git_to_hash subroutine, which transforms symbolic name or list
of symbolic name to hash or list of hashes using git-rev-parse.

To have "blob" instead of "unknown" (or "file" regardless of the type)
in "gitweb diff header" for legacy scheme, file_type function now
returns its argument if it is not octal string.

Added support for fake "2" status code in git_patchset_body. Such code
is generated by git_blobdiff in legacy scheme case.

ATTENTION: The order of arguments (operands) to git-diff is reversed
(sic!) to have correct diff in the legacy (no hash_parent_base) case.
$hash_parent, $hash ordering is commented out, as it gives reversed
patch (at least for git version 1.4.1.1) as compared to output in new
scheme and output of older gitweb version.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Change here-doc back for style consistency in git_blobdiff
Jakub Narebski [Fri, 25 Aug 2006 19:06:49 +0000 (21:06 +0200)]
gitweb: Change here-doc back for style consistency in git_blobdiff

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Always display link to blobdiff_plain in git_blobdiff
Jakub Narebski [Fri, 25 Aug 2006 19:05:45 +0000 (21:05 +0200)]
gitweb: Always display link to blobdiff_plain in git_blobdiff

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add invisible hyperlink to from-file/to-file diff header
Jakub Narebski [Fri, 25 Aug 2006 19:05:07 +0000 (21:05 +0200)]
gitweb: Add invisible hyperlink to from-file/to-file diff header

Change replacing hashes as from-file/to-file with filenames from
difftree to adding invisible (except underlining on hover/mouseover)
hyperlink to from-file/to-file blob.  /dev/null as from-file or
to-file is not changed (is not hyperlinked).

This makes two-file from-file/to-file unified diff header parsing in
git_patchset_body more generic, and not only for legacy blobdiffs.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Parse two-line from-file/to-file diff header in git_patchset_body
Jakub Narebski [Fri, 25 Aug 2006 19:04:13 +0000 (21:04 +0200)]
gitweb: Parse two-line from-file/to-file diff header in git_patchset_body

Parse two-line from-file/to-file unified diff header in
git_patchset_body directly, instead of leaving pretty-printing to
format_diff_line function.  Hashes as from-file/to-file are replaced
by proper from-file and to-file names (from $diffinfo); in the future
we can put hyperlinks there.  This makes possible to do blobdiff with
only blobs hashes.

The lines in two-line unified diff header have now class "from_file"
and "to_file"; the style is chosen to match previous output (classes
"rem" and "add" because of '-' and '+' as first character of patch
line).

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Allow for pre-parsed difftree info in git_patchset_body
Jakub Narebski [Fri, 25 Aug 2006 18:59:39 +0000 (20:59 +0200)]
gitweb: Allow for pre-parsed difftree info in git_patchset_body

Preparation for converting git_blobdiff and git_blobdiff_plain
to use git-diff-tree patch format to generate patches.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add support for hash_parent_base parameter for blobdiffs
Jakub Narebski [Thu, 24 Aug 2006 21:53:54 +0000 (23:53 +0200)]
gitweb: Add support for hash_parent_base parameter for blobdiffs

Add support for hash_parent_base in input validation part and in
href() function.  Add proper hash_parent_base to all calls to blobdiff
and blobdiff_plain action URLs. Use hash_parent_base as hash_base for
blobs of hash_parent.

To be used in future rewrite of git_blobdiff and git_blobdiff_plain.

While at it, move project before action in ordering CGI parameters in
href().

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Use git_get_name_rev_tags for commitdiff_plain X-Git-Tag: header
Jakub Narebski [Thu, 24 Aug 2006 17:45:30 +0000 (19:45 +0200)]
gitweb: Use git_get_name_rev_tags for commitdiff_plain X-Git-Tag: header

Use git_get_rev_name_tags function for X-Git-Tag: header in
git_commitdiff('plain'), i.e. for commitdiff_plain action.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add git_get_rev_name_tags function
Jakub Narebski [Thu, 24 Aug 2006 17:41:23 +0000 (19:41 +0200)]
gitweb: Add git_get_rev_name_tags function

Add git_get_rev_name_tags function, for later use in
git_commitdiff('plain') for X-Git-Tag: header.

This function, contrary to the call to
  git_get_following_references($hash, "tags");
_does_ strip "tags/" and returns bare tag name.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Faster return from git_get_preceding_references if possible
Jakub Narebski [Thu, 24 Aug 2006 17:39:32 +0000 (19:39 +0200)]
gitweb: Faster return from git_get_preceding_references if possible

Return on first ref found when git_get_preceding_references
is called in scalar context

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Add git_get_{following,preceding}_references functions
Jakub Narebski [Thu, 24 Aug 2006 17:37:04 +0000 (19:37 +0200)]
gitweb: Add git_get_{following,preceding}_references functions

Adds git_get_following_references function, based on code which was
used in git_commitdiff_plain to generate X-Git-Tag: header,
and companion git_get_preceding_references function.

Both functions return array of all references of given type (as
returned by git_get_references) following/preceding given commit in
array (list) context, and last following/first preceding ref in scalar
context.

Stripping ref (list of refs) of "$type/" (e.g. "tags/") is left to
caller.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Streamify patch output in git_commitdiff
Jakub Narebski [Thu, 24 Aug 2006 17:34:36 +0000 (19:34 +0200)]
gitweb: Streamify patch output in git_commitdiff

Change output of patch(set) in git_commitdiff from slurping whole diff
in @patchset array before processing, to passing file descriptor to
git_patchset_body.

Advantages: faster, incremental output, smaller memory footprint.
Disadvantages: cannot react when there is error during closing file
descriptor.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
33 hours agogitweb: Remove invalid comment in format_diff_line
Jakub Narebski [Thu, 24 Aug 2006 17:32:13 +0000 (19:32 +0200)]
gitweb: Remove invalid comment in format_diff_line

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