about summary refs log tree commit diff
path: root/ui-shared.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Update git to 2.48.1 1.5.1Rory&2025-03-121-1/+1
|
* CGit-magenta 1.5.0Rory&2025-03-121-1/+1
|
* Fix changes after rebasing on upstream cgitRory&2025-03-121-1/+1
|
* Update information for forkJune McEnroe2025-03-121-1/+1
|
* Fix crash trying to print "this commit" on 404sJune McEnroe2025-03-121-1/+1
| | | | | For example any URL that starts with a real repo name but isn't valid.
* Improve pageheader display on text-based browsersEric Wong2025-03-121-3/+12
| | | | | | | | | | | Text-based browsers (and some GUI browsers such as dillo) display the pageheader as: "summaryrefslogtreecommitdiff" This is difficult-to-read. Improve accessibility for users who cannot run memory-hungry browsers by using whitespace instead of relying on CSS.
* Add "this commit" option to switch formAlyssa Ross2025-03-121-0/+12
| | | | | | | | | | | | | | | | | Branches are grouped into their own section to make the "this commit" option visually distinct. Adding this option will result in two options being marked as selected if a branch has the same name as a commit oid. But that would cause all sorts of other problems anyway (attempting to switch to the branch would actually give you the commit, etc.), so let's not worry about that. A "permalink" link on the blob view next to the "plain" link would probably be more discoverable, but that would only work for the blob view. The switch UI is visible everywhere. Signed-off-by: Alyssa Ross <hi@alyssa.is>
* Remove dependency on memrchrJune McEnroe2025-03-121-1/+4
| | | | Not available on macOS.
* git: update to v2.46.0Christian Hesse2024-08-021-2/+6
| | | | | | | | | | | | | | | | | | | Update to git version v2.46.0, this requires changes for these upstream commits: * e7da9385708accf518a80a1e17969020fb361048 global: introduce `USE_THE_REPOSITORY_VARIABLE` macro * 9da95bda74cf10e1475384a71fd20914c3b99784 hash: require hash algorithm in `oidread()` and `oidclr()` * 30aaff437fddd889ba429b50b96ea4c151c502c5 refs: pass repo when peeling objects * c8f815c2083c4b340d4148a15d45c55f2fcc7d3f refs: remove functions without ref store Signed-off-by: Christian Hesse <mail@eworm.de>
* git: update to v2.45.0Christian Hesse2024-04-291-2/+2
| | | | | | | | | | Update to git version v2.45.0, this requires changes for these upstream commits: * 9720d23e8caf4adee44b3a32803a9bb0480118bd date: make DATE_MODE thread-safe Signed-off-by: Christian Hesse <mail@eworm.de>
* git: update to v2.41.0Christian Hesse2023-06-011-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update to git version v2.41.0, with lots of changes... This requires changes for these upstream commits: * 60ff56f50372c1498718938ef504e744fe011ffb banned.h: mark `strtok()` and `strtok_r()` as banned * 52acddf36c8cb3778ab2098a0d95cc2e375a4069 string-list: multi-delimiter `string_list_split_in_place()` * d850b7a545fcfbd97460a921c7f7c59d933eb0f7 cocci: apply the "cache.h" part of "the_repository.pending" * cb338c23d6d518947bf6f7240bf30e2ec232bd3b cocci: apply the "commit-reach.h" part of "the_repository.pending" * ecb5091fd4301ac647db0bd2504112b38f7ee06d cocci: apply the "commit.h" part of "the_repository.pending" * 085390328f5fe1dfba67039b1fd6cc51546a4e41 cocci: apply the "diff.h" part of "the_repository.pending" * bc726bd075929aab6b3e09d4dd5c2b0726fd5350 cocci: apply the "object-store.h" part of "the_repository.pending" * bab821646a74c446370fa8d01ca851f247df5033 cocci: apply the "pretty.h" part of "the_repository.pending" * afe27c889429438829bc8818ed17e4960bd3ef02 cocci: apply the "packfile.h" part of "the_repository.pending" * 12cb1c10a64170a5d600dd1c6c8abfeec105fb6b cocci: apply the "refs.h" part of "the_repository.pending" * 035c7de9e9ea11d26df5f9e4bb117f91ed11a9fd cocci: apply the "revision.h" part of "the_repository.pending" ... and some more I missed to list 😜 - for example the move and cleanup of headers and includes (see changes in `cgit.h`) comes to mind... Signed-off-by: Christian Hesse <mail@eworm.de>
* config: make empty js= omit script tagSamuel Lidén Borell2023-01-101-0/+8
| | | | | | | | | | According to the cgitrc man page, an empty js= value should cause the script tag to be omitted. But instead, a script tag with an empty URL is emitted. The same applies to css. So, skip emitting a tag if the specified string is empty. Signed-off-by: Samuel Lidén Borell <samuel@kodafritt.se> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* js: add dynamic age updateAndy Green2022-12-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch updates the emitted "ages" dynamically on the client side. After updating on completion of the document load, it sets a timer to update according to the smallest age it found. If there are any ages listed in minutes, then it will update again in 10s. When the most recent age is in hours, it updates every 5m. If days, then every 30m and so on. This keeps the cost of the dynamic updates at worst once per 10s. The updates are done entirely on the client side without contact with the server. To make this work reliably, since parsing datetimes is unreliable in browser js, the unix time is added as an attribute to all age spans. To make that reliable cross-platform, the unix time is treated as a uint64_t when it is formatted for printing. The rules for display conversion of the age is aligned with the existing server-side rules in ui-shared.h. If the client or server-side time are not synchronized by ntpd etc, ages shown on the client will not relate to the original ages computed at the server. The client updates the ages immediately when the DOM has finished loading, so in the case the times at the server and client are not aligned, this patch changes what the user sees on the page to reflect patch age compared to client time. If the server and client clocks are aligned, this patch makes no difference to what is seen on the page. Signed-off-by: Andy Green <andy@warmcat.com> Signed-off-by: Christian Hesse <mail@eworm.de>
* config: add jsAndy Green2022-12-191-0/+17
| | | | | | | | | Just like the config allows setting css URL path, add a config for setting the js URL path Signed-off-by: Andy Green <andy@warmcat.com> Reviewed-by: John Keeping <john@keeping.me.uk> Signed-off-by: Christian Hesse <mail@eworm.de>
* css: change to be a listAndy Green2022-12-191-3/+18
| | | | | | | | | | | Without changing the default behaviour of including /cgit.css if nothing declared, allow the "css" config to be given multiple times listing one or more alternative URL paths to be included in the document head area. Signed-off-by: Andy Green <andy@warmcat.com> Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: use owner-filter for repo page headersJune McEnroe2022-12-191-1/+7
| | | | | | Previously it was only used if owners were displayed on the index. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui-repolist,ui-shared: remove redundant title on repo anchorsChris Mayo2022-12-191-1/+1
| | | | | | | | | | The title attribute was being set to the same value as the anchor element text. Signed-off-by: Chris Mayo <aklhfex@gmail.com> Reviewed-by: Eric Wong <e@80x24.org> Reviewed-by: Petr Vorel <petr.vorel@gmail.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* git: update to v2.30.0Christian Hesse2020-12-291-4/+5
| | | | | | | | | | | | | Update to git version v2.30.0, this requires changes for these upstream commits: * 88894aaeeae92e8cb41143cc2e045f50289dc790 blame: simplify 'setup_scoreboard' interface * 1fbfdf556f2abc708183caca53ae4e2881b46ae2 banned.h: mark non-reentrant gmtime, etc as banned Signed-off-by: Christian Hesse <mail@eworm.de>
* global: replace references to 'sha1' with 'oid'Christian Hesse2020-10-201-20/+20
| | | | | | | | For some time now sha1 is considered broken and upstream is working to replace it with sha256. Replace all references to 'sha1' with 'oid', just as upstream does. Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: restrict to 15 levelsJason A. Donenfeld2019-05-201-1/+3
| | | | | | | | Perhaps a more ideal version of this would be to not print breadcrumbs at all for paths that don't exist in the given repo at the given oid. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reported-by: Fydor Wire Snark <wsnark@tuta.io>
* ui-shared: fix broken sizeof in title setting and rewriteJason A. Donenfeld2019-01-021-26/+8
| | | | | | | The old algorithm was totally incorrect. While we're at it, use « instead of \, since it makes more sense. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* auth-filter: pass url with query string attachedJason A. Donenfeld2018-11-251-2/+35
| | | | | | Otherwise redirections come out wrong. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui-shared: ban strcat()Christian Hesse2018-09-111-4/+8
| | | | | | | | | | | Git upstream bans strcat() with commit: banned.h: mark strcat() as banned 1b11b64b815db62f93a04242e4aed5687a448748 To avoid compiler warnings from gcc 8.1.x we get the hard way. Signed-off-by: Christian Hesse <mail@eworm.de>
* Fix gcc 8.1.1 compiler warningsJason A. Donenfeld2018-07-041-7/+12
| | | | | | | | | | | | | | | | | | | | | | CC ../shared.o ../shared.c: In function ‘expand_macro’: ../shared.c:487:3: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=] strncpy(name, value, len); ^~~~~~~~~~~~~~~~~~~~~~~~~ ../shared.c:484:9: note: length computed here len = strlen(value); ^~~~~~~~~~~~~ ../ui-shared.c: In function ‘cgit_repobasename’: ../ui-shared.c:136:2: warning: ‘strncpy’ specified bound 1024 equals destination size [-Wstringop-truncation] strncpy(rvbuf, reponame, sizeof(rvbuf)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CC ../ui-ssdiff.o ../ui-ssdiff.c: In function ‘replace_tabs’: ../ui-ssdiff.c:142:4: warning: ‘strncat’ output truncated copying between 1 and 8 bytes from a string of length 8 [-Wstringop-truncation] strncat(result, spaces, 8 - (strlen(result) % 8)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* snapshot: support tar signature for compressed tarChristian Hesse2018-07-031-1/+8
| | | | | | | | | | | | This adds support for kernel.org style signatures where the uncompressed tar archive is signed and compressed later. The signature is valid for all tar* snapshots. We have a filter which snapshots may be generated and downloaded. This has to allow tar signatures now even if tar itself is not allowed. To simplify things we allow all signatures. Signed-off-by: Christian Hesse <mail@eworm.de>
* extra-head-content: introduce another option for meta tagsJason A. Donenfeld2018-07-031-0/+2
| | | | | | | This is to support things like go-import meta tags, which are on a per-repo basis. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* global: remove functionality we deprecated for cgit v1.0Christian Hesse2018-06-271-2/+0
| | | | | | | | The man page states these were deprecated for v1.0. We are past v1.1, so remove the functionality. Signed-off-by: Christian Hesse <mail@eworm.de> Reviewed-by: John Keeping <john@keeping.me.uk>
* snapshot: strip bit from struct cgit_snapshot_formatChristian Hesse2018-06-271-1/+1
| | | | | | | We had a static bit value in struct cgit_snapshot_format. We do not rely on it and things can be calculated on the fly. So strip it. Signed-off-by: Christian Hesse <mail@eworm.de>
* snapshot: support archive signaturesJohn Keeping2018-06-271-0/+7
| | | | | | | | | | | | | | | | | | Read signatures from the notes refs refs/notes/signatures/$FORMAT where FORMAT is one of our archive formats ("tar", "tar.gz", ...). The note is expected to simply contain the signature content to be returned when the snapshot "${filename}.asc" is requested, so the signature for cgit-1.1.tar.xz can be stored against the v1.1 tag with: git notes --ref=refs/notes/signatures/tar.xz add -C "$( gpg --output - --armor --detach-sign cgit-1.1.tar.xz | git hash-object -w --stdin )" v1.1 and then downloaded by simply appending ".asc" to the archive URL. Signed-off-by: John Keeping <john@keeping.me.uk> Reviewed-by: Christian Hesse <mail@eworm.de>
* ui-shared: pass separator in to cgit_print_snapshot_links()John Keeping2018-06-271-2/+3
| | | | | | | | | cgit_print_snapshot_links() is almost identical to print_tag_downloads(), so let's extract the difference to a parameter in preparation for removing print_tag_downloads() in the next commit. Signed-off-by: John Keeping <john@keeping.me.uk> Reviewed-by: Christian Hesse <mail@eworm.de>
* ui-shared: use the same snapshot logic as ui-refsJohn Keeping2018-06-271-1/+7
| | | | | | | | | Make snapshot links in the commit UI use the same prefix algorithm as those in the summary UI, so that refs starting with the snapshot prefix are used as-is rather than composed with the prefix repeated. Signed-off-by: John Keeping <john@keeping.me.uk> Reviewed-by: Christian Hesse <mail@eworm.de>
* ui-shared: rename parameter to cgit_print_snapshot_links()John Keeping2018-06-271-2/+2
| | | | | | | | This is expected to be a ref not a hex object ID, so name it more appropriately. Signed-off-by: John Keeping <john@keeping.me.uk> Reviewed-by: Christian Hesse <mail@eworm.de>
* ui-shared: remove unused parameterJohn Keeping2018-06-271-2/+1
| | | | | | | | The "head" parameter to cgit_print_snapshot_links() is never used, so remove it. Signed-off-by: John Keeping <john@keeping.me.uk> Reviewed-by: Christian Hesse <mail@eworm.de>
* Add "snapshot-prefix" repo configurationJohn Keeping2018-06-271-1/+9
| | | | | | | | | | | | Allow using a user-specified value for the prefix in snapshot files instead of the repository basename. For example, files downloaded from the linux-stable.git repository should be named linux-$VERSION and not linux-stable-$VERSION, which can be achieved by setting: repo.snapshot-prefix=linux Signed-off-by: John Keeping <john@keeping.me.uk> Reviewed-by: Christian Hesse <mail@eworm.de>
* ui-shared: pass repo object to print_snapshot_links()John Keeping2018-06-271-4/+4
| | | | | | | | | | Both call sites of cgit_print_snapshot_links() use the same values for the snapshot mask and repository name, which are derived from the cgit_repo structure so let's pass in the structure and access the fields directly. Signed-off-by: John Keeping <john@keeping.me.uk> Reviewed-by: Christian Hesse <mail@eworm.de>
* print git version string in footerChristian Hesse2018-06-271-2/+3
| | | | | | | | | | | This helps tracking what git version cgit uses. The security implications are low as anybody can look up the version of our submodule anyway. The paranoid can use a custom footer. :-p On the other hand this brings potential security issues to the administrators eyes... Signed-off-by: Christian Hesse <mail@eworm.de>
* git: update to v2.17.1Christian Hesse2018-06-271-1/+1
| | | | | | | | | Update to git version v2.17.1. Required changes: * The function 'typename' has been renamed to 'type_name' (upstream commit debca9d2fe784193dc2d9f98b5edac605ddfefbb) Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: use type='search' for the search boxVille Skyttä2017-10-151-2/+2
| | | | Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
* ui-tree: link to blame UI if enabledJeff Smith2017-10-031-3/+17
| | | | | | | Create links to the blame page. Signed-off-by: Jeff Smith <whydoubt@gmail.com> Reviewed-by: John Keeping <john@keeping.me.uk>
* ui-shared: make a char* parameter constJeff Smith2017-10-031-11/+8
| | | | | | | | | | | All cgit_xxx_link functions take const char* for the 'name' parameter, except for cgit_commit_link, which takes a char* and subsequently modifies the contents. Avoiding the content changes, and making it const char* will avoid the need to make copies of const char* strings being passed to cgit_commit_link. Signed-off-by: Jeff Smith <whydoubt@gmail.com> Reviewed-by: John Keeping <john@keeping.me.uk>
* ui-tree: move set_title_from_path to ui-sharedJeff Smith2017-10-031-0/+31
| | | | | | | | The ui-blame code will also need to call set_title_from_path, so go ahead and move it to ui-shared. Signed-off-by: Jeff Smith <whydoubt@gmail.com> Reviewed-by: John Keeping <john@keeping.me.uk>
* ui-shared: don't print path crumbs without a repoJohn Keeping2017-08-101-1/+1
| | | | | | | | | | | | | | | cgit_print_path_crumbs() can call repolink() which assumes that ctx.repo is non-null. Currently we don't have any commands that set want_vpath without also setting want_repo so it shouldn't be possible to fail this test, but the check in cgit.c is in the wrong order so it is possible to specify a query string like "?p=log&path=foo/bar" to end up here without a valid repository. This was found by American fuzzy lop [0]. [0] http://lcamtuf.coredump.cx/afl/ Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: replace 'unsigned char sha1[20]' with 'struct object_id oid'Christian Hesse2016-10-041-5/+5
| | | | | | Upstream git is replacing 'unsigned char sha1[20]' with 'struct object_id oid'. We have some code that can be changed independent from upstream. So here we go...
* ui-shared: fix decl-after-statement warningsJohn Keeping2016-10-011-5/+7
| | | | | | | | git.git's coding style avoids decl-after-statement and we generally try to follow it but a few warnings have crept in recently. Fix the ones in ui-shared.c Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: fix segfault when defbranch is NULLEric Wong2016-07-061-1/+1
| | | | | | | | Not sure if there's a better fix for this. defbranch is NULL here on my setup when a crawler hit an invalid URL, causing strcmp to segfault. Signed-off-by: Eric Wong <normalperson@yhbt.net>
* Avoid ambiguities when prettifying snapshot namesLukas Fleischer2016-07-051-5/+21
| | | | | | | | | | | When composing snapshot file names for a tag with a prefix of the form v[0-9] (resp. V[0-9]), the leading "v" (resp. "V") is stripped. This leads to conflicts if a tag with the stripped name already exists or if there are tags only differing in the capitalization of the leading "v". Make sure we do not strip the "v" in these cases. Reported-by: Juuso Lapinlampi <wub@partyvan.eu> Signed-off-by: Lukas Fleischer <lfleischer@lfos.de>
* Hosted on HTTPS nowJason A. Donenfeld2016-06-071-1/+1
|
* forms: action should not be emptyJason A. Donenfeld2016-05-121-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui-shared: Remove a name attribute with an empty valueJuuso Lapinlampi2016-05-121-1/+1
| | | | | | | | The name attribute is optional in an input element, but it must not be an empty value. See: https://html.spec.whatwg.org/#attr-fe-name See: https://html.spec.whatwg.org/#the-input-element
* ui-shared: HTML-ize DOCTYPE and <html>Juuso Lapinlampi2016-05-121-3/+2
| | | | | Get rid of the XHTML headers, bringing cgit slowly to the modern age of HTML.
* ui-shared: Simplify cgit_print_error_page() logicJuuso Lapinlampi2016-05-121-4/+2
|
* ui-shared: redirect should not exit early for cacheJason A. Donenfeld2016-02-261-1/+0
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tabs: do not use target=_blankJason A. Donenfeld2016-02-231-1/+1
|
* ui-shared: add homepage to tabsJason A. Donenfeld2016-02-221-0/+5
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Avoid DATE_STRFTIME for long/short datesJohn Keeping2016-02-081-7/+6
| | | | | | | | | | | Git's DATE_STRFTIME ignores the timezone argument and just uses the local timezone regardless of whether the "local" flag is set. Since our existing FMT_LONGDATE and FMT_SHORTDATE are pretty-much perfect matches to DATE_ISO8601 and DATE_SHORT, switch to taking a date_mode_type directly in cgit_date_mode(). Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: remove cgit_print_date()John Keeping2016-02-081-20/+0
| | | | | | There are no longer any users of this function. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: use show_date for footer timestampJohn Keeping2016-02-081-1/+1
| | | | Signed-off-by: John Keeping <john@keeping.me.uk>
* ui: show ages in the originator's timezoneJohn Keeping2016-02-081-11/+11
| | | | | | | This affects the tooltip showing the full time and the case when a date is sufficiently old to be shown in full rather than as an offset. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: add cgit_date_mode()John Keeping2016-02-081-0/+9
| | | | | | | | This returns the correct mode value for use with Git's show_date() based on the current CGit configuration and will be used in the following patches. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: remove "format" from cgit_print_age()John Keeping2016-02-081-2/+2
| | | | | | | We never use any format other than FMT_SHORTDATE, so move that into the function. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: prevent malicious filename from injecting headersJason A. Donenfeld2016-01-141-3/+5
|
* ui-shared: Avoid new line injection into redirect headerJason A. Donenfeld2016-01-141-1/+3
|
* Fix segmentation fault in hc()Lukas Fleischer2016-01-131-0/+3
| | | | | | | | The ctx.qry.page variable might be unset at this point, e.g. when an invalid command is passed and cgit_print_pageheader() is called to show an error message. Signed-off-by: Lukas Fleischer <lfleischer@lfos.de>
* git: update to v2.7.0Christian Hesse2016-01-131-1/+1
| | | | | | | | | | | | | | Update to git version v2.7.0. * Upstream commit ed1c9977cb1b63e4270ad8bdf967a2d02580aa08 (Remove get_object_hash.) changed API: Convert all instances of get_object_hash to use an appropriate reference to the hash member of the oid member of struct object. This provides no functional change, as it is essentially a macro substitution. Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: fix resource leak: free allocation from cgit_hosturlChristian Hesse2015-10-091-2/+3
| | | | Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: return value of cgit_hosturl is not constChristian Hesse2015-10-091-3/+3
| | | | Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: fix resource leak: free allocation from cgit_currenturlChristian Hesse2015-10-091-3/+8
| | | | | Coverity-id: 13927 Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: return value of cgit_currenturl is not constChristian Hesse2015-10-091-2/+2
| | | | Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: fix resource leak: free allocation from cgit_fileurlChristian Hesse2015-10-091-5/+11
| | | | | Coverity-id: 13918 Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: cache errors for "dynamic TTL"John Keeping2015-08-141-0/+1
| | | | | | | Most errors we generate are (potentially) transient, such as non-existent object IDs so we don't want them to be cached forever. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: add cgit_print_layout_{start,end}()John Keeping2015-08-141-0/+12
| | | | | | | | These will avoid needing to call three functions to start page layout in subsequent patches when we move the layout setup into each individual page. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: add cgit_print_error_page() functionJohn Keeping2015-08-141-0/+14
| | | | | | | This will allow us to generate error responses with the correct HTTP response code without needing all of the layout boilerplate. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: show full date in tooltip if longer ago than max_relativeJohn Keeping2015-08-131-0/+4
| | | | | | | | | | | Commit caed6cb (ui-shared: show absolute time in tooltip for relative dates, 2014-12-20) added a toolip when we show a relative time. However, in some cases we show a short date (that is, the date but not the time) if an event was sufficiently far in the past and that commit did not update that case to add the same tooltip. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: use common function in print_rel_date()John Keeping2015-08-131-10/+1
| | | | Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: extract date formatting to a functionJohn Keeping2015-08-131-4/+9
| | | | | | This will allow this code to be common with print_rel_date. Signed-off-by: John Keeping <john@keeping.me.uk>
* redirect: cleanlinessJason A. Donenfeld2015-08-131-2/+1
|
* log: allow users to follow a fileJohn Keeping2015-08-121-3/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Teach the "log" UI to behave in the same way as "git log --follow", when given a suitable instruction by the user. The default behaviour remains to show the log without following renames, but the follow behaviour can be activated by following a link in the page header. Follow is not the default because outputting merges in follow mode is tricky ("git log --follow" will not show merges). We also disable the graph in follow mode because the commit graph is not simplified so we end up with frequent gaps in the graph and many lines that do not connect with any commits we're actually showing. We also teach the "diff" and "commit" UIs to respect the follow flag on URLs, causing the single-file version of these UIs to detect renames. This feature is needed only for commits that rename the path we're interested in. For commits before the file has been renamed (i.e. that appear later in the log list) we change the file path in the links from the log to point to the old name; this means that links to commits always limit by the path known to that commit. If we didn't do this we would need to walk down the log diff'ing every commit whenever we want to show a commit. The drawback is that the "Log" link in the top bar of such a page links to the log limited by the old name, so it will only show pre-rename commits. I consider this a reasonable trade-off since the "Back" button still works and the log matches the path displayed in the top bar. Since following renames requires running diff on every commit we consider, I've added a knob to the configuration file to globally enable/disable this feature. Note that we may consider a large number of commits the revision walking machinery no longer performs any path limitation so we have to examine every commit until we find a page full of commits that affect the target path or something related to it. Suggested-by: René Neumann <necoro@necoro.eu> Signed-off-by: John Keeping <john@keeping.me.uk>
* about: always ensure page has a trailing slashJason A. Donenfeld2015-08-121-0/+8
| | | | | | Otherwise we can't easily embed links to other /about/ pages. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* git: update to v2.5.0Christian Hesse2015-08-121-1/+1
| | | | | | | | | | | | | | | Update to git version v2.5.0. * Upstream commit 5455ee0573a22bb793a7083d593ae1ace909cd4c (Merge branch 'bc/object-id') changed API: for_each_ref() callback functions were taught to name the objects not with "unsigned char sha1[20]" but with "struct object_id". * Upstream commit dcf692625ac569fefbe52269061230f4fde10e47 (path.c: make get_pathname() call sites return const char *) Signed-off-by: Christian Hesse <mail@eworm.de>
* ui-shared: allow remote refs in branch switcherChristian Hesse2015-03-181-0/+2
| | | | Signed-off-by: Christian Hesse <mail@eworm.de>
* Remove no-op link from submodule entriesLukas Fleischer2015-03-131-17/+24
| | | | | | | Instead of linking to the current page ("href='#'"), do not add a link to a submodule entry at all if the module-link setting is not used. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* ui-shared: currenturl should take into account leading slashJason A. Donenfeld2015-03-091-1/+5
|
* ui-shared: don't use an integer as a NULL pointerJohn Keeping2015-03-091-1/+1
| | | | Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: avoid initializing static variable to zeroJohn Keeping2015-03-091-1/+1
| | | | | | | | | Sparse complains that we are using a plain integer as a NULL pointer here, but in fact we do not have to specify a value for this variable at all since it has static storage duration and thus will be initialized to NULL by the compiler. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: make cgit_doctype 'static'John Keeping2015-03-091-1/+1
| | | | | | This is not used outside this file and is not declared. Signed-off-by: John Keeping <john@keeping.me.uk>
* Avoid non-ANSI function declarationsJohn Keeping2015-03-091-6/+6
| | | | | | | | Sparse says things like: warning: non-ANSI function declaration of function 'calc_ttl' Signed-off-by: John Keeping <john@keeping.me.uk>
* Make root handling sane again.Jason A. Donenfeld2015-03-031-12/+12
|
* ui-shared: Add current url helper function.Jason A. Donenfeld2015-03-031-2/+9
|
* ui-shared: keep filter repolist page in paginationJason A. Donenfeld2015-03-031-3/+3
|
* ui-repolist: use ctx.qry.url instead of rooturl, in case we're filteringJason A. Donenfeld2015-03-031-1/+1
|
* ui-shared.c: Refactor add_clone_urls()Lukas Fleischer2015-02-051-22/+10
| | | | | | Make use of strbuf_split_str() and strbuf lists to split clone URLs. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* tag: reference with "h" instead of "id"John Keeping2015-01-191-4/+4
| | | | | | | | | | | | | | | When clicking on "log" from a tag we end up showing the log of whatever branch we used to reach the tag. If the tag doesn't point onto a branch then the tagged commit won't appear in this output. By linking to tags with the head parameter instead of the "id" parameter the log link will show the log of the tag. This is clearly desirable when the tag has been reached from the refs UI and changing the behaviour for tag decorations makes them match branch decorations where log -> decoration -> log shows the log of the decoration. Reported-by: Ferry Huberts <mailings@hupie.com> Signed-off-by: John Keeping <john@keeping.me.uk>
* footer: link back to cgit home pageJason A. Donenfeld2014-12-231-1/+1
| | | | | The footer has always been overrideable using the footer= in cgitrc, so this won't anger anybody who cares about their footer.
* ui-shared: show absolute time in tooltip for relative datesJohn Keeping2014-12-231-12/+23
| | | | Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: add rel-vcs microformat links to HTML headerJohn Keeping2014-12-231-0/+11
| | | | | | As described at https://joeyh.name/rfc/rel-vcs/. Signed-off-by: John Keeping <john@keeping.me.uk>
* Extract clone URL printing to ui-shared.cJohn Keeping2014-12-231-0/+37
| | | | | | | | This will allow us to reuse the same logic to add clone URL <link/> elements to the header of all repo-specific pages in order to support the rel-vcs microformat. Signed-off-by: John Keeping <john@keeping.me.uk>
* Change "ss" diff flag to an enumJohn Keeping2014-12-131-4/+4
| | | | | | | | | | | This will allow us to introduce a new "stat only" diff mode without needing an explosion of mutually incompatible flags. The old "ss" query parameter is still accepted in order to avoid breaking saved links, but we no longer generate any URIs using it; instead the new "dt" (diff type) parameter is used. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: remove toggle_ssdiff arg to cgit_diff_link()John Keeping2014-12-131-4/+4
| | | | | | | This argument is never used with a value other than zero, so remove it and simplify the code. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-shared: remove toggle_ssdiff arg to cgit_commit_link()John Keeping2014-12-131-6/+5
| | | | | | | This argument is never used with a value other than zero, so remove it and simplify the code. Signed-off-by: John Keeping <john@keeping.me.uk>
* git: update for git 2.0Christian Hesse2014-06-281-1/+1
| | | | | | | prefixcmp() and suffixcmp() have been remove, functionality is now provided by starts_with() and ends_with(). Retrurn values have been changed, so instead of just renaming we have to fix logic. Everything else looks just fine.
* ui-shared: do not allow negative minutesJason A. Donenfeld2014-01-171-0/+2
| | | | | | | Do to timestamp differences, sometimes cgit would should "-0 min", which doesn't make any sense. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui-shared: move about tab all the way to the leftJason A. Donenfeld2014-01-171-4/+4
| | | | | | | | There were no objections (at the time of committing this): http://lists.zx2c4.com/pipermail/cgit/2013-May/001393.html http://lists.zx2c4.com/pipermail/cgit/2014-January/001904.html Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Switch to exclusively using global ctxLukas Fleischer2014-01-171-151/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drop the context parameter from the following functions (and all static helpers used by them) and use the global context instead: * cgit_print_http_headers() * cgit_print_docstart() * cgit_print_pageheader() Remove context parameter from all commands Drop the context parameter from the following functions (and all static helpers used by them) and use the global context instead: * cgit_get_cmd() * All cgit command functions. * cgit_clone_info() * cgit_clone_objects() * cgit_clone_head() * cgit_print_plain() * cgit_show_stats() In initialization routines, use the global context variable instead of passing a pointer around locally. Remove callback data parameter for cache slots This is no longer needed since the context is always read from the global context variable. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* auth: have cgit calculate login addressJason A. Donenfeld2014-01-161-0/+8
| | | | | | | This way we're sure to use virtual root, or any other strangeness encountered. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* auth: add basic authentication filter frameworkJason A. Donenfeld2014-01-161-12/+16
| | | | | | | | | | | | | | | | This leverages the new lua support. See filters/simple-authentication.lua for explaination of how this works. There is also additional documentation in cgitrc.5.txt. Though this is a cookie-based approach, cgit's caching mechanism is preserved for authenticated pages. Very plugable and extendable depending on user needs. The sample script uses an HMAC-SHA1 based cookie to store the currently logged in user, with an expiration date. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui-shared: URL-escape script_nameJohn Keeping2014-01-121-2/+2
| | | | | | | | As far as I know, there is no requirement that $SCRIPT_NAME contain only URL-safe characters, so we need to make sure that any special characters are escaped. Signed-off-by: John Keeping <john@keeping.me.uk>
* Replace most uses of strncmp() with prefixcmp()Lukas Fleischer2014-01-101-1/+1
| | | | | | | This is a preparation for replacing all prefix checks with either strip_prefix() or starts_with() when Git 1.8.6 is released. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* Update copyright informationLukas Fleischer2014-01-081-1/+1
| | | | | | | | | * Name "cgit Development Team" as copyright holder to avoid listing every single developer. * Update copyright ranges. Signed-off-by: Lukas Fleischer <cgit@crytocrack.de>
* ui-shared: Drop filepair_cb_raw() and helperLukas Fleischer2013-09-141-72/+0
| | | | | | | | Remove filepair_cb_raw() and all related functions. These are no longer needed. We now use Git's internal functions for raw diff formatting everywhere. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* Extract filepair_cb from ui-patch.cLukas Fleischer2013-08-161-0/+72
| | | | | | | | | | | Move filepair_cb() from ui-patch.c to ui-shared.c and rename it to filepair_cb_raw(). This callback will be used in ui-diff.c in a follow-up patch. Note that it is not straightforward to extract filepair_cb() from ui-diff.c which is why it is not done here as well. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* readme: use string_list instead of space deliminationsJason A. Donenfeld2013-05-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Now this is possible in cgitrc - readme=:README.md readme=:readme.md readme=:README.mkd readme=:readme.mkd readme=:README.rst readme=:readme.rst readme=:README.html readme=:readme.html readme=:README.htm readme=:readme.htm readme=:README.txt readme=:readme.txt readme=:README readme=:readme readme=:INSTALL.txt readme=:install.txt readme=:INSTALL readme=:install Suggested-by: John Keeping <john@keeping.me.uk> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* use struct strbuf instead of static buffersJohn Keeping2013-04-081-28/+35
| | | | | | | | | | | | | | | | | | | Use "struct strbuf" from Git to remove the limit on file path length. Notes on scan-tree: This is slightly involved since I decided to pass the strbuf into add_repo() and modify if whenever a new file name is required, which should avoid any extra allocations within that function. The pattern there is to append the filename, use it and then reset the buffer to its original length (retaining a trailing '/'). Notes on ui-snapshot: Since write_archive modifies the argv array passed to it we copy the argv_array values into a new array of char* and then free the original argv_array structure and the new array without worrying about what the values now look like. Signed-off-by: John Keeping <john@keeping.me.uk>
* Convert cgit_print_error to a variadic functionJohn Keeping2013-04-081-2/+13
| | | | | | | | | This removes many uses of "fmt" which uses a fixed size static pool of fixed size buffers. Instead of relying on these, we now pass around argument lists for as long as possible before using a strbuf to render content of an arbitrary size. Signed-off-by: John Keeping <john@keeping.me.uk>
* Fix out-of-bounds memory accesses with virtual_root=""John Keeping2013-04-081-9/+5
| | | | | | | | | | | | | | | | The CGit configuration variable virtual_root is normalized so that it does not have a trailing '/' character, but it is allowed to be empty (the empty string and NULL have different meanings here) and there is code that is insufficiently cautious when checking if it ends in a '/': if (virtual_root[strlen(virtual_root) - 1] != '/') Clearly this check is redundant, but rather than simply removing it we get a slight efficiency improvement by switching the normalization so that the virtual_root variable always ends in '/'. Do this with a new "ensure_end" helper. Signed-off-by: John Keeping <john@keeping.me.uk>
* Always #include corresponding .h in .c filesJohn Keeping2013-04-081-0/+1
| | | | | | | | | | | | While doing this, remove declarations from header files where the corresponding definition is declared "static" in order to avoid build errors. Also re-order existing headers in ui-*.c so that the file-specific header always comes immediately after "cgit.h", helping with future consistency. Signed-off-by: John Keeping <john@keeping.me.uk>
* Return const char * in cgit_{httpscheme, hosturl, rooturl}()Lukas Fleischer2013-04-081-4/+4
| | | | | | | | | | | | The return values of these functions are essentially constant and should never be modified. Note that this will introduce a compiler warning when we try to free the return value of any of these functions. However, given that all of these currently return statically allocated strings in some cases, they need to be refactored before this can be done anyway. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* ui-shared: squelch compiler warning.Jason A. Donenfeld2013-03-201-0/+1
| | | | | | Since tail is initialized to 0, we will never get a warning on the last if statement, but recent gcc complains anyway. So, we initialize len as well. Future gcc versions should be able to optimize this out anyway.
* Merge branch 'wip'Jason A. Donenfeld2013-03-201-57/+7
|\
| * cgit_print_snapshot_links(): Free prefix variableLukas Fleischer2013-03-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes following memory leak seen with "PATH_INFO=/cgit/commit/": ==16894== 12 bytes in 1 blocks are definitely lost in loss record 9 of 92 ==16894== at 0x4C2C04B: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==16894== by 0x56F2DF1: strdup (in /usr/lib/libc-2.17.so) ==16894== by 0x46CAC8: xstrdup (wrapper.c:35) ==16894== by 0x414E34: cgit_print_snapshot_links (ui-shared.c:926) ==16894== by 0x40CFA1: cgit_print_commit (ui-commit.c:102) ==16894== by 0x407B06: commit_fn (cmd.c:54) ==16894== by 0x405E16: process_request (cgit.c:574) ==16894== by 0x4074C8: cache_process (cache.c:322) ==16894== by 0x406C4F: main (cgit.c:872) Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
| * ui-shared.c: Remove unused function print_archive_ref()Lukas Fleischer2013-03-041-39/+0
| | | | | | | | | | | | This is no longer used as of commit f135569b. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
| * ui-shared.c: Remove unused function cgit_currurl()Lukas Fleischer2013-03-041-12/+0
| | | | | | | | | | | | This is no longer used as of commit 0c8e184e. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
| * Mark several functions/variables staticLukas Fleischer2013-03-041-9/+9
| | | | | | | | | | | | Spotted by parsing the output of `gcc -Wmissing-prototypes [...]`. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* | ui-shared: fix return type of cgit_self_linkJohn Keeping2013-03-201-41/+42
|/ | | | | | | | | | | | | | cgit_self_link() is a void function but implements each case it handles by doing "return <another_void_function>" which is not valid C; section 6.8.6.4 of C11 says: A return statement with an expression shall not appear in a function whose return type is void. Fix this by removing the return keywords and converting the final code block into an "else". Signed-off-by: John Keeping <john@keeping.me.uk>
* White space around control verbs.Jason A. Donenfeld2013-03-041-6/+6
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Fix several whitespace errorsLukas Fleischer2013-03-041-9/+9
| | | | | | | | | | * Remove whitespace at the end of lines. * Replace space indentation by tabs. * Add whitespace before/after several operators ("+", "-", "*", ...) * Add whitespace to assignments ("foo = bar;"). * Fix whitespace in parameter lists ("foobar(foo, bar, 42)"). Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* Print submodule revision next to submodule linkstfn2013-03-021-0/+1
|
* ui-shared: use placeholder for empty commit subjectChristian Franke2012-10-281-1/+4
| | | | | Display a placeholder when creating links to commits with empty subjects. This avoids the creation of links of the form <a></a>.
* ui: Remember to print ampersand as proper html entities.William Bell2012-10-171-7/+7
|
* Merge branch 'lh/module-links'Lars Hjemli2012-03-181-0/+56
|\
| * ui-tree.c: add support for path-selected submodule linksLars Hjemli2011-06-151-0/+56
| | | | | | | | | | | | | | | | | | | | | | The current 'repo.module-link' option is sufficient when all gitlinks in a repository can be converted to commit links in a uniform way, but not when different submodules/paths needs different settings. This patch adds support for 'repo.module-link.<path>', which will be used for linking to submodules at paths matching one such entry. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | segfault fix on some bogus requestsEric Wong2012-03-181-2/+2
| | | | | | | | | | | | | | | | | | ctx.qry.head can be NULL in some cases due to bad requests by weird bots. I managed to reproduce with: PATH_INFO=/repo.git/shop.php QUERY_STRING=id= Signed-off-by: Eric Wong <normalperson@yhbt.net>
* | Fix segmentation fault in empty repositoryJohn Keeping2012-01-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | When a repository is empty, the ATOM feed link is written in the header, but this involves formatting ctx->qry.head which is NULL in this case. With glibc, vsnprintf formats "%s" with a NULL input as "(null)" but on Solaris this results in a segmentation fault. Since we don't have a meaningful head for the atom feed in an empty repository, it's simplest not to write out the link element at all. Signed-off-by: John Keeping <john@metanate.com>
* | Add sort parameter to pager of repo listTobias Grimm2012-01-031-9/+15
|/ | | | | | When the repolist is paged, the page-links are missing the sort parameter, causing the initial page to be custom sorted, but any clicked page will then be with the default sort order again.
* Merge branch 'stable'Lars Hjemli2011-03-051-1/+1
|\
| * ui-shared: silence warningBernhard Reutner-Fischer2011-02-191-1/+1
| | | | | | | | | | | | | | | | warning: format ‘%ld’ expects type ‘long int’, but argument 2 has type ‘size_t’ Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | implement repo.logo and repo.logo-linkBernhard Reutner-Fischer2011-02-191-4/+14
| | | | | | | | | | | | | | | | Allow for per repo logo and logo-link; Use global logo and logo-link per default. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'jh/ignorews'Lars Hjemli2010-07-181-0/+10
|\ \
| * | ui-diff: Add link to ignore/show whitespace changes in diffsJohan Herland2010-07-181-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a link to the "Diffstat" line to ignore/show whitespace changes in the generated diff. To support this, cgit_commit_link() and cgit_diff_link() has learned to preserve the ctx.qry.ignorews variable. Signed-off-by: Johan Herland <johan@herland.net>
* | | Merge branch 'lh/range-search'Lars Hjemli2010-06-221-0/+1
|\ \ \ | |/ / |/| |
| * | ui-log.c: allow commit range as search expressionLars Hjemli2010-06-191-0/+1
| | | | | | | | | | | | | | | Inspired-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-diff: Add links to increase/decrease number of context lines in diffsJohan Herland2010-06-191-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add two links to the "Diffstat" line to show more/less context lines in the generated diff. To support this, cgit_commit_link() and cgit_diff_link() has learned to preserve the ctx.qry.context variable. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Preserve path limit in "tab bar" linksJohan Herland2010-06-191-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using the "tab bar" in the pageheader to navigate between pages, any path limit in effect on the current page is forgotten in the link to the target page, even if the target page can interpret and use the path limit constructively. Instead, preserve the current page's path limit in the "tab bar" links to other pages, where the path limit is useful to the target page. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-commit: Preserve path limit in links to commit pageJohan Herland2010-06-191-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This includes adding a path argument to cgit_commit_link() and updating all its callers. The callers from within the commit page (i.e. the "commit", "unidiff"/"side-by-side diff" and "parent" links) all preserve the path limit of the current commit page. All other callers pass NULL (i.e. no path limit). Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-patch: Apply path limit to generated patchJohan Herland2010-06-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Also indicate in the comment section of the patch that a path limit was applied, too easily see when a generated patch is only partial. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Teach "breadcrumb" navigation to path limit display beneath tab barJohan Herland2010-06-191-1/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a path limit is in effect, and displayed directly beneath the tab bar, it should offer breadcrumb navigation (like what the 'tree' page does), to allow changing the path limit easily. Implementing this requires a robust way to link back to the current page with a changed ctx->qry.path, but without losing track of the other query arguments. This is solved by adding the new cgit_self_link() function, which is then invoked repeatedly by the new cgit_print_path_crumbs() function while manipulating ctx->qry.path. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Display path limit directly beneath tab bar in relevant pagesJohan Herland2010-06-191-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Design-wise, the path is shown by "expanding" the grey border between the tab bar and the content area of the page to house the current path limit. This is only displayed on pages where the path limit is relevant, and only when a path limit is in effect. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Replace ctx.qry.path with ctx.qry.vpathJohan Herland2010-06-191-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In all cases where ui-shared uses ctx.qry.path, it is done so in the context of a in-project path, and not in the context in which the 'refs' page or the 'clone'-related functionality uses ctx.qry.path. Make this explicit by using ctx.qry.vpath instead. This path introduces no fundamental difference in functionality except for fixing some minor bugs, for example the Atom feed reference from a "$repo/refs/heads/" page. Note that the usage of ctx.qry.path in the other ui-<page>.c files is ok, since that code presumably is only executed in the context of its own <page>, so the correct interpretation of ctx.qry.path is never in question. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Remove needless cgit_get_cmd() call, and refactor hc() accordinglyJohan Herland2010-06-191-19/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The call to cgit_get_cmd() and the following fallback handling (to "summary" or "repoindex") in cgit_print_pageheader() is unnecessary, since the same fallback handling was already done when ctx.qry.page was set when cgit_get_cmd() was called from process_request() in cgit.c. As such, hc() can also be rewritten to simply compare the given 'page' string against ctx.qry.page. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Improve const-ness in APIJohan Herland2010-06-191-36/+40
|/ / | | | | | | | | | | | | This is needed to prevent const-related warnings in later patches. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'stable'Lars Hjemli2010-02-271-2/+2
|\|
| * ui-shared.c: fix segfault when repo is emptyFlorian Pritz2010-02-271-2/+2
| | | | | | | | | | | | | | | | | | PATH_INFO="/$REPONAME/commit/?id=1" QUERY_STRING="id=1" ./cgit.cgi triggers segfault when the repository is empty and therefore ctx.qry.head is unset Signed-off-by: Florian Pritz <bluewind@xssn.at> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'ro/ssdiff'Lars Hjemli2009-12-081-6/+28
|\ \
| * | Add possibility to switch between unidiff and side-by-side-diff.Ragnar Ouchterlony2009-09-161-6/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A new config option side-by-side-diffs added, defaulting to 0, meaning unidiff. Also a query option (ss) is used toggle this. In the commit page you can switch between the two diff formats by clicking on the link on the "commit"-row, to the right of (patch). In the diff page you can switch by using the link at the start of the page. All commit-links and diff-links will remember the choice. Signed-off-by: Ragnar Ouchterlony <ragnar@lysator.liu.se> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'stable'Lars Hjemli2009-11-071-1/+1
|\ \ \ | | |/ | |/|
| * | Nov is the correct abbreviationDanijel Tašov2009-11-071-1/+1
| |/
* / ui-shared.c: prettify download links when generated from tag pageLars Hjemli2009-10-161-2/+7
|/ | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'stable'Lars Hjemli2009-08-181-8/+11
|\
| * 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>
* | ui-shared: add support for header/footer options when embedded=1Lars Hjemli2009-08-111-5/+12
| | | | | | | | | | | | | | | | | | | | | | When embedded=1, cgit used to ignore the header and footer options. But honoring these options when embedded=1 makes it possible to "frame" the html fragment generated by cgit with any kind of static content, i.e. it should become easier to integrate cgit with site-specfic layouts. Original-patch-by: Mark Constable <markc@renta.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-shared: add support for NO_HTTP=1/--nohttpLars Hjemli2009-08-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | cgit_print_http_headers() used to do nothing if 'embedded' was specified in cgitrc, but that was wrong - we never want to skip the headers when invoked as a CGI app. Sadly, there's no easy way to detect if we're invoked as a CGI app or if we're invoked by another CGI app, so for the latter case cgit needs to be invoked with either --nohttp on the command line or NO_HTTP=1 in the environment. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Cleanup handling of environment variablesLars Hjemli2009-08-101-23/+9
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/embedded'Lars Hjemli2009-07-251-6/+22
|\ \ | | | | | | | | | | | | | | | Conflicts: cgitrc.5.txt ui-shared.c
| * | Add support for 'noheader' optionLars Hjemli2009-07-251-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | This option can be used to disable the standard cgit page header, which might be useful in combination with the 'embedded' option. Suggested-by: Mark Constable <markc@renta.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Add support for an 'embedded' option in cgitrcLars Hjemli2009-02-021-0/+10
| |/ | | | | | | | | | | | | | | | | | | When activated, cgit will neither generate http headers nor any 'framing' html elements (like <html> and <body>). Also, all page content is now wrapped in a <div id='cgit'> element to make it easier to select the correct cgit classes when embedded/themed. Suggested-by: Matt Sealey <matt@genesi-usa.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'ml/head-include'Lars Hjemli2009-07-251-1/+3
|\ \
| * | Add head-include configuration option.Mark Lodato2009-06-071-1/+3
| |/ | | | | | | | | | | This patch adds an option to the configuration file, "head-include", which works just like "header" or "footer", except the content is put into the HTML's <head> tag.
* | Merge branch 'plain-etag'Lars Hjemli2009-07-251-0/+6
|\ \ | | | | | | | | | | | | Conflicts: ui-shared.c
| * | Add support for HEAD requestsLars Hjemli2009-02-191-0/+4
| | | | | | | | | | | | | | | | | | This is a quick 'n dirty hack which makes cgit honor HEAD requests. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Add support for ETag in 'plain' viewLars Hjemli2009-02-191-0/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | When downloading a blob identified by its path, the client might want to know if the blob has been modified since a previous download of the same path. To this end, an ETag containing the blob SHA1 seems to be ideal. Todo: add support for HEAD requests... Suggested-by: Owen Taylor <otaylor@redhat.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'do/https'Lars Hjemli2009-07-251-1/+13
|\ \ | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | use cgit_httpscheme() for atom feedDiego Ongaro2009-06-111-1/+2
| | |
| * | add cgit_httpscheme() -> http:// or https://Diego Ongaro2009-06-111-0/+11
| |/
* / Return http statuscode 404 on unknown branchLars Hjemli2009-06-071-0/+2
|/ | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for a custom headerLars Hjemli2009-01-291-0/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/stats'Lars Hjemli2009-01-271-3/+12
|\ | | | | | | | | | | | | | | | | | | Conflicts: cgit.c cgit.css cgit.h ui-tree.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-shared: externalize add_hidden_formfields()Lars Hjemli2008-12-071-3/+3
| | | | | | | | | | | | This function will be reused by ui-stats.c in the next commit. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-shared: add and use cgit_stats_link()Lars Hjemli2008-12-071-2/+8
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-stats: replace 'enable-stats' setting with 'max-stats'Lars Hjemli2008-12-071-1/+1
| | | | | | | | | | | | | | | | | | 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>
| * Add a 'stats' page to each repoLars Hjemli2008-12-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | 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-111-1/+6
|\ \
| * | Avoid SEGFAULT on invalid requestsLars Hjemli2009-01-111-1/+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>
* | Merge branch 'full-log'Lars Hjemli2008-12-061-2/+10
|\ \ | | | | | | | | | | | | | | | Conflicts: cgit.c cgit.h
| * | ui-log: add support for showing the full commit messageLars Hjemli2008-11-291-2/+10
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | 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-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-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>
* ui-shared: add cgit_tag_link()Lars Hjemli2008-10-051-0/+6
| | | | | | | 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>
* 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>
* ui-repolist + ui-shared: Use cgit_summary_link()Lars Hjemli2008-10-051-4/+3
| | | | | | | 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-051-0/+5
| | | | | | | 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>
* ui-shared.c: use html_url_arg()Lars Hjemli2008-10-051-10/+10
| | | | | | | | | 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>
* 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>
* Merge branch 'lh/plain'Lars Hjemli2008-09-011-0/+8
|\ | | | | | | | | | | | | * lh/plain: Supply status description to html_status() ui-tree: link to plain view instead of blob view Implement plain view
| * ui-tree: link to plain view instead of blob viewLars Hjemli2008-08-061-0/+6
| | | | | | | | | | | | | | | | | | | | | | 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-061-0/+2
| | | | | | | | | | | | | | 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>
* | Add atom-supportLars Hjemli2008-08-011-0/+23
|/ | | | | | | 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>
* Added `local-time` option to cgitrcStefan Naewe2008-08-011-4/+7
| | | | | | | | | 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>
* Be prepared for empty repositoriesLars Hjemli2008-07-271-1/+2
| | | | | | 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>
* Add a favicon option to cgitrcLars Hjemli2008-07-191-0/+5
| | | | | | 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-261-4/+10
| | | | | | | | | 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>
* Add link to index page from repo header, remove page nameLars Hjemli2008-05-041-2/+2
| | | | | | | | | | | 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-031-0/+3
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add cgit_index_link() function with support for offsetLars Hjemli2008-05-031-5/+17
| | | | | | This function will be used to build a pager in ui-repolist. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add 'about site' and 'about repo' pagesLars Hjemli2008-04-291-3/+50
| | | | | | | | 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>
* Re-enable 'index-info' and add support for 'root-desc' in cgitrcLars Hjemli2008-04-291-1/+4
| | | | | | | | | | | | | 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>
* Cleanup page headerLars Hjemli2008-04-151-17/+4
| | | | | | Fix some invalid html, remove dead code. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Remove 'patch' link from tab, add to commit viewLars Hjemli2008-04-131-2/+0
| | | | | | | | | | 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-131-1/+10
| | | | | | | 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-131-15/+50
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Reintroduce the branch switcherLars Hjemli2008-04-121-0/+7
| | | | 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>
* Replace sidebar/logoLars Hjemli2008-04-121-81/+44
| | | | | | | | | 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>
* Refactor snapshot supportLars Hjemli2008-03-241-1/+16
| | | | | | | | | 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 struct cgit_page to cgit_contextLars Hjemli2008-03-241-61/+51
| | | | | | | | 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-181-0/+16
| | | | | | | | 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-161-1/+1
| | | | | | | 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-161-14/+14
| | | | | | | | 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-161-30/+30
| | | | | | | | 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-161-43/+43
| | | | | | | | | 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>
* Add plain patch viewLars Hjemli2007-12-111-0/+8
| | | | | | | | | | The new view mimics the output from `git format-patch`, making it possible to cherry-pick directly from cgit with something like `curl $url | git am`. Inspired by a patch to `git-apply` by Mike Hommey: http://thread.gmane.org/gmane.comp.version-control.git/67611/focus=67610 Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for automatic and custom clone urlsLars Hjemli2007-12-031-0/+17
| | | | | | | | | | | | | This adds support for two new parameters to cgitrc: clone-prefix and repo.clone-url. If clone-prefix is specified, all repos will get a clone url printed in the sidebar; the url is generated by clone-prefix + repo.url. Additionally, each repo can specify repo.clone-url which will override any such auto-generated url. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'stable'Lars Hjemli2007-12-021-0/+4
|\ | | | | | | | | | | * stable: Handle missing timestamp in commit/tag objects Set commit date on snapshot contents
| * Handle missing timestamp in commit/tag objectsLars Hjemli2007-12-021-0/+4
| | | | | | | | | | | | | | | | | | | | When a commit or tag lacks author/committer/tagger timestamp, do not skip the next line in the commit/tag object. Also, do not bother to print timestamps with value 0 as it is close to certain to be bogus. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add cell-spacing in htmlLars Hjemli2007-11-161-1/+1
| | | | | | | | | | | | There are some browsers which don't support the border-spacing property Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Use tables for page layoutLars Hjemli2007-11-161-10/+12
| | | | | | | | | | | | | | It feels like the Right Thing, and it fixes some rendering problems in a much used webbrowser. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add support for "robots" meta-tagLars Hjemli2007-11-111-0/+2
| | | | | | | | | | | | | | | | | | With this change, cgit will start to generate the "robots" meta-tag, using a default value of "index, nofollow". The default value can be modified with a new cgitrc variable, "robots". Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Generate valid html for "downloads" menu headerLars Hjemli2007-11-111-1/+1
| | | | | | | | | | Noticed-by: http://validator.w3.org Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Fix html error detected by test-suiteLars Hjemli2007-11-111-12/+12
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add commit->msg_encoding, allocate msg dynamicly.Jonathan Bastien-Filiatrault2007-11-051-1/+1
|/
* Don't show the the branch selector button if javascript is enabledLars Hjemli2007-11-031-1/+1
| | | | | Suggested-by: Olivier Ramonat <olivier@ramonat.fr> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Do not require javascript-enabled clientsLars Hjemli2007-11-031-0/+4
| | | | | | | | A simple submit-button is all that's required to make the branch selector drop-down work on any client, so lets add one. Noticed-by: Olivier Ramonat <olivier@ramonat.fr> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Don't include current SHA1 in 'log' menu-itemLars Hjemli2007-11-031-2/+2
| | | | | | | This ensures that the menu-item always prints the log for the active branch. Predictability is good. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Don't include current path in menu linksLars Hjemli2007-11-031-3/+2
| | | | | | The menu-links are a lot more predictable this way. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Fix search form action/hidden fieldsLars Hjemli2007-11-031-18/+24
| | | | | | | | The search form didn't properly honor the current path, so this commit fixes cgit_fileurl() and add_hidden_formfields() to make the issue go away. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add search parameters to cgit_log_linkLars Hjemli2007-11-031-2/+11
| | | | | | This makes the [prev] and [next] links work correctly on search results. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Change the cgit layoutLars Hjemli2007-10-301-50/+122
| | | | | | | | | | | | | | | | | This modifies and hopefully improves the layout of all cgit pages: * Remove the header from all pages and replace it with a sidebar; most pages have sufficient width but many needs more height. * Add a dropdown-box to switch between branches, using a one-liner javascript to reload the current page in context of the selected branch. * Include refs found below refs/archives in the sidebar, appearing as a set of menuitems below a 'download' heading. * Include the brand new cgit logo Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Teach cgit_object_link() about tag objectsLars Hjemli2007-10-281-0/+3
| | | | | | | This makes random tag links more helpfull, e.g. when a branch head references a tag object, link to the tag page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Teach log search about --grep, --author and --committerLars Hjemli2007-10-281-2/+7
| | | | | | | This makes the log searching more explicit, using a dropdown box to specify the commit field to match against. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add links to the new refs page from summary pageLars Hjemli2007-10-271-0/+6
| | | | | | | If either branches or tags are filtered on the summary page, add a link to refs/heads and/or refs/tags right below the last branch/tag. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cgit_print_snapshot_links: use url to specify snapshot nameLars Hjemli2007-07-231-0/+6
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'master' of git://git.klever.net/patchwork/cgitLars Hjemli2007-07-221-4/+37
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://git.klever.net/patchwork/cgit: link raw blob from tree file view fix: changed view link to blob in summary. allow selective enabling of snapshots shorten snapshot names to repo basename introduce cgit_repobasename added snapshot filename to the link add plain uncompressed tar snapshort format introduced .tar.bz2 snapshots compress .tar.gz using gzip as a filter added a chk_non_negative check css: adjust vertical-align of commit info th cells add support for snapshot tarballs Conflicts: ui-summary.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * introduce cgit_repobasenameMichael Krelin2007-07-211-0/+24
| | | | | | | | | | | | | | that shortens reponame stripping any directories and .git suffixes, that is turning 'dir/repo.git/' or 'dir/repo/.git/' or alikes into mere 'repo'. Signed-off-by: Michael Krelin <hacker@klever.net>
| * added snapshot filename to the linkMichael Krelin2007-07-211-4/+13
| | | | | | | | | | | | | | - changed cgit_pageurl into cgit_fileurl with the filename parameter - rewritten cgit_pageurl as a wrapper around cgit_fileurl Signed-off-by: Michael Krelin <hacker@klever.net>
* | Add ui-tag.cLars Hjemli2007-07-221-0/+24
|/ | | | | | | This file implements the tag-command, i.e. printing of annotated tags. Signed-off-by: Lars Hjemli <hjemli@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/menu'Lars Hjemli2007-06-291-16/+55
|\ | | | | | | | | | | | | | | | | | | | | | | * lh/menu: Add ofs argument to cgit_log_link and use it in ui-log.c Add trim_end() and use it to remove trailing slashes from repo paths Do not include current path in the "tree" menu link Add setting to enable/disable extra links on index page Change S/L/T to summary/log/tree Change "files" to "tree" Include querystring as part of cached filename for repo summary page Add more menuitems on repo pages