Commit Graph

737 Commits

Author SHA1 Message Date
Lars Hjemli
af2e75616d cache.c: do not ignore errors from print_slot()
If print_slot() fails, the client will be served an inferior response.
This patch makes sure that such an error will be returned to main(), which
in turn will try to inform about the error in the response itself.

The error is also printed to the cache_log, i.e. stderr, which will make
the error message appear in error_log (atleast when httpd==apache).

Noticed-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 23:59:11 +02:00
Lars Hjemli
cdc6b2f8e7 cache.c: use xread()/xwrite() from libgit
These functions handles EINTR/EAGAIN errors during read/write operations,
which is something cache.c didn't.

While at it, fix a bug in print_slot() where errors during reading from the
cache slot might go by unnoticed.

Noticed-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 23:34:55 +02:00
Lars Hjemli
d402811bd2 cache.c: make all io-related functions return errno on error
We'll need proper return-values from these functions to make the cache
behave correctly (which includes giving proper error messages).

Noticed-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 23:16:50 +02:00
Lars Hjemli
6102bcfce4 cache.c: read(2) returns -1 on error, not 0
Noticed-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 23:10:05 +02:00
Lars Hjemli
c3de425acb Use GIT-1.5.5.1
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 21:40:28 +02:00
Lars Hjemli
8907f2a031 Include commit-id in link from diff-stat
This fixes a regression created by fe1230dece,
and modifies a test to avoid future regressions.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 21:33:30 +02:00
Lars Hjemli
502d57596e ui-commit: handle root commits
Both cgit_print_diff() and cgit_diff_tree() handles root commits nicely,
but cgit_print_commit() forgot to check the case of 0 parents.

This fixes it, and adds tests to avoid future regressions.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 21:13:21 +02:00
Lars Hjemli
17890d0058 Add link to index page from repo header, remove page name
This makes it more obvious how to get back to the index, especially when the
config option `logo-link` is used. And the page name displayed in the header
provided no extra information. It only consumed space and deserved to die.

While at it, make sure that the different parts of the header doesn't wrap
when horizontal space is limited.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-04 17:30:02 +02:00
Lars Hjemli
aa3c4486b4 Add footer with page creation time and cgit version on all pages
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-03 11:07:41 +02:00
Lars Hjemli
c6078b8b00 Add a pager on the repolist
This enables a pager on the repolist which restricts the number of entries
displayed per page, controlled by the new option `max-repo-count` (default
value 50).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-03 10:54:39 +02:00
Lars Hjemli
141f1c3eb6 Add cgit_index_link() function with support for offset
This function will be used to build a pager in ui-repolist.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-03 10:37:02 +02:00
Lars Hjemli
e19683bede Merge branch 'lh/cache'
* lh/cache:
  Add page 'ls_cache'
  Redesign the caching layer
2008-05-03 10:10:07 +02:00
Harley Laue
112b208062 Print an error if filename is not found in html_include.
Normally when html_include cannot open the file it fails silently and
things can be a bit hard to figure out from just looking at apache's
log. This will be beneficial for those initially setting up their server
with cgit.

Signed-off-by: Harley Laue <losinggeneration@aim.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 17:59:53 +02:00
Lars Hjemli
905dbaef5a Merge branch 'lh/about'
* lh/about:
  Add 'about site' and 'about repo' pages
  Prepare for 'about site' page / add 'root-readme' option to cgitrc
  Make it possible for a single cmd to work both with and without a repo
  Re-enable 'index-info' and add support for 'root-desc' in cgitrc
  Move included header-file out of repolist table
  Prepare for 'about repo' page
2008-04-29 01:13:08 +02:00
Lars Hjemli
71adba1f16 Add 'about site' and 'about repo' pages
This commit uses the options and changes from the last few commits to
implement a new 'about' command which works both with and without a
repo.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 01:09:41 +02:00
Lars Hjemli
c6431a7150 Prepare for 'about site' page / add 'root-readme' option to cgitrc
The new option names a file which will be included on a new page, next
to the current 'index' page.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 01:06:30 +02:00
Lars Hjemli
651ef79768 Make it possible for a single cmd to work both with and without a repo
When cgit_cmd.want_repo was 0, we used to assume that the cmd would never
be invoked for a repo. But soon this will become untrue (the 'about' cmd
is rapidly approching), so from now on we will initialize any requested
repo even if want_repo==0 (and return an error if want_repo==1 but no repo
is specified).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 01:01:30 +02:00
Lars Hjemli
4c9916043d Re-enable 'index-info' and add support for 'root-desc' in cgitrc
The 'index-info' option got lost when the layout was converted from
sidebar to old-fashioned header (noticed by Harley Laue, thanks!), and
this commit re-enables it.

But there is now also an alternative in the 'root-desc' option; where
'index-info' specifies a file to include, 'root-desc' specifies the text
literally. This might be nicer for the one-liner descriptions which these
options typically provides.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 00:55:34 +02:00
Lars Hjemli
8062817885 Move included header-file out of repolist table
When the 'index-header' option is specified in cgitrc we used to print
the included file content inside the repolist table, which is bad style.

This commit makes the included file be printed before the table.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 00:35:49 +02:00
Lars Hjemli
90f64ad96d Prepare for 'about repo' page
Each repo can include an external file which used to be included on the
top of the summary page, but it will now soon get a page of it own.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-28 23:06:57 +02:00
Lars Hjemli
9000bbf865 Add page 'ls_cache'
This new page will list all entries found in the current cache, which is
useful when reviewing the new cache implementation. There are no links to
the new page, but it's reachable by adding 'p=ls_cache' to any cgit url.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-28 12:10:13 +02:00
Lars Hjemli
939d32fda7 Redesign the caching layer
The original caching layer in cgit has no upper bound on the number of
concurrent cache entries, so when cgit is traversed by a spider (like the
googlebot), the cache might end up filling your disk. Also, if any error
occurs in the cache layer, no content is returned to the client.

This patch redesigns the caching layer to avoid these flaws by
* giving the cache a bound number of slots
* disabling the cache for the current request when errors occur

The cache size limit is implemented by hashing the querystring (the cache
lookup key) and generating a cache filename based on this hash modulo the
cache size. In order to detect hash collisions, the full lookup key (i.e.
the querystring) is stored in the cache file (separated from its associated
content by ascii 0).

The cache filename is the reversed 8-digit hexadecimal representation of

  hash(key) % cache_size

which should make the filesystem lookup pretty fast (if directory content
is indexed/sorted); reversing the representation avoids the problem where
all keys have equal prefix.

There is a new config option, cache-size, which sets the upper bound for
the cache. Default value for this option is 0, which has the same effect
as setting nocache=1 (hence nocache is now deprecated).

Included in this patch is also a new testfile which verifies that the
new option works as intended.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-28 11:32:42 +02:00
Lars Hjemli
d188ed4f29 ui-diff: remove test on object type
By removing the test for commit objects it's now possible to specify a
tag name for the id query-string parameter (it already worked for id2).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-24 23:41:39 +02:00
Lars Hjemli
fe1230dece Integrate diffstat with diff
This creates a generic diffstat function in ui-diff, which then is
invoked from cgit_print_diff with the result that both commit and diff-
view gets a diffstat.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-24 23:41:32 +02:00
Lars Hjemli
9ec5cd7944 Fix commitdiff annoyance
Someone were a bit sloppy when the commitdiff got included 'inline' in
commit 89aa3c0d0a. This patch deletes a
stray `)` and makes sure the diffstat summary `<div>` is closed before
the full diff is printed.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-17 18:33:33 +02:00
Lars Hjemli
3cfcb086ab Cleanup page header
Fix some invalid html, remove dead code.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-15 00:00:11 +02:00
Lars Hjemli
78031f92b0 Fix search in repo index even if caching is enabled
The repository index page needed to include the querystring in the cache
filename.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-14 23:07:52 +02:00
Lars Hjemli
e9a7042b5b Make a few more columns in repolist and log view clickable
Less mouse movement is nice.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-14 22:23:48 +02:00
Lars Hjemli
5764fe9546 Make branches, tags and log play better together in the summary view
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-14 22:13:38 +02:00
Lars Hjemli
35d19bbb64 Fix more css ugliness
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-14 22:10:33 +02:00
Lars Hjemli
2ee1238cdf cgit.css: set form margins
According to the css2 spec, htmlforms have 1.12em top and bottom margins. That
doesn't play well with the placement of the search form, so lets force it to
use 0em margins.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-14 10:21:18 +02:00
Lars Hjemli
adf61225c4 Fix css font-family
When the sidebar was introduced in v0.7 the default font-family property
got messed up, but this commit should fix the issue.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-14 10:07:43 +02:00
Lars Hjemli
76ba6287bf Merge branch 'lh/layout'
* lh/layout:
  Make repository search case insensitive
  Remove 'patch' link from tab, add to commit view
  Implement minimal freetext search in the repolist
  More layout fixes
  Minor fixup in tree-view css
  Reintroduce the branch switcher
  Add fixed link to index page from repo header
  Include diff in commit view
  Replace sidebar/logo
2008-04-13 12:48:44 +02:00
Lars Hjemli
28d781f34b Make repository search case insensitive
This reuses the strcasestr() compiled or linked by libgit.a to implement a
case insensitive variation of the repository search.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13 12:46:54 +02:00
Lars Hjemli
39912a24ed Remove 'patch' link from tab, add to commit view
It's a bit confusing to enter the patch view from the tab, since it has no
layout. And the commit view has always lacked showing the commit id. Both of
these warts are fixed by this commit, which adds a new header line in the
commit view which shows the commit id as a 'permalink' to the current commit
and also adds a link to the patch view of the current commit.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13 12:20:00 +02:00
Lars Hjemli
536b0541fc Implement minimal freetext search in the repolist
This makes the repolist much more usable when there's a lot of repositories
registered in cgitrc.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13 12:10:03 +02:00
Lars Hjemli
931fc6d1e4 More layout fixes
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13 10:57:11 +02:00
Lars Hjemli
72a69b77e7 Minor fixup in tree-view css
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:18:16 +02:00
Lars Hjemli
68cb84839f Reintroduce the branch switcher
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:11:49 +02:00
Lars Hjemli
7c0d2d9fbd Add fixed link to index page from repo header
This makes it easier to get back to the index page, and also re-enables
the usage of logo-link in cgitrc.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:01:41 +02:00
Lars Hjemli
89aa3c0d0a Include diff in commit view
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:00:40 +02:00
Lars Hjemli
f135569b2b Replace sidebar/logo
This replaces the sidebar with a more 'common' header layout and also
updates the logo.

Not quite finished yet, though.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:00:27 +02:00
Lars Hjemli
4a84228826 Use GIT-1.5.5 2008-04-09 18:06:26 +02:00
Lars Hjemli
fa4dfee548 Don't specify mimetype in ui-blob.c
But be sure to specify correct filename. This way, the client can hopefully
guess a sensible mimetype based on the filename suffix, and cgit can ignore
the issue altogether.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-08 21:35:00 +02:00
Lars Hjemli
23296ad648 Merge branch 'lh/cleanup'
* lh/cleanup: (21 commits)
  Reset ctx.repo to NULL when the config parser is finished
  Move cgit_parse_query() from parsing.c to html.c as http_parse_querystring()
  Move function for configfile parsing into configfile.[ch]
  Add cache.h
  Remove global and obsolete cgit_cmd
  Makefile: copy the QUIET constructs from the Makefile in git.git
  Move cgit_version from shared.c to cgit.c
  Makefile: autobuild dependency rules
  Initial Makefile cleanup
  Move non-generic functions from shared.c to cgit.c
  Add ui-shared.h
  Add separate header-files for each page/view
  Refactor snapshot support
  Add command dispatcher
  Remove obsolete cacheitem parameter to ui-functions
  Add struct cgit_page to cgit_context
  Introduce html.h
  Improve initialization of git directory
  Move cgit_repo into cgit_context
  Add all config variables into struct cgit_context
  ...
2008-04-08 21:29:21 +02:00
Lars Hjemli
c6f747649a Reset ctx.repo to NULL when the config parser is finished
This global variable is used by the config parsing callback to keep track
of the currently configured repository. If it is not reset to NULL when
the config parser is finished, and neither `url` or `r` is specified on the
querystring, cgit will wrongly consider the last configured repo as
selected.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-08 21:27:12 +02:00
Lars Hjemli
e87e896333 Move cgit_parse_query() from parsing.c to html.c as http_parse_querystring()
This is a generic http-function.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-08 21:11:36 +02:00
Lars Hjemli
e2a44cf092 Use GIT-1.5.5-rc2 2008-04-01 00:59:55 +02:00
Lars Hjemli
20a33548b9 Move function for configfile parsing into configfile.[ch]
This is a generic function which wanted its own little object file.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-28 00:09:11 +01:00
Lars Hjemli
ee4056bd2c Add cache.h
The functions found in cache.c are only used by cgit.c, so there's no
point in rebuilding all object files when the cache interface is changed.


Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-27 09:22:13 +01:00