summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* CGIT 0.8.2.2 v0.8.2.2Lars Hjemli2009-09-131-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-plain.c: only return the blob with the specified pathLars Hjemli2009-09-061-1/+2
| | | | | | | | | | When a path to a directory was specified for the 'plain' view, each blob in the directory used to be returned to the client. This patch fixes the issue by matching the path of each blob against the requested path. Noticed-by: Lars Stoltenow <penma@penma.de> Signed-off-by: Lars Hjemli <larsh@slackbox.hjemli.net>
* truncate buffer before reading empty filesSimon Arlott2009-08-182-0/+2
| | | | | | | | | | If readfile() reads an empty file, fgets() won't truncate the buffer and it'll still contain the contents of the previously read file. [lh: fixed similar issue in ui-repolist.c] Signed-off-by: Simon Arlott <simon@fire.lp0.eu> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: don't print header <img/> if there isn't a logo definedMatthew Metnetsky2009-08-181-8/+11
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cgit.c: do not segfault on unexpected query-string formatLars Hjemli2009-08-171-0/+3
| | | | | | | | The querystring_cb() function will be invoked with a NULL value when the querystring contains a name not followed by a '='. Such a value used to cause a segfault, which this patch fixes. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tag.c: do not segfault when id is missing from query-stringLars Hjemli2009-08-171-1/+4
| | | | | | | | | | | | | | | The purpose of the tag page is to print info about a specific tag, but if no tag was specified on the query-string cgit used to segfault. With this patch, cgit will fallback to the value of the 'h' parameter instead (which is never NULL due to prepare_repo_cmd() in cgit.c). It will now also verify that the specified tagname is in fact a valid ref in the 'refs/tags/' namespace, i.e. specifying 'id=master' will trigger a 'Bad tag reference' error. Noticed-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* CGIT 0.8.2.1 v0.8.2.1Lars Hjemli2009-03-151-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-snapshot: avoid segfault when no filename is specifiedLars Hjemli2009-03-151-6/+17
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* fix segfault when displaying empty blobsEric Wong2009-03-151-5/+8
| | | | | | | | When size is zero, subtracting one from it turns it into ULONG_MAX which causes an out-of-bounds access on buf. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree: escape ascii-text properly in hexdump viewLars Hjemli2009-02-121-4/+9
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* CGIT 0.8.2 v0.8.2Lars Hjemli2009-02-011-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.6.1.1Lars Hjemli2009-02-012-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/binary'Lars Hjemli2009-02-017-30/+119
|\
| * shared.c: avoid SEGFAULT when checking for binary buffersLars Hjemli2009-02-011-2/+2
| | | | | | | | | | | | | | Before calling buffer_is_binary() we need to verify that the buffer is valid. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-tree: show hexdump of binary blobsLars Hjemli2009-01-312-23/+67
| | | | | | | | | | | | | | This teaches ui-tree to detect binary blobs and display them similar to `hexdump -C` (only wider). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Handle binary files in diffsLars Hjemli2009-01-315-7/+52
| | | | | | | | | | | | | | This teaches all diff-related operations (i.e. ui-log, ui-diff and ui-patch) how to handle binary files. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/header'Lars Hjemli2009-02-014-0/+9
|\ \ | |/ |/|
| * Add support for a custom headerLars Hjemli2009-01-294-0/+9
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'stable'Lars Hjemli2009-01-291-2/+4
|\ \ | |/ |/|
| * html.c: use correct escaping in html attributesLars Hjemli2009-01-291-2/+4
| | | | | | | | | | | | | | First, an apostrophe is not a quote. Second, we also need to escape quotes. And finally, quotes are encoded as '&quot;', not '&quote;'. Sighned-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'stable'Lars Hjemli2009-01-271-1/+1
|\|
| * CGIT 0.8.1.1 v0.8.1.1Lars Hjemli2009-01-271-1/+1
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'jw/commit-decorations'Lars Hjemli2009-01-274-1/+12
|\ \ | | | | | | | | | | | | | | | | | | Conflicts: cgit.css Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | tests/t0105-commit.sh: expect commit decorationsLars Hjemli2009-01-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | When a commit is referenced by a branch or tag the commit subject- line will be suffixed with the proper decorations, hence the test for this line needs to be updated. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | cgit.css: minor adjustment of commit decorationsLars Hjemli2009-01-271-0/+5
| | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Add decorations to commit pagesJustin Waters2009-01-272-0/+5
| | | | | | | | | | | | | | | | | | | | | This adds the tag and branch head decorations to the commit pages. This is similar to how commits are displayed in the standard gitweb interface. Signed-off-by: Justin Waters <justin.waters@timesys.com>
* | | Merge branch 'og/tree-view-selection'Lars Hjemli2009-01-273-28/+34
|\ \ \ | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | changed objects are outputted, allowing for selections of code onlyOnne Gorter2009-01-103-28/+34
| | | |
* | | | Merge branch 'lh/stats'Lars Hjemli2009-01-2712-4/+569
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: cgit.c cgit.css cgit.h ui-tree.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-stats.c: reuse cgit_add_hidden_formfields()Lars Hjemli2008-12-071-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes sure that the currect branch and path is preserved when changing the stats period or author count. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-shared: externalize add_hidden_formfields()Lars Hjemli2008-12-072-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | This function will be reused by ui-stats.c in the next commit. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-tree: add link to stats page per pathLars Hjemli2008-12-071-0/+3
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-shared: add and use cgit_stats_link()Lars Hjemli2008-12-072-2/+10
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-stats: replace 'enable-stats' setting with 'max-stats'Lars Hjemli2008-12-078-58/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new 'max-stats' and 'repo.max-stats' settings makes it possible to define the maximum statistics period, both globally and per repo. Hence, it is now feasible to allow statistics on repositories with a high commit frequency, like linux-2.6, by setting repo.max-stats to e.g. 'month'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-stats: enable path-filtered statsLars Hjemli2008-12-071-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When a path is specified on the querystring the commit statistics will now be filtered by this path. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | Add a 'stats' page to each repoLars Hjemli2008-12-0610-0/+497
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This new page, which is disabled by default, can be used to print some statistics about the number of commits per period in the repository, where period can be either weeks, months, quarters or years. The function can be activated globally by setting 'enable-stats=1' in cgitrc and disabled for individual repos by setting 'repo.enable-stats=0'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Merge branch 'stable'Lars Hjemli2009-01-122-8/+11
|\ \ \ \ | | |_|/ | |/| |
| * | | Makefile: install cgit.{css,png} in CGIT_DATA_PATHTodd Zullinger2009-01-121-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | CGIT_DATA_PATH defaults to CGIT_SCRIPT_PATH, but allows users to install the cgi and the data files in different locations. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | Makefile: add INSTALL var to set install commandTodd Zullinger2009-01-121-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This also explicitly sets the modes for installed files (755 for the .cgi, 644 for the .css and .png). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | Fix tar.bz2 snapshot exampleTodd Zullinger2009-01-121-2/+2
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Merge branch 'stable'Lars Hjemli2009-01-112-2/+6
|\| | |
| * | | Avoid SEGFAULT on invalid requestsLars Hjemli2009-01-112-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an unknown page is requested, either on the querystring or via PATH_INFO, we end up with a null-referencing cgit_cmd. This null- pointer is then used as argument to the hc() function (which decides what tab to render as 'active'), but this function failed to check if a valid cmd was specified and a SEGFAULT would occur. This patch fixes the issue by introducing a 'fallback-cmd' which specifies what tab to render as 'active' when no valid cmd is requested. While at it, we now also keep track of the active repository even if an invalid cmd was requested since we want to show the error message about the invalid request in the correct context. Noticed-by: Robin Redeker <elmex@ta-sa.org> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Make all tags viewableRobin Redeker2009-01-112-2/+11
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Merge branch 'stable'Lars Hjemli2009-01-111-2/+3
|\| | |
| * | | ui-tag: escape tagnames properlyLars Hjemli2009-01-111-2/+3
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Change toggle to more meaningful termJustin Waters2009-01-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the log interface, there is a toggle link at the top, but it isn't clear what's being toggled. I've changed it to "Expand" and "Collapse" to make it clear that you are getting more and less information, respectively. Signed-off-by: Justin Waters <justin.waters@timesys.com>
* | | | Merge branch 'snapshot-fixes'Lars Hjemli2009-01-112-13/+15
|\ \ \ \
| * | | | tests/t0107-snapshot.sh: make testscript match updated snapshot behaviorLars Hjemli2008-12-281-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since cgit now returns a 404 error when the snapshot filename cannot be resolved to a commit object, the testscript needs to request a valid snapshot name. Also, the script assumed that the toplevel directory in the snapshot would get the name of the repository but it's now named similar to the requested snapshot. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | return 404 if snapshot is not foundNatanael Copa2008-12-281-3/+5
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | | Merge branch 'lh/mimetypes'Lars Hjemli2009-01-112-3/+3
|\ \ \ \ \
| * | | | | ui-snapshot.c: change mime-type for tar.gz and tar.bz2Lars Hjemli2008-12-262-3/+3
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The updated mime-types seems to work better than the old ones with both safari and firefox. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | | Merge branch 'lh/virtual-root'Lars Hjemli2009-01-111-20/+21
|\ \ \ \ \
| * | | | | Untie logic for SCRIPT_NAME and PATH_INFOLars Hjemli2008-12-261-20/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SCRIPT_NAME is used as fallback for virtual-root when virtual-root is unspecified in cgitrc and PATH_INFO is used as fallback for the query- string parameter 'url' when the latter is unspecified. But until now, the use of PATH_INFO depended on virtual-root also being unspecified, i.e. it was impossible to use PATH_INFO when virtual-root was specified. This commit makes the fallback on SCRIPT_NAME and PATH_INFO independent code paths, i.e. it is now possible to specify virtual-root in cgitrc while still using PATH_INFO (instead of rewrite rules) to get 'pretty urls'. Noticed-by: Jack Moffitt <jack@chesspark.com> Noticed-by: LiKai Liu <liulk@cs.bu.edu> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | | | Merge branch 'stable'Lars Hjemli2009-01-111-2/+2
|\ \ \ \ \ \ | | |_|/ / / | |/| | | |
| * | | | | Makefile: avoid libcurl when building gitLars Hjemli2009-01-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't need support for fetching/pushing in libgit.a, hence we don't need to link with libcurl. Noticed-by: Robin Redeker <elmex@ta-sa.org> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | | | ui-log: show name-decorations in log outputLars Hjemli2009-01-112-0/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commits are now decorated with a clickable 'label' for each ref pointing at it, similar to how gitweb and gitk displays commit decorations. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | | | ui-refs: avoid SEGFAULT on lightweight tagsRobin Redeker2009-01-101-1/+1
| |_|_|_|/ |/| | | | | | | | | | | | | | | | | | | Signed-off-by: Robin Redeker <elmex@ta-sa.org> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | | Merge branch 'stable'Lars Hjemli2009-01-062-3/+5
|\| | | |
| * | | | ui-tree.c: do not add blank line when displaying blobsLars Hjemli2009-01-062-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also, fix a related bug in the test-suite. Noticed-by: Jim Meyering <jim@meyering.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | | Merge branch 'stable'Lars Hjemli2008-12-301-2/+2
|\| | | | | |_|/ / |/| | |
| * | | ui-patch: whitespace changes in the patch generation codeTomas Carnecky2008-12-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a space between the committer name and email, and remove superfluous spaces in the date header. This makes cgit-generated patches match the output from git-format-patch almost exactly, at least as far as the email headers go. Signed-off-by: Tomas Carnecky <tom@dbservice.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Use GIT-1.6.1Lars Hjemli2008-12-262-1/+1
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | shared.c: future-proof usage of git diff-structuresLars Hjemli2008-12-261-1/+3
| |/ / |/| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'stable'Lars Hjemli2008-12-062-2/+9
|\| |
| * | tests/setup.sh: allow testsuite to fail properly with POSIX standard shellsLars Hjemli2008-12-061-1/+1
| | | | | | | | | | | | | | | | | | | | | The "((expr))" construct is not implemented by e.g. dash, so this commit replaces the construct with a more portable one. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | tests/t0010-validate-html.sh: skip tests if 'tidy' is not availableLars Hjemli2008-12-061-1/+8
| | | | | | | | | | | | | | | Noticed-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'full-log'Lars Hjemli2008-12-069-13/+61
|\ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: cgit.c cgit.h
| * | | ui-log: use css to make full-log prettierLars Hjemli2008-11-302-8/+21
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-log: (ab)use extra columns for commit message when showmsg=1Lars Hjemli2008-11-291-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the commit message has extra long lines it's better to use the author/ files/lines columns to show those lines than to push the columns of screen and force the users to hscroll. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-log: add support for showing the full commit messageLars Hjemli2008-11-298-11/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some users prefer to see the full message, so to make these users happy the new querystring parameter "showmsg" can be used to print the full commit message per log entry. A link is provided in the log heading to make this function accessible, and all links and forms tries to preserve the users preference. Note: the new link is not displayed on the summary page since the point of the summary page is to be a summary, but it is still obeyed if specified manually. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Merge branch 'lh/sort-repolist'Lars Hjemli2008-12-064-14/+126
|\ \ \ \
| * | | | ui-repolist: implement lazy caching of repo->mtimeLars Hjemli2008-11-293-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When sorting the list of repositories by their last modification time, cgit would (in the worst case) invoke fstat(3) four times and open(3) twice for each callback from qsort(3). This obviously scales very badly. Now, the calculated modtime for each repo is saved in repo->mtime, thus keeping the number of stat/open invocations identical for sorted and unsorted repo-listings. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | ui-repolist: sort null values lastLars Hjemli2008-11-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When sorting on e.g. owner, it's not interesting to get all repos without owner at the top of the list. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | ui-repolist: add support for sorting any columnLars Hjemli2008-11-291-9/+83
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | ui-repolist: extract get_repo_modtime() from print_modtime()Lars Hjemli2008-11-291-27/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new function is then used by both print_modtime() and cgit_reposort_modtime(). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | Add support for sorting by Age in the repolistBenjamin Close2008-11-293-3/+39
| |/ / / | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Merge branch 'snapshot-fixes'Lars Hjemli2008-12-065-60/+94
|\ \ \ \
| * | | | ui-shared: shorten the sha1 printed by cgit_object_linkLars Hjemli2008-12-011-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Such links was printed as the object type followed by the objects complete sha1. We still use the complete sha1 in the link but we no longer show it in all its glory; only the first 10 hex chars are printed. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | ui-refs.c: show download links for all tags referring to commit objectsLars Hjemli2008-12-011-3/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The snapshot function has only been linked to from the commit page while users often would want to download a certain release. With this patch, direct download links will now be printed for each tagged release on the repo summary page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | ui-shared: exploit snapshot dwimmery in cgit_print_snapshot_linksLars Hjemli2008-12-011-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we know that ui-snapshot.c is able to extract the revision from the filename, there's no longer necessary to specify the revision with a 'id' querystring argument. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | ui-snapshot: improve extraction of revision from snapshot nameLars Hjemli2008-12-011-43/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The modified get_ref_from_filename() supports the following snapshot formats: * $REV.$EXT * $REPO[-_]*v?$REV.$EXT This implies that the following urls will retrieve the expected revision: * http://hjemli.net/git/cgit/snapshot/v0.8.1.tar.gz * http://hjemli.net/git/cgit/snapshot/0.8.1.tar.gz * http://hjemli.net/git/cgit/snapshot/cgit-0.8.1.tar.gz * http://hjemli.net/git/cgit/snapshot/cgit-140012d7a8.tar.gz Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | | Set prefix in snapshots when using dwimmeryNatanael Copa2008-11-303-6/+14
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch sets the directory prefix in archives to be the filename, excluding the suffix (.tar.gz, .tar.bz2 etc). The patch also removes the prefix parameter in cgit_print_snapshot() as the prefix might differ. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | | Merge branch 'stable'Lars Hjemli2008-12-065-8/+46
|\ \ \ \ | |/ / / |/| / / | |/ /
| * | Merge branch 'rj/buildtweaks' into stableLars Hjemli2008-12-054-6/+31
| |\ \
| | * | parsing.c: enable builds with NO_ICONV definedLars Hjemli2008-12-051-0/+4
| | | | | | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| | * | ui-repolist: avoid build warning for strcasestr(3)Lars Hjemli2008-12-051-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The non-standard function strcasestr is only defined if _GNU_SOURCE has also been defined. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| | * | Makefile: allow cgit.conf to override platform-specific tweaksLars Hjemli2008-12-051-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If the makefile doesn't automatically define the correct build variables it is nice to be able to define them explicitly. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| | * | Extra cygwin-specific changesRamsay Jones2008-12-032-6/+23
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | | ui-log: try to disambiguate ref namesLars Hjemli2008-12-031-2/+15
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'h' querystring parameter in cgit is normally used to specify a branch (i.e. a ref below refs/heads/), but if a repository contains a tag with the same name as a branch the output from ui-log would use the tag as start-revision. This patch tries to fix the issue by checking if the specified ref is valid as a branch name; if so, the full refname is used in the call to setup_revisions(). Noticed-by: Takamori Yamaguchi <akschar@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'stable'Lars Hjemli2008-11-141-1/+2
|\| |
| * | ui-repolist: handle empty agefilesLars Hjemli2008-11-141-1/+2
| | | | | | | | | | | | | | | | | | | | | When the agefile was empty the old code would happily reuse the static buffer filled by a previous call to read_agefile(). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'stable'Lars Hjemli2008-11-061-2/+2
|\| |
| * | Use mode 0644 for non-executable filesKarl Chen2008-11-061-2/+2
| | | | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'stable'Lars Hjemli2008-11-065-6/+8
|\| | | |/ |/|
| * Fix tests to work on Ubuntu (dash)Ramsay Jones2008-11-061-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The system shell (/bin/sh) on Ubuntu is dash, which aims to be a POSIX standard shell. In particular, dash does not implement any of the common extensions to the standard that, say, bash and ksh do. Replace some non-POSIX constructs in setup.sh with more portable and mundane code. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Fix some warnings to allow -WerrorRamsay Jones2008-11-062-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The type used to declare the st_size field of a 'struct stat' can be a 32- or 64-bit sized type, which can vary from one platform to another, or even from one compilation to another. In particular, on linux, if you include the following define: #define _FILE_OFFSET_BITS 64 prior to including certain system header files, then the type used for the st_size field will be __off64_t, otherwise it will be an __off_t. Note that the above define is included at the top of git-compat-util.h. In cache.c, the "%zd" format specifier expects a "signed size_t", another type which can vary, when an __off64_t or a __off_t is provided. To supress the warning, use the PRIuMAX format specifier and cast the st_size field to uintmax_t. This should work an any platform for which git currently compiles. In ui-plain.c, the size parameter of sha1_object_info() and read_sha1_file() is defined to be "unsigned long *" not "size_t *". So, to supress the warning, simply declare size with the correct type. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Use GIT-1.6.0.3Lars Hjemli2008-11-062-1/+1
|/ | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* CGIT 0.8.1 v0.8.1Lars Hjemli2008-10-111-1/+1
|
* Merge branch 'stable'Lars Hjemli2008-10-111-0/+3
|\ | | | | | | | | * stable: Makefile: enable compilation on uclibc
| * Makefile: enable compilation on uclibcLars Hjemli2008-10-111-0/+3
| | | | | | | | | | Original-patch-by: Natanael Copa <natanael.copa@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-snapshot: add dwimmeryLars Hjemli2008-10-113-15/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When downloading a snapshot, the snapshot name will often contain the repo name combined with a tag. This patch tries to exploit this so that the correct revision is downloaded even if no specific revision is specified. PS: this only occurs if neither 'h' nor 'id' is specified in the query- string. PPS: this also fixes a bug which occurs when trying to download a filename with an unsupported suffix: it used to try to print an error message to the user but failed since it didn't prepare the output properly. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add cgit_query.nohead flagLars Hjemli2008-10-112-0/+2
|/ | | | | | | | This flag is set when no HEAD is specified in the querystring. Currently it has no users, but it will be used by ui-snapshot to invoke a DWIM-mode where the revision is extracted from the snapshot name. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: specify correct css class for summary tabLars Hjemli2008-10-061-1/+2
| | | | | | | When introducing cgit_summary_link() in 49ecbbdd I forgot to specify the css class. This fixes it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* CGIT 0.8 v0.8Lars Hjemli2008-10-051-1/+1
|
* ui-summary: use html_url_path()Lars Hjemli2008-10-051-1/+1
| | | | | | This makes the clone urls be properly escaped. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-refs: use cgit_tag_link()Lars Hjemli2008-10-051-6/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: add cgit_tag_link()Lars Hjemli2008-10-052-0/+8
| | | | | | | This function can be used to generate properly escaped links to the tag page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: generate proper links in cgit_object_link()Lars Hjemli2008-10-051-15/+7
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: use html_url_path() to get properly escaped url in form actionLars Hjemli2008-10-051-2/+2
| | | | | | | When a repo uses an url with e.g. '#' or '?' characters this needs to be properly escaped when used as action in a form tag. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.6.0.2Lars Hjemli2008-10-053-5/+3
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: reword the standard page footerLars Hjemli2008-10-051-2/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: do not print repo name on the "summary" tabLars Hjemli2008-10-051-2/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Replace cgitrc with cgitrc.5.txtLars Hjemli2008-10-052-202/+367
| | | | | | | | The new file describes all cgitrc options in a more structured manner then the cgitrc example file and it might also work as the source for a cgitrc man page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/escape-urls'Lars Hjemli2008-10-055-14/+32
|\ | | | | | | | | | | | | | | * lh/escape-urls: ui-repolist + ui-shared: Use cgit_summary_link() ui-shared.c: add cgit_summary_link() ui-shared.c: use html_url_path() in repolink() html.c: add html_url_path
| * ui-repolist + ui-shared: Use cgit_summary_link()Lars Hjemli2008-10-052-10/+5
| | | | | | | | | | | | | | This makes is possible to use cgit with repository urls containing special url characters like '#' and '?'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-shared.c: add cgit_summary_link()Lars Hjemli2008-10-052-0/+6
| | | | | | | | | | | | | | This function can be used to generate a link to the summary page for the currently active repo. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-shared.c: use html_url_path() in repolink()Lars Hjemli2008-10-051-4/+4
| | | | | | | | | | | | | | This makes sure that reponames and paths are properly escaped when used as urls. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * html.c: add html_url_pathLars Hjemli2008-10-052-0/+17
| | | | | | | | | | | | | | This function can be used to generate properly escaped path-components for links. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/escape-urls'Lars Hjemli2008-10-056-11/+53
|\| | | | | | | | | | | * lh/escape-urls: ui-shared.c: use html_url_arg() html.c: add html_url_arg
| * ui-shared.c: use html_url_arg()Lars Hjemli2008-10-054-11/+36
| | | | | | | | | | | | | | | | | | The link-generating functions are updated to use the new html_url_arg function, thereby fixing links to strange repos, branches and files. Also, the test-suite is updated to verify some cases of strange urls. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * html.c: add html_url_argLars Hjemli2008-10-052-0/+17
| | | | | | | | | | | | This function can be used to properly escape querystring parameter values. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-snapshot.c: specify archiver_args.baselenLars Hjemli2008-10-052-2/+11
|/ | | | | | | | | | The struct member was introduces in git commit d53fe8187c38, but the cgit testsuite failed to detect that cgit always generated archives without prefixes, i.e. the result from cgit_repobasename was ignored. This fixes the bug and the testsuite. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-diff: make diffstat header a link to the full diffLars Hjemli2008-09-231-1/+4
| | | | | | | | When printing a path-filtered diff it wasn't obvious how to get back to the full diff (clicking the 'diff' tab would do this). Making the diffstat heading into a link seems to improve the usability. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-diff: fix links from diffstatLars Hjemli2008-09-231-4/+2
| | | | | | | | | | | The links in the diffstat is supposed to work as a filter for the diff, but this only worked when a single rev was supplied, i.e. the filtered diff was always against the parent of the specified rev. With this patch it is now possible to use the diffstat as a 'filter menu' for urls like http://hjemli.net/git/cgit/diff/?id=v0.7.2&id2=v0.7.1 Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add LDFLAGS to makefile.Harley Laue2008-09-201-1/+1
| | | | | | | | This will allow for creating static builds which is useful for chrooted environments. Signed-off-by: Harley Laue <losinggeneration@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-repolist: enable filtering of repos by pathLars Hjemli2008-09-151-1/+10
| | | | | | | If a repo url is specified but no exact match is found in the list of repos the url will now be used as a prefix-filter. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for --scan-tree=<path> option to cgitLars Hjemli2008-09-154-3/+184
| | | | | | | This option makes cgit scan a directory tree looking for git repositories, generating suitable definitions for a cgitrc file on stdout. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Teach cgit how to use PATH_INFOLars Hjemli2008-09-152-0/+28
| | | | | | | | | | | This commit makes cgit use the cgi variables SCRIPT_NAME and PATH_INFO when virtual-root is unspecified in cgitrc and no url-parameter is specified on the querystring. This has two nice effects: * Virtual urls works out of the box, no more need for rewrite-rules in httpd. * Virtual urls with special querystring characters are handled correctly. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/parsing'Lars Hjemli2008-09-153-64/+101
|\ | | | | | | | | | | * lh/parsing: ui-tag: show the taggers email parsing.c: be prepared for unexpected content in commit/tag objects
| * ui-tag: show the taggers emailLars Hjemli2008-09-151-0/+4
| | | | | | | | | | | | If it's specified there's no point in hiding it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * parsing.c: be prepared for unexpected content in commit/tag objectsLars Hjemli2008-09-152-64/+97
| | | | | | | | | | | | | | | | When parsing commits and tags cgit made too many assumptions about the formatting of said objects. This patch tries to make the code be more prepared to handle 'malformed' objects. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'ew/http_host'Lars Hjemli2008-09-151-7/+12
|\ \ | |/ |/| | | | | * ew/http_host: use Host: header to generate cgit_hosturl
| * use Host: header to generate cgit_hosturlEric Wong2008-09-021-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I run an instance of lighttpd for cgit behind nginx (nginx doesn't execute CGI). So the port (SERVER_PORT=33333) that lighttpd runs on sends to cgit is different from the standard port 80 that public clients connect to (via nginx). This was causing the Atom feed URL to show the private port number that lighttpd was running on. Since the HTTP/1.1 "Host" header includes the port number if running on a non-standard port, it allows non-client-facing HTTP servers to transparently generate public URLs that clients can see. So use the "Host" header if it is available and fall back to SERVER_NAME/SERVER_PORT for some clients that don't set HTTP_HOST. Signed-off-by: Eric Wong <normalperson@yhbt.net>
* | Update Makefile to use GIT-1.6.0.1Lars Hjemli2008-09-031-1/+1
|/ | | | | | | When updating the git submodule to 1.6.0.1 (and 1.6.0), the Makefile was left behind. This fixes it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.6.0.1Lars Hjemli2008-09-021-0/+0
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-plain: handle subdirectoriesLars Hjemli2008-09-021-4/+1
| | | | | | | | | | The callback from read_tree_recursive just needs to check the type of each tree entry; if it's a dir we want to continue scanning, if it's a regular file we'll assume it's the one we requested. And while at it, remove some stray fprintfs. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.6.0Lars Hjemli2008-09-011-0/+0
|
* Merge branch 'lh/plain'Lars Hjemli2008-09-0112-13/+125
|\ | | | | | | | | | | | | * lh/plain: Supply status description to html_status() ui-tree: link to plain view instead of blob view Implement plain view
| * Supply status description to html_status()Lars Hjemli2008-08-064-14/+12
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-tree: link to plain view instead of blob viewLars Hjemli2008-08-063-4/+12
| | | | | | | | | | | | | | | | | | | | | | The urls for plain view makes it possible to download blobs without knowing their SHA1, but the function needs to be promoted and the link from tree view seems like a perfect fit. PS: Although hidden, the blob view still is nice for direct blob access so there's no point in removing it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Implement plain viewLars Hjemli2008-08-069-0/+106
| | | | | | | | | | | | | | This implements a way to access plain blobs by path (similar to the tree view) instead of by sha1. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/clone'Lars Hjemli2008-09-016-0/+140
|\| | | | | | | | | | | | | | | * lh/clone: Add support for cloning over http Conflicts: cmd.c
| * Add support for cloning over httpLars Hjemli2008-08-066-0/+140
| | | | | | | | | | | | | | This patch implements basic support for cloning over http, based on the work on git-http-backend by Shawn O. Pearce. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | cache.c: use %zd for off_t argumentLars Hjemli2008-09-011-1/+1
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail>
* | Use GIT-1.6.0.rc1Lars Hjemli2008-08-062-1/+1
| | | | | | | | | | | | | | Now that rc1 is released as a tarball `make get-git` should start working again. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Makefile: Git dependency, take 3Lars Hjemli2008-08-061-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | In commit a1266edfe the build instructions for the git libs where moved to their real targets, which in turn depended on the phony target `git`. But since `git` is an actual directory in cgit the git libs wouldn't be recompiled when needed. So with this patch (third time lucky), cgit is declared to depend on the really phony target `libgit` and the build instructions for `libgit` is to unconditionally rebuild git/libgit.a and git/xdiff/lib.a. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/atom'Lars Hjemli2008-08-067-0/+168
|\ \
| * | Add atom-supportLars Hjemli2008-08-017-0/+168
| |/ | | | | | | | | | | | | This enables a page which generates atom feeds for the current branch and path, heavily inspired by the atom-support in gitweb. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* / cgitrc: explain new local-time optionStefan Naewe2008-08-051-0/+2
|/ | | | | Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Added `local-time` option to cgitrcStefan Naewe2008-08-017-10/+17
| | | | | | | | | When `local-time` is set, commit, tag and patch timestamps will be printed in the servers timezone. Also, regardless of the value of `local-time`, these timestamps will now always show the timezone. Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Makefile: another take on git dependency rulesLars Hjemli2008-08-011-7/+5
| | | | | | | | | | | | | | | When building cgit we depend on xdiff/lib.a and libgit.a in the git directory, but the previous attempt on describing this dependency failed since the build instructions for the libs was placed under the phony `git` target. This patch fixes the issue by moving the build instructions to their real targets. It also makes it clear that only the `cgit` target depends on the git binaries (since they're only used during linking). And while at it, the patch also cleans up the list of phony targets. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Modify default value for a few cgitrc optionsLars Hjemli2008-07-271-2/+5
| | | | | | | | | | | The default max-length used when printing commit messages and repo descriptions can be increased due to the new layout (no sidebar). Also, on the repo summary page I believe it makes sense to only show the ten most recent branches and tags by default, just as it makes sense to show the ten most recent commit messages for the active branch. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Be prepared for empty repositoriesLars Hjemli2008-07-272-4/+9
| | | | | | Before this patch, cgit would segfault on repositories with no refs. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: show repo owner along with descriptionLars Hjemli2008-07-271-3/+3
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-summary: show clone urlsLars Hjemli2008-07-271-0/+41
| | | | | | | | If either repo.clone-url or clone-prefix is specified in cgitrc, all space-separated values in the config option is printed as a possible clone url on the repo summary page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Makefile: remove the `distclean` and `emptycache` targetsLars Hjemli2008-07-221-7/+0
| | | | | | The `distclean` was hardly useful while the `emptycache` was actively harmful. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Makefile: do not touch the git objects with `make clean`Lars Hjemli2008-07-221-1/+0
| | | | | | | I've been avoiding `make clean` for a long time due to its eagerness to kill all the git objectfiles. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Makefile: fix git dependency rulesLars Hjemli2008-07-221-5/+3
| | | | | | | | The objectfiles depends unconditionally on some specific git binaries while those git binaries depends on the phony `git` target and this patch seems to get these dependencies spelled out correctly. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* tests/Makefile: not everyone has `.` in $PATHLars Hjemli2008-07-221-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Adjust to new calling convention for read_tree_recursive()Lars Hjemli2008-07-212-7/+10
| | | | | | | | In GIT-1.6.0, read_tree_recursive takes an extra void pointer for callback data. We might want to use this to avoid some global variables, but for now lets just make sure that we can still compile. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.6.0-rc0Lars Hjemli2008-07-211-0/+0
|
* Add a favicon option to cgitrcLars Hjemli2008-07-194-0/+10
| | | | | | This option is used to specify a shortcut icon on all cgit pages. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for including a footer on all pagesLars Hjemli2008-06-263-4/+13
| | | | | | | | | The new cgitrc option `footer` can be used to include a html-file which replaces the standard 'generated by cgit' message at the bottom of each page. Suggested-by: Peter Danenberg <pcd@wikitex.org> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'master' of git://git.klever.net/patchwork/cgitLars Hjemli2008-06-265-7/+39
|\ | | | | | | | | | | * 'master' of git://git.klever.net/patchwork/cgit: allow specification of directly linked blobs mimetypes allow blob extract blobs by head/path combination
| * allow specification of directly linked blobs mimetypesMichael Krelin2008-06-243-1/+4
| | | | | | | | Signed-off-by: Michael Krelin <hacker@klever.net>
| * allow blob extract blobs by head/path combinationMichael Krelin2008-06-243-6/+35
| | | | | | | | | | | | | | If blob is invoked with no id=, it tries to look up h= and search for path= in there. Once found, proceed as normal, otherwise, fail as normal. Signed-off-by: Michael Krelin <hacker@klever.net>
* | Use GIT-1.5.6Lars Hjemli2008-06-252-1/+1
|/
* Added root-desc to default configuration.Harley Laue2008-05-211-0/+4
| | | | | Signed-off-by: Harley Laue <losinggeneration@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree.c: avoid peeking at GITLINK objectsLars Hjemli2008-05-201-6/+8
| | | | | | | | | When an object in the tree has GITLINK mode-bits we don't need to get any more info about that particular object (and trying to get more info about it will usually generate an annoying warning on stderr since the object typically doesn't exist in the repo anyways). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cache.c: fix error checking in print_slot()Lars Hjemli2008-05-201-4/+7
| | | | | | | | The change to print_slot() in cdc6b2f8e7a8d43dcfe0475a9d3498333ea686b8 made the function return correct errno for read errors while ignoring write errors, which is not what was intended. This patch tries to rectify things. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cache.c: do not ignore errors from print_slot()Lars Hjemli2008-05-182-5/+15
| | | | | | | | | | | | 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>
* cache.c: use xread()/xwrite() from libgitLars Hjemli2008-05-181-6/+6
| | | | | | | | | | | 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>
* cache.c: make all io-related functions return errno on errorLars Hjemli2008-05-181-9/+24
| | | | | | | | 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>
* cache.c: read(2) returns -1 on error, not 0Lars Hjemli2008-05-181-1/+1
| | | | | Noticed-by: Jim Meyering <jim@meyering.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.5.5.1Lars Hjemli2008-05-182-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Include commit-id in link from diff-statLars Hjemli2008-05-182-1/+2
| | | | | | | This fixes a regression created by fe1230dece81450004d02fa8a470f8dab8f7fdd9, and modifies a test to avoid future regressions. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-commit: handle root commitsLars Hjemli2008-05-182-3/+22
| | | | | | | | | 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>
* Add link to index page from repo header, remove page nameLars Hjemli2008-05-042-2/+5
| | | | | | | | | | | 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>
* Add footer with page creation time and cgit version on all pagesLars Hjemli2008-05-032-0/+9
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add a pager on the repolistLars Hjemli2008-05-034-1/+32
| | | | | | | | 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>
* Add cgit_index_link() function with support for offsetLars Hjemli2008-05-032-5/+19
| | | | | | This function will be used to build a pager in ui-repolist. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/cache'Lars Hjemli2008-05-037-213/+503
|\ | | | | | | | | | | * lh/cache: Add page 'ls_cache' Redesign the caching layer
| * Add page 'ls_cache'Lars Hjemli2008-04-283-5/+87
| | | | | | | | | | | | | | | | 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>
| * Redesign the caching layerLars Hjemli2008-04-286-208/+416
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.Harley Laue2008-04-291-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'Lars Hjemli2008-04-298-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' pagesLars Hjemli2008-04-292-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 cgitrcLars Hjemli2008-04-294-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 repoLars Hjemli2008-04-291-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 cgitrcLars Hjemli2008-04-293-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 tableLars Hjemli2008-04-291-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' pageLars Hjemli2008-04-282-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 typeLars Hjemli2008-04-241-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 diffLars Hjemli2008-04-243-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 annoyanceLars Hjemli2008-04-171-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 headerLars Hjemli2008-04-151-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 enabledLars Hjemli2008-04-141-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 clickableLars Hjemli2008-04-142-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 viewLars Hjemli2008-04-143-34/+43
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Fix more css uglinessLars Hjemli2008-04-141-10/+4
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cgit.css: set form marginsLars Hjemli2008-04-141-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-familyLars Hjemli2008-04-141-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'Lars Hjemli2008-04-137-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 insensitiveLars Hjemli2008-04-132-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 viewLars Hjemli2008-04-133-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 repolistLars Hjemli2008-04-132-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 fixesLars Hjemli2008-04-133-33/+98
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Minor fixup in tree-view cssLars Hjemli2008-04-121-3/+2
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Reintroduce the branch switcherLars Hjemli2008-04-122-0/+17
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add fixed link to index page from repo headerLars Hjemli2008-04-121-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 viewLars Hjemli2008-04-121-3/+5
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Replace sidebar/logoLars Hjemli2008-04-123-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.5Lars Hjemli2008-04-092-1/+1
|
* Don't specify mimetype in ui-blob.cLars Hjemli2008-04-082-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'Lars Hjemli2008-04-0838-1110/+1372
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 finishedLars Hjemli2008-04-081-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()Lars Hjemli2008-04-086-64/+68
| | | | | | | | | | | | This is a generic http-function. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Move function for configfile parsing into configfile.[ch]Lars Hjemli2008-03-286-78/+99
| | | | | | | | | | | | This is a generic function which wanted its own little object file. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add cache.hLars Hjemli2008-03-274-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_cmdLars Hjemli2008-03-252-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.gitLars Hjemli2008-03-251-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.cLars Hjemli2008-03-243-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 rulesLars Hjemli2008-03-242-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 cleanupLars Hjemli2008-03-241-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.cLars Hjemli2008-03-243-157/+155
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add ui-shared.hLars Hjemli2008-03-2413-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/viewLars Hjemli2008-03-2415-189/+257
| | | | | | | | | | | | Yet another step towards removing cgit.h. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Refactor snapshot supportLars Hjemli2008-03-244-85/+89
| | | | | | | | | | | | | | | | | | 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 dispatcherLars Hjemli2008-03-247-109/+168
| | | | | | | | | | | | | | 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-functionsLars Hjemli2008-03-246-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_contextLars Hjemli2008-03-248-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.hLars Hjemli2008-03-1817-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 directoryLars Hjemli2008-02-162-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>
| * Move cgit_repo into cgit_contextLars Hjemli2008-02-1611-103/+101
| | | | | | | | | | | | | | | | This removes the global variable which is used to keep track of the currently selected repository, and adds a new variable in the cgit_context structure. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add all config variables into struct cgit_contextLars Hjemli2008-02-167-175/+166
| | | | | | | | | | | | | | | | This removes another big set of global variables, and introduces the cgit_prepare_context() function which populates a context-variable with compile-time default values. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Introduce struct cgit_contextLars Hjemli2008-02-1613-164/+156
| | | | | | | | | | | | | | | | | | This struct will hold all the cgit runtime information currently found in a multitude of global variables. The first cleanup removes all querystring-related variables. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Use GIT-1.5.5-rc2Lars Hjemli2008-04-011-0/+0
| |
* | Use GIT-1.5.5.rc1Lars Hjemli2008-03-232-1/+1
| |
* | Fix segfault in patch view for root commitLars Hjemli2008-03-172-1/+42
| | | | | | | | | | | | | | | | | | | | The code for patch view assumed the current commit would always have a parent, which made cgit segfault when that wasn't the case. This fixes the bug and adds a test-script for patch view which includes a test for the inital commit. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Use GIT-1.5.4.4Lars Hjemli2008-03-172-1/+1
| |
* | tests/setup.sh: cleanup test script output and loggingLars Hjemli2008-02-241-2/+8
| | | | | | | | | | | | | | Log the complete output from each test-script in test-output.log and tell the user about the logfile when a test-script fails. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | t0010-validate.sh: return on cgit errorsLars Hjemli2008-02-241-1/+4
| | | | | | | | | | | | | | | | | | | | The earlier segfault in cgit passed by unnoticed by this test-script due to the pipe between cgit and sed. There might be a more elegant solution to this problem, but my shellscript- foo is weak. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Make output from `make test` more readableLars Hjemli2008-02-241-2/+2
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Brown paper bag: don't use `grep -v`Lars Hjemli2008-02-242-5/+5
| | | | | | | | | | | | | | | | | | | | | | For some inexplicable reason I'd gotten the semantics of `grep -v` totally backwards, thinking it somehow would make the exitcode from grep indicate the non-match of the specified pattern. This fixes the broken tests and gives me a valuable lession about shell programming at the same time. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add regression-test for description-less reposLars Hjemli2008-02-242-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The segfault fixed in commit eacde43d7184452e1fdc90b982b531f1f5239923 was triggered when the html-functions manipulated string literals. One callpatch which could trigger the bug is in ui-repolist.c when repo descriptions are passed to html_ntxt(): if a repo is lacking a description, the literal string "[no description]" is used. This patch changes test/setup.sh such that the first repo has no description, and adds tests for both "[no description]" and "the bar repo" (description of the other repo) to tests/t0101-index.sh, which should be enought to catch regressions in these functions. Noticed-by: Hiroki Hattori <seagull.kamome@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'stable'Lars Hjemli2008-02-231-15/+5
|\ \ | |/ |/| | | | | | | | | * stable: Fix segfault Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Fix segfaultHiroki Hattori2008-02-231-15/+5
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Use GIT-1.5.4.1Lars Hjemli2008-02-162-1/+1
| |
* | Use GIT-1.5.4Lars Hjemli2008-02-022-1/+1
| |
* | Use GIT-1.5.4.rc5Lars Hjemli2008-01-282-1/+1
| |