aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
...
| * Redesign the caching layerGravatar Lars Hjemli2008-04-28-210/+418
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Print an error if filename is not found in html_include.Gravatar Harley Laue2008-04-30-1/+5
| | | | | | | | | | | | | | | | | | | | 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>
* | Merge branch 'lh/about'Gravatar Lars Hjemli2008-04-29-16/+100
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
| * | Add 'about site' and 'about repo' pagesGravatar Lars Hjemli2008-04-29-3/+59
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | Prepare for 'about site' page / add 'root-readme' option to cgitrcGravatar Lars Hjemli2008-04-29-0/+10
| | | | | | | | | | | | | | | | | | | | | 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>
| * | Make it possible for a single cmd to work both with and without a repoGravatar Lars Hjemli2008-04-29-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | Re-enable 'index-info' and add support for 'root-desc' in cgitrcGravatar Lars Hjemli2008-04-29-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | Move included header-file out of repolist tableGravatar Lars Hjemli2008-04-29-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | Prepare for 'about repo' pageGravatar Lars Hjemli2008-04-29-5/+10
|/ / | | | | | | | | | | | | 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>
* | ui-diff: remove test on object typeGravatar Lars Hjemli2008-04-25-6/+0
| | | | | | | | | | | | | | 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>
* | Integrate diffstat with diffGravatar Lars Hjemli2008-04-25-142/+152
|/ | | | | | | | 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>
* Fix commitdiff annoyanceGravatar Lars Hjemli2008-04-18-1/+1
| | | | | | | | | Someone were a bit sloppy when the commitdiff got included 'inline' in commit 89aa3c0d0a4c6d9885272602005975b763ea1604. 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>
* Cleanup page headerGravatar Lars Hjemli2008-04-15-17/+4
| | | | | | Fix some invalid html, remove dead code. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Fix search in repo index even if caching is enabledGravatar Lars Hjemli2008-04-15-1/+3
| | | | | | | The repository index page needed to include the querystring in the cache filename. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Make a few more columns in repolist and log view clickableGravatar Lars Hjemli2008-04-15-0/+7
| | | | | | Less mouse movement is nice. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Make branches, tags and log play better together in the summary viewGravatar Lars Hjemli2008-04-15-34/+43
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Fix more css uglinessGravatar Lars Hjemli2008-04-15-10/+4
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cgit.css: set form marginsGravatar Lars Hjemli2008-04-14-1/+1
| | | | | | | | 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>
* Fix css font-familyGravatar Lars Hjemli2008-04-14-1/+1
| | | | | | | 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>
* Merge branch 'lh/layout'Gravatar Lars Hjemli2008-04-13-180/+238
|\ | | | | | | | | | | | | | | | | | | | | | | | | * 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
| * Make repository search case insensitiveGravatar Lars Hjemli2008-04-13-4/+11
| | | | | | | | | | | | | | 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>
| * Remove 'patch' link from tab, add to commit viewGravatar Lars Hjemli2008-04-13-2/+8
| | | | | | | | | | | | | | | | | | | | 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>
| * Implement minimal freetext search in the repolistGravatar Lars Hjemli2008-04-13-13/+47
| | | | | | | | | | | | | | 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>
| * More layout fixesGravatar Lars Hjemli2008-04-13-33/+98
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Minor fixup in tree-view cssGravatar Lars Hjemli2008-04-13-3/+2
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Reintroduce the branch switcherGravatar Lars Hjemli2008-04-13-0/+17
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add fixed link to index page from repo headerGravatar Lars Hjemli2008-04-13-3/+9
| | | | | | | | | | | | | | 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>
| * Include diff in commit viewGravatar Lars Hjemli2008-04-13-3/+5
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Replace sidebar/logoGravatar Lars Hjemli2008-04-13-175/+97
|/ | | | | | | | | 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>
* Use GIT-1.5.5Gravatar Lars Hjemli2008-04-10-1/+1
|
* Don't specify mimetype in ui-blob.cGravatar Lars Hjemli2008-04-09-2/+3
| | | | | | | | 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>
* Merge branch 'lh/cleanup'Gravatar Lars Hjemli2008-04-09-1117/+1379
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 ...
| * Reset ctx.repo to NULL when the config parser is finishedGravatar Lars Hjemli2008-04-09-0/+1
| | | | | | | | | | | | | | | | | | | | 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>
| * Move cgit_parse_query() from parsing.c to html.c as http_parse_querystring()Gravatar Lars Hjemli2008-04-09-64/+68
| | | | | | | | | | | | This is a generic http-function. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Move function for configfile parsing into configfile.[ch]Gravatar Lars Hjemli2008-03-28-78/+99
| | | | | | | | | | | | This is a generic function which wanted its own little object file. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add cache.hGravatar Lars Hjemli2008-03-27-14/+25
| | | | | | | | | | | | | | | | 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>
| * Remove global and obsolete cgit_cmdGravatar Lars Hjemli2008-03-25-2/+1
| | | | | | | | | | | | This variable was obsoleted by cmd.c. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Makefile: copy the QUIET constructs from the Makefile in git.gitGravatar Lars Hjemli2008-03-25-5/+31
| | | | | | | | | | | | | | These constructs were introduced by Shawn O. Pearce in commit 74f2b2a8d006a49e1be7e30731c2f7365d2741d1. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Move cgit_version from shared.c to cgit.cGravatar Lars Hjemli2008-03-25-3/+5
| | | | | | | | | | | | | | With the matching Makefile change, this makes sure that only cgit.o and cgit proper needs to be rebuildt when VERSION has been modified. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Makefile: autobuild dependency rulesGravatar Lars Hjemli2008-03-25-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This uses gcc to generate dependency rules for each `.o` file, based on the corresponding `.c` file, into a new set of `.d` files (which are also defined to depend on the same set of source files as their `.o` files). Result: * all objectfile dependencies are correctly calculated * only the necessary dependencies are recalculated when a sourcefile is updated Inspiration for the build rules: * http://www.gnu.org/software/make/manual/make.html#Automatic-Prerequisites * http://make.paulandlesley.org/autodep.html Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Initial Makefile cleanupGravatar Lars Hjemli2008-03-25-7/+22
| | | | | | | | | | | | | | Sort the list of object files to improve readability/mergeability and remove manual dependency information which will soon be generated automatically. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Move non-generic functions from shared.c to cgit.cGravatar Lars Hjemli2008-03-25-157/+155
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add ui-shared.hGravatar Lars Hjemli2008-03-25-32/+47
| | | | | | | | | | | | | | This is finally a proper headerfile for the shared ui-functions which used to reside in cgit.h Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add separate header-files for each page/viewGravatar Lars Hjemli2008-03-25-189/+257
| | | | | | | | | | | | Yet another step towards removing cgit.h. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Refactor snapshot supportGravatar Lars Hjemli2008-03-25-86/+90
| | | | | | | | | | | | | | | | | | The snapshot support needs to be split between output- and config-related functions to get the layering between shared.c and ui-*.c right. There is also some codestyle-issues which needs fixing to make the snapshot functions more similar to the rest of the cgit code. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add command dispatcherGravatar Lars Hjemli2008-03-24-110/+169
| | | | | | | | | | | | | | This simplifies the code in cgit.c and makes it easier to extend cgit with new pages/commands. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Remove obsolete cacheitem parameter to ui-functionsGravatar Lars Hjemli2008-03-24-17/+16
| | | | | | | | | | | | This parameter hasn't been used for a very long time... Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add struct cgit_page to cgit_contextGravatar Lars Hjemli2008-03-24-88/+113
| | | | | | | | | | | | | | | | This struct is used when generating http headers, and as such is another small step towards the goal of the whole cleanup series; to invoke each page/view function with a function pointer. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Introduce html.hGravatar Lars Hjemli2008-03-18-46/+71
| | | | | | | | | | | | | | | | All html-functions can be quite easily separated from the rest of cgit, so lets do it; the only issue was html_filemode which uses some git-defined macros so the function is moved into ui-shared.c::cgit_print_filemode(). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Improve initialization of git directoryGravatar Lars Hjemli2008-02-17-10/+9
| | | | | | | | | | | | | | Using the functions offered by libgit feels like the right thing to do. Also, make sure that config errors gets properly reported. Signed-off-by: Lars Hjemli <hjemli@gmail.com>