summary refs log tree commit diff
path: root/cgit.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'br/misc'Lars Hjemli2011-02-191-0/+2
|\ | | | | | | | | | | | | * br/misc: Use transparent background for the cgit logo ssdiff: anchors for ssdiff implement repo.logo and repo.logo-link
| * implement repo.logo and repo.logo-linkBernhard Reutner-Fischer2011-02-191-0/+2
| | | | | | | | | | | | | | | | 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/scan-path'Lars Hjemli2011-02-191-0/+1
|\ \ | | | | | | | | | | | | | | | * jh/scan-path: scan_path(): Do not recurse into hidden directories by default scan_path(): Improve handling of inaccessible directories
| * | scan_path(): Do not recurse into hidden directories by defaultJohan Herland2011-02-191-0/+1
| |/ | | | | | | | | | | | | | | | | | | | | Paths that start with a period ('.') are considered hidden in the Unix world. scan_path() should arguably not recurse into these directories by default. This patch makes it so, and introduces the "scan-hidden-path" config variable for overriding the new default and revert to the old behaviour (scanning _all_ directories, including hidden .directories). Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <larsh@prediktor.no>
* / ui-log: Implement support for commit graphsJohan Herland2010-11-161-0/+3
|/ | | | | | | | | | | | | | | | Teach CGit to print an ASCII art commit graph to the left of the commit message, similar to 'git log --graph'. The graph adds extra lines (table rows) to the log when needed to add/remove/shuffle edges in the graph. When 'showmsg' is enabled, the graph is automatically padded to account for the extra lines added by the commit message/notes. This feature is controlled by a new config variable: "enable-commit-graph" (disabled by default), and individual repos can control it by setting "repo.enable-commit-graph". Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Fix filecount/linecount when path limit is in effectJohan Herland2010-11-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | | When using ui-log with path limits, the listing of commits enables parent rewriting in Git's internal log machinery. This did not work well together with cgit_diff_commit() which is used to generate the filecount and linecount numbers for each commit in the log view. cgit_diff_commit() would operate without any path limits, and would therefore process the full diff between the commits shown (which, because of parent rewriting, is not the same as processing the diff for the commit itself). Additionally, the bottom commit in the log view would (again, because of parent rewriting) have zero parents, causing us to process the entire diff between the empty tree and that commit. Since path limits were not in effect, this would (in large projects) reports thousands of files and millions of lines changed in that bottom commit. This patch fixes the issue by applying the same path limit to cgit_diff_commit() as is applied to the rest of the log view. The result is that the filecount/linecount now only reflects the diff as it pertains to the given path limit. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add `strict-export` optionFelix Hanley2010-11-081-0/+1
| | | | | | | | | | This option is used to specify a filename which needs to be present in the repositories found during `scan-path` processing. By setting this option to 'git-daemon-export-ok', only repositories explicitly marked for git daemon export will be included in the cgit configuration. Signed-off-by: Felix Hanley <felix@seconddrawer.com.au> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'ml/bugfix'Lars Hjemli2010-09-191-0/+1
|\
| * use __attribute__ to catch printf format mistakesMark Lodato2010-09-041-0/+1
| | | | | | | | | | | | | | Use "__attribute__((format (printf,N,M)))", as is done in git, do catch mistakes in printf-style format strings. Signed-off-by: Mark Lodato <lodatom@gmail.com>
* | Merge branch 'lh/section-from-path'Lars Hjemli2010-09-191-0/+1
|\ \ | | | | | | | | | | | | Conflicts: scan-tree.c
| * | Add support for 'section-from-path' optionLars Hjemli2010-08-221-0/+1
| |/ | | | | | | | | | | | | This option can be used to autogenerate section names during scan-path processing. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* / Add support for "readme" optionLars Hjemli2010-08-221-0/+1
|/ | | | | | The value of this option is used as the default value for repo.readme. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'jd/gitolite'Lars Hjemli2010-08-041-0/+3
|\
| * Add support for 'enable-gitweb-owner' optionJason A. Donenfeld2010-08-041-0/+1
| | | | | | | | | | | | | | | | | | When this option is enabled (which it is by default), cgit will lookup the 'gitweb.owner' setting in each git config file found when processing the 'scan-path' option. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add support for 'remove-suffix' optionJason A. Donenfeld2010-08-041-0/+1
| | | | | | | | | | | | | | | | When this option is enabled, the '.git' suffix of repository directories found while processing the 'scan-path' option will be removed. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add support for 'project-list' optionJason A. Donenfeld2010-08-041-0/+1
| | | | | | | | | | | | | | | | | | This option specifies the location of a projectlist file as used by gitweb - when 'scan-tree' is later specified, only the projects listed in the projectlist file will be added. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-commit: Display git notes when presentJeff Smith2010-08-041-0/+1
|/ | | | | Signed-off-by: Jeff Smith <whydoubt@yahoo.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'jh/ignorews'Lars Hjemli2010-07-181-2/+4
|\
| * Add URL parameter 'ignorews' for optionally ignoring whitespace in diffsJohan Herland2010-07-181-2/+4
| | | | | | | | | | | | | | | | The new ctx.qry.ignorews variable is passed via cgit_diff_files() and cgit_diff_tree() to Git's diff machinery. This is equivalent to passing --ignore-all-space to 'git diff'. Signed-off-by: Johan Herland <johan@herland.net>
* | Merge branch 'lh/macros'Lars Hjemli2010-07-181-0/+2
|\ \
| * | Add support for environment variable expansionLars Hjemli2010-03-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch teaches cgit to expand environment variables in certain cgitrc option values (cache_root, scan-path, include) plus when finding the location of cgitrc itself. One use case for this feature is virtual hosting - e.g. by setting $CGIT_CONFIG='/etc/cgitrc/$HTTP_HOST' in httpd.conf, all virtual hosts automatically gets their own cgitrc. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'jh/context-lines'Lars Hjemli2010-06-221-1/+2
|\ \ \ | | |/ | |/| | | | | | | | | | Conflicts: cgit.c cgit.h
| * | Add URL parameter 'context' for changing the number of context lines in diffsJohan Herland2010-06-191-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | The new ctx.qry.context variable is picked up by cgit_print_diff(), and passed via cgit_diff_files() to Git's diff machinery. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'jh/path-limit'Lars Hjemli2010-06-221-0/+1
|\| | | | | | | | | | | | | | | | | Conflicts: cgit.h ui-commit.c
| * | struct cgit_cmd: Differentiate between various usages of ctx.qry.pathJohan Herland2010-06-191-0/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For many commands/pages (e.g. 'tree', 'diff', 'plain', etc.), the ctx.qry.path argument is interpreted as a path within the "virtual" project directory structure. However, for some other commands (notably 'refs', and the clone-related commands) ctx.qry.path is used in a different context (as a more or less "real" path within the '.git' directory). This patch differentiates between these two usages of ctx.qry.path, by introducing a new variable - ctx.qry.vpath - which is equal to ctx.qry.path in the former case, and NULL in the latter. This will become useful in future patches when we want various pages and the links between them to preserve existing in-project paths. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'ag/atom-fixes'Lars Hjemli2010-06-191-0/+2
|\ \
| * | Add 'max-atom-items' config variableAaron Griffin2010-03-221-0/+1
| | | | | | | | | | | | | | | | | | | | | This allows one to specify the items in the RSS feeds Signed-off-by: Aaron Griffin <agriffin@datalogics.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Add all=1 query param for atom feedsAaron Griffin2010-03-221-0/+1
| |/ | | | | | | | | | | | | Displays all items from all branches in one feed Signed-off-by: Aaron Griffin <agriffin@datalogics.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* / Optionally generate verbose parent linksLars Hjemli2010-02-271-0/+2
|/ | | | | | | The new option 'enable-subject-links' must be used to enable the verbose parent-links in commit view. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/remote-branches'Lars Hjemli2009-12-081-0/+2
|\
| * Add support for remote branchesLars Hjemli2009-11-071-0/+2
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'ro/ssdiff'Lars Hjemli2009-12-081-0/+2
|\ \
| * | Add possibility to switch between unidiff and side-by-side-diff.Ragnar Ouchterlony2009-09-161-0/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* / "max-blob-size" config var to limit generated HTML sizeGeorg Lukas2009-11-281-0/+1
|/ | | | | | | | | Sometimes it is not feasible to generate the HTML pretty-print for large files, especially if a source-filter is involved or binary data is to be displayed. The "max-blob-size" config var allows to disable HTML output for blobs bigger than X KBytes. Plain downloads are not affected. Signed-off-by: Georg Lukas <georg@op-co.de>
* Merge branch 'lh/repo-scan'Lars Hjemli2009-09-131-2/+7
|\
| * Add config option 'enable-filter-overrides'Lars Hjemli2009-08-241-0/+1
| | | | | | | | | | | | | | This option must be enabled if repo-specific cgitrc files should be allowed to override any of the 'filter' options. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add support for repo-local cgitrc fileLars Hjemli2009-08-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When recursively scanning a directory tree looking for git repositories, cgit will now parse cgitrc files found within such repositories. The repo-specific config files can include any repo-specific options except 'repo.url' and 'repo.path'. Also, in such config files the 'repo.' prefix can not be used, i.e. the valid options then becomes: * name * clone-url * desc * ower * defbranch * snapshots * enable-log-filecount * enable-log-linecount * max-stats * module-link * section * about-filter * commit-filter * source-filter * readme Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Introduce 'section' as canonical spelling for 'repo.group'Lars Hjemli2009-08-241-2/+2
| | | | | | | | | | | | | | | | The 'repo.' prefix should be reserved for repo-specific options, but the option 'repo.group' must still be honored to stay backwards compatible. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * cgit.c: add support for caching autodetected repositoriesLars Hjemli2009-08-241-0/+1
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Rename "linenumbers" to "enable-tree-linenumbers", change default to "1"Lars Hjemli2009-08-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the name of the cgitrc option more descriptive and at the same time changes the default from "0" to "1" in an attempt to stay backwards compatible - prior to the introduction of "source-filter" and "linenumbers", cgit always generated linenumber links in the tree view, but now this feature can be turned off (one might want to do this if the source-filter performs line-wrapping etc). While at it, the documentation is updated to match the surrounding descriptions. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add 'linenumbers' config optionFlorian Pritz2009-08-211-0/+1
|/ | | | | Signed-off-by: Florian Pritz <bluewind@xssn.at> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add and use a common readfile() functionLars Hjemli2009-08-181-0/+1
| | | | | | | | | | | | This function is used to read the full content of a textfile into a newly allocated buffer (with zerotermination). It replaces the earlier readfile() in scan-tree.c (which was rather error-prone[1]), and is reused by read_agefile() in ui-repolist.c. 1: No checks for EINTR and EAGAIN, fixed-size buffer Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-shared: add support for NO_HTTP=1/--nohttpLars Hjemli2009-08-101-0/+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-0/+13
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/about'Lars Hjemli2009-08-091-0/+2
|\ | | | | | | | | Conflicts: cgit.h
| * Add 'about-filter' and 'repo.about-filter' optionsLars Hjemli2009-08-091-0/+2
| | | | | | | | | | | | | | | | These options can be used to execute a filter command on each about-page, both top-level and for each repository (repo.about-filter can be used to override the current about-filter). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/plugins'Lars Hjemli2009-08-091-0/+16
|\| | | | | | | | | | | Conflicts: cgit.c cgit.h
| * Add support for repo.commit-filter and repo.source-filterLars Hjemli2009-08-091-9/+11
| | | | | | | | | | | | | | These options can be used to override the default commit- and source- filter settings per repository. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-commit: add support for 'commit-filter' optionLars Hjemli2009-07-311-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This new option specifies a filter which is executed on the commit message, i.e. the commit message is written to the filters STDIN and the filters STDOUT is included verbatim as the commit message. This can be used to implement commit linking by creating a simple shell script in e.g. /usr/bin/cgit-commit-filter.sh like this: #/bin/sh sed -re 's|\b([0-9a-fA-F]{6,40})\b|<a href="./?id=\1">\1</a>|g' Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-tree: add support for source-filter optionLars Hjemli2009-07-311-0/+1
| | | | | | | | | | | | | | | | | | | | This new option is used to specify an external command which will be executed when displaying blob content in the tree view. Blob content will be written to STDIN of the filter and STDOUT from the filter will be included verbatim in the html output from cgit. The file name of the blob will be passed as the only argument to the filter command. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add generic filter/plugin infrastructureLars Hjemli2009-07-311-0/+12
| | | | | | | | | | | | | | The functions cgit_open_filter() and cgit_close_filter() can be used to execute filters on the output stream from cgit. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/mimetypes'Lars Hjemli2009-08-091-0/+2
|\ \
| * | Add support for mime type registration and lookupLars Hjemli2009-07-251-0/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes it possible to register mappings from filename extension to mime type in cgitrc and use this mapping when returning blob content in `plain` view. The reason for adding this mapping to cgitrc (as opposed to parsing something like /etc/mime.types) is to allow quick lookup of a limited number of filename extensions (/etc/mime-types on my machine currently contains over 700 entries). NB: A nice addition to this patch would be to parse /etc/mime.types when `plain` view is requested for a file with an extension for which there is no mapping registered in cgitrc. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* / Introduce noplainemail option to hide email adresses from spambotsMartin Szulecki2009-08-081-0/+1
|/ | | | Signed-off-by: Martin Szulecki <opensuse@sukimashita.com>
* Merge branch 'lh/embedded'Lars Hjemli2009-07-251-0/+2
|\ | | | | | | | | | | Conflicts: cgitrc.5.txt ui-shared.c
| * cgit.h: keep config flags sortedLars Hjemli2009-07-251-2/+2
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add support for 'noheader' optionLars Hjemli2009-07-251-0/+1
| | | | | | | | | | | | | | | | 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/+1
| | | | | | | | | | | | | | | | | | | | 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-0/+1
|\ \
| * | Add head-include configuration option.Mark Lodato2009-06-071-0/+1
| |/ | | | | | | | | | | 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/+1
|\ \ | | | | | | | | | | | | Conflicts: ui-shared.c
| * | Add support for ETag in 'plain' viewLars Hjemli2009-02-191-0/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | 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>
* / Return http statuscode 404 on unknown branchLars Hjemli2009-06-071-0/+2
|/ | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/binary'Lars Hjemli2009-02-011-1/+3
|\
| * Handle binary files in diffsLars Hjemli2009-01-311-1/+3
| | | | | | | | | | | | | | 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>
* | Add support for a custom headerLars Hjemli2009-01-291-0/+1
|/ | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/stats'Lars Hjemli2009-01-271-0/+3
|\ | | | | | | | | | | | | | | | | | | Conflicts: cgit.c cgit.css cgit.h ui-tree.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-stats: replace 'enable-stats' setting with 'max-stats'Lars Hjemli2008-12-071-2/+2
| | | | | | | | | | | | | | | | | | 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 'full-log'Lars Hjemli2008-12-061-0/+1
|\ \ | | | | | | | | | | | | | | | Conflicts: cgit.c cgit.h
| * | ui-log: add support for showing the full commit messageLars Hjemli2008-11-291-0/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-061-0/+2
|\ \
| * | ui-repolist: implement lazy caching of repo->mtimeLars Hjemli2008-11-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | Add support for sorting by Age in the repolistBenjamin Close2008-11-291-0/+1
| |/ | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* / Extra cygwin-specific changesRamsay Jones2008-12-031-6/+0
|/ | | | | Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add cgit_query.nohead flagLars Hjemli2008-10-111-0/+1
| | | | | | | | 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>
* Teach cgit how to use PATH_INFOLars Hjemli2008-09-151-0/+1
| | | | | | | | | | | 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>
* parsing.c: be prepared for unexpected content in commit/tag objectsLars Hjemli2008-09-151-1/+1
| | | | | | | | 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 'lh/plain'Lars Hjemli2008-09-011-0/+1
|\ | | | | | | | | | | | | * lh/plain: Supply status description to html_status() ui-tree: link to plain view instead of blob view Implement plain view
| * Implement plain viewLars Hjemli2008-08-061-0/+1
| | | | | | | | | | | | | | 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/+1
|/ | | | | | | 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-1/+2
| | | | | | | | | 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>
* Add a favicon option to cgitrcLars Hjemli2008-07-191-0/+1
| | | | | | 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-0/+1
| | | | | | | | | 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>
* allow specification of directly linked blobs mimetypesMichael Krelin2008-06-241-0/+1
| | | | Signed-off-by: Michael Krelin <hacker@klever.net>
* Add a pager on the repolistLars Hjemli2008-05-031-0/+1
| | | | | | | | 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>
* Merge branch 'lh/cache'Lars Hjemli2008-05-031-0/+1
|\ | | | | | | | | | | * lh/cache: Add page 'ls_cache' Redesign the caching layer
| * Redesign the caching layerLars Hjemli2008-04-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Prepare for 'about site' page / add 'root-readme' option to cgitrcLars Hjemli2008-04-291-0/+1
| | | | | | | | | | | | | | 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>
* | Re-enable 'index-info' and add support for 'root-desc' in cgitrcLars Hjemli2008-04-291-0/+1
|/ | | | | | | | | | | | | 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>
* Make repository search case insensitiveLars Hjemli2008-04-131-0/+7
| | | | | | | 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>
* Move cgit_parse_query() from parsing.c to html.c as http_parse_querystring()Lars Hjemli2008-04-081-2/+0
| | | | | | 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-281-1/+0
| | | | | | 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-271-14/+0
| | | | | | | | 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-251-1/+0
| | | | | | This variable was obsoleted by cmd.c. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move non-generic functions from shared.c to cgit.cLars Hjemli2008-03-241-3/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add ui-shared.hLars Hjemli2008-03-241-32/+0
| | | | | | | 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-241-17/+0
| | | | | | Yet another step towards removing cgit.h. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Refactor snapshot supportLars Hjemli2008-03-241-0/+8
| | | | | | | | | 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-241-14/+0
| | | | | | | 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-241-6/+6
| | | | | | 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-241-5/+13
| | | | | | | | 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-14/+1
| | | | | | | | 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>
* Move cgit_repo into cgit_contextLars Hjemli2008-02-161-6/+6
| | | | | | | | 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-35/+37
| | | | | | | | 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-14/+21
| | | | | | | | | 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/+2
| | | | | | | | | | 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/+2
| | | | | | | | | | | | | 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>
* Add support for "robots" meta-tagLars Hjemli2007-11-111-0/+1
| | | | | | | | | 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>
* Use utf8::reencode_string from gitLars Hjemli2007-11-051-0/+1
| | | | | | | This replaces the iconv-support in cgit with similar functions already existing in git. Signed-off-by: Lars Hjemli <hjemli@gmai.com>
* Add commit->msg_encoding, allocate msg dynamicly.Jonathan Bastien-Filiatrault2007-11-051-0/+6
|
* Add search parameters to cgit_log_linkLars Hjemli2007-11-031-1/+2
| | | | | | 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-0/+2
| | | | | | | | | | | | | | | | | 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>
* Add config param 'index-info'Lars Hjemli2007-10-301-0/+1
| | | | | | | This parameter will be used to include a html file in the upcoming sidebar on the index page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Teach log search about --grep, --author and --committerLars Hjemli2007-10-281-1/+3
| | | | | | | 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 html_option() functionLars Hjemli2007-10-281-0/+1
| | | | | | This is a generic function used to output html "option" tags. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add links to the new refs page from summary pageLars Hjemli2007-10-271-0/+2
| | | | | | | 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>
* Add support for refs viewLars Hjemli2007-10-271-0/+2
| | | | | | | This enables the new urls $repo/refs, $repo/refs/heads and $repo/refs/tags, which can be used to print _all_ branches and/or tags. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Make cgit_print_branches()/cgit_print_tags() externalLars Hjemli2007-10-271-0/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for config param summary-branchesLars Hjemli2007-10-271-0/+1
| | | | | | | | | This parameter can be used to specify max number of branches to show on the summary page (if not all branches will be displayed, the "most idle" branches are the ones to be pruned). The default value for this parameter is 0, which disables the pruning. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for config param summary-tagsLars Hjemli2007-10-271-0/+1
| | | | | | | This parameter can be used to specify max number of tags to show on the summary page. If not specified, all tags are printed. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add functions and types for ref listsLars Hjemli2007-10-271-0/+19
| | | | | | | This adds two structs, refinfo and reflist, and functions for building a list of refs. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add prefix parameter to cgit_print_diff()Lars Hjemli2007-10-011-1/+1
| | | | | | This allows a diff to be restricted to the path prefix specified in the url. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add prefix parameter to cgit_diff_tree()Lars Hjemli2007-10-011-1/+1
| | | | | | This paramter can be used to restrict a diff to the specified path prefix. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cgit_print_snapshot_links: use url to specify snapshot nameLars Hjemli2007-07-231-4/+7
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'master' of git://git.klever.net/patchwork/cgitLars Hjemli2007-07-221-2/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * '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>
| * allow selective enabling of snapshotsMichael Krelin2007-07-211-2/+4
| | | | | | | | | | | | | | | | snapshot configuration parameter now can be a space/slash/comma/colon/semicolon/pipe-separated list of snaphot suffixes as listed in ui-snapshot.c Signed-off-by: Michael Krelin <hacker@klever.net>
| * introduce cgit_repobasenameMichael Krelin2007-07-211-0/+2
| | | | | | | | | | | | | | 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-0/+2
| | | | | | | | | | | | | | - 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>
| * added a chk_non_negative checkMichael Krelin2007-07-201-0/+1
| |
| * add support for snapshot tarballsMichael Krelin2007-07-181-2/+2
| | | | | | | | | | | | | | - reworked cgit_print_snapshot to use a list of supported archivers and pick one for the suffix supplied - moved printing of snaphot links into ui-snapshot and make it iterate through the said list
* | Add ui-tag.cLars Hjemli2007-07-221-1/+4
|/ | | | | | | 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-1/+3
|\ | | | | | | | | | | | | | | | | | | | | | | * 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
| * Add ofs argument to cgit_log_link and use it in ui-log.cLars Hjemli2007-06-291-1/+1
| | | | | | | | | | | | | | This fixes a bug in the prev/next links on the log page: when on the default branch the links to prev/next page would contain h=(null). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add trim_end() and use it to remove trailing slashes from repo pathsLars Hjemli2007-06-261-0/+1
| | | | | | | | | | | | | | | | The new function removes all trailing instances of an arbitrary character from a copy of the supplied char array. This is then used to remove any trailing slashes from cgit_query_path. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add setting to enable/disable extra links on index pageLars Hjemli2007-06-191-0/+1
| | | | | | | | | | | | | | | | | | | | The summary/log/tree links displayed for each repository on the index page lost some of their purpose when the header menu was added, so this commit introduces the parameter 'enable-index-links' which must be set to 1 to enable these links. Suggested-by: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add version info from git-describeLars Hjemli2007-06-181-1/+1
|/ | | | | | | | A new script, gen-version.sh, is now invoked from 'make version' to generate the file VERSION. This file contains a version identifier generated by git-describe and is included in the Makefile. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add cgit_diff_link()Lars Hjemli2007-06-171-3/+4
| | | | | | | | | | | | | | | | | | This adds a new function used to generate links to the diff page and uses it everywhere such links appear (expect for single files in the diffstat displayed on the commit page: this is now a link to the tree page). The updated diff-page now expects zero, one or two revision specifiers, in parameters head, id and id2. Id defaults to head unless otherwise specified, while head (as usual) defaults to repo.defbranch. If id2 isn't specified, it defaults to the first parent of id1. The most important change is of course that now all repo pages (summary, log, tree, commit and diff) has support for passing on the current branch and revision, i.e. the road is now open for a 'static' menu with links to all of these pages. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add cgit_commit_link() + support for id=sha1 to commit viewLars Hjemli2007-06-171-0/+2
| | | | | | | | This adds a function to generate links to the commit page and extends said page to use id from querystring as primary revision specified (fallback to h). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add git_log_link() and fix bug in generic repolink functionLars Hjemli2007-06-171-0/+2
| | | | | | | | | | | The generic repolink function compared head with cgit_query_head, which almost always would be the same pointer. The test now compares with repo.defbranch, which is the wanted behavour. Bug discovered while adding cgit_log_link(), so this commit also contain that change. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add and use cgit_tree_link()Lars Hjemli2007-06-171-0/+3
| | | | | | | This creates a new function used to generate links to 'tree' page and uses the function everywhere a link to the 'tree' page is generated. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree: unify with ui-view, use path to select tree/blobLars Hjemli2007-06-161-5/+3
| | | | | | This teaches ui-tree to show both trees and blobs, thereby making ui-view superfluous. At the same time, ui-tree is extended to honour the specified path instead of requiering a tree/blob sha1.
* Implemented configurable HEAD shortlog on summary page.Ondrej Jirman2007-05-311-0/+1
| | | | | | | | | | This mirrors similiar functionality in gitweb. After clicking on project on projectlist you will immediatelly see quick summary of last N commits on HEAD. [lh: changed from HEAD to cgit_query_head] Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add option to disable pager to cgit_print_log().Ondrej Jirman2007-05-311-1/+1
| | | | | | | This is needed for upcomming shortlog on summary page patch. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add repo.readme parameterLars Hjemli2007-05-231-0/+1
| | | | | | | | | | This parameter can be used to specify a repo-specific includefile, which will then be printed on the summary page for the repo. If the parametervalue is a not an absolute path, it is taken to be relative to repo.path. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Show time since last change on index pageLars Hjemli2007-05-221-0/+1
| | | | | | | | | | | | | | | | | | | | When creating the index page, an optional file can be scanned per repository to obtain a timestamp for last modification within the repo. If such a file cannot be found, st_mtime for repo.defbranch is used instead. This information is then printed in a new column, "Idle", using the new function cgit_print_age(). The new parameter "repo.agefile" can be used to specify (globally) a relative path to scan (default value is "info/web/last-modified"). The content of the "last-modified" file can be generated by the post-receive hook with a command like this: git-for-each-ref --format="%(committerdate)" --sort=-committerdate \ --count=1 > $GIT_DIR/info/web/last-modified Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add cgit_print_age() functionLars Hjemli2007-05-221-1/+21
| | | | | | | This function can be used to print relative dates, just as in gitweb. Next step will be to actually use the new function. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'repogroups'Lars Hjemli2007-05-201-0/+2
|\ | | | | | | | | | | | | * repogroups: Adjust apperance of repogroup headers Don't highlight repogroup headings Teach cgit how to group repositories by category
| * Teach cgit how to group repositories by categoryLars Hjemli2007-05-181-0/+2
| | | | | | | | | | | | | | | | | | The new parameter 'repo.group' is used to set the repository group for the following repositores. Whenever this parameter changes value, a subheading is generated in the index page (printing the current value of repo.group). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'virtual-url'Lars Hjemli2007-05-201-0/+15
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | * virtual-url: Don't be fooled by trailing '/' in url-parameter cache_safe_filename() needs more buffers Enable url=value querystring parameter Add lookup-function for valid repo commands Move cgit_get_repoinfo into shared.c
| * | Enable url=value querystring parameterLars Hjemli2007-05-181-7/+9
| | | | | | | | | | | | | | | | | | | | | This makes is possible to use repo-urls like '/pub/scm/git/git.git' and even add path specifications, like '/pub/scm/git/git.git/log/documentation'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Add lookup-function for valid repo commandsLars Hjemli2007-05-181-0/+12
| | | | | | | | | | | | | | | | | | This will be usefull when parsing url arguments. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Move cgit_get_repoinfo into shared.cLars Hjemli2007-05-181-0/+1
| |/ | | | | | | | | | | This function will be usefull when parsing url arguments. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Teach cgit howto include an external file on index page.Lars Hjemli2007-05-191-0/+1
| | | | | | | | | | | | | | The new parameter index-header can be used to name an external file which will be included verbatim at the top of the index page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add html_include()Lars Hjemli2007-05-181-0/+1
|/ | | | | | | This is a function used to include external htmlfiles in cgit- generated pages. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Remove unused extern declarations from cgit.hLars Hjemli2007-05-181-4/+0
| | | | | | Some unused declarations from the early days of cgit are removed. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add knobs to enable/disable files/lines changed in log viewLars Hjemli2007-05-181-0/+4
| | | | | | | | | | | These columns can cause lots of IO on the server, so add settings to explicitly enable them. Also, add per repo settings to optionally disable the columns if sitewide enabled. While at it, do not allow repo.snapshot to enable snapshots if the global setting is disabled. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Restrict length of repo description on repolist pageLars Hjemli2007-05-161-0/+1
| | | | | | | | | | If any repo has a very long description, all repos suffer since the repo-links in the right-most column gets pushed out of sight. Fix it by introducing max-repodesc-length parameter in cgitrc, and default to 60 chars. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for commitdiff via h parameterLars Hjemli2007-05-161-5/+6
| | | | | | | | | The commitdiff will be generated against the first parent, and the diff page also gets the benefit of repo.defbranch. Cleaned up some bad whitespace in cgit.h while at it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Enable default value for head parameterLars Hjemli2007-05-161-0/+1
| | | | | | | | | | | | | Pages which expect head to be specified in the querystring can now be given a default value, configurable per repository (via repo.defbranch, which defaults to "master"). Currently, only the log page actually works without parameters, but the defbranch is bound to be exploited. This also removes some dead code from shared.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Don't hardcode urls when SCRIPT_NAME is availableLars Hjemli2007-05-151-0/+1
| | | | | | | Also, let the makefile define the name of the installed cgi and use that definition as a default value for cgit_script_name variable. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add log filtering by path and link to it from tree viewLars Hjemli2007-05-141-2/+2
| | | | | | | This enables path-filtering in log-view, and adds a link per entry in tree-view to show the log for each file/directory. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add commitdiff between commit and each of it's parentLars Hjemli2007-05-131-1/+1
| | | | | | | | | | A link is added next to each parent of a commit, leading to the new diff-functionality in ui-diff.c. Also added support for a path-parameter to filelevel diffs accessed via the diffstat. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add max-commit-count parameter to cgitrcLars Hjemli2007-05-131-0/+1
| | | | | | | | | This enabled customizing number of commits shown per page in log view. It also changes the default from 100 to 50, mainly due to the more cpu intensive log pages (number of files/lines changed) but also since 100 log messages requires excessive scrolling. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add standard interface for file diff functionsLars Hjemli2007-05-131-0/+7
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add shared diff-handling functionsLars Hjemli2007-05-131-0/+5
| | | | | | This adds a standard interface for tree diffing. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add submodule links in tree listingLars Hjemli2007-05-111-0/+2
| | | | | | | | | When a submodule occurs in a tree, generate a link to show the module/commit. The link is specified as a sprintf string in /etc/cgitrc, using parameters 'module-link' and 'repo.module-link'. This should probably be extended with repo.module-link.$path. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for downloading single blobsLars Hjemli2007-05-091-0/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-view: show pathname if specified in querystringLars Hjemli2007-05-081-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Update to libgit 1.5.2-rc2Lars Hjemli2007-05-081-4/+16
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Make snapshot feature configurableLars Hjemli2007-02-081-0/+2
| | | | | | | | | | Snapshots can now be enabled/disabled by default for all repositories in cgitrc with param "snapshots". Additionally, any repo can override the default setting with param "repo.snapshots". By default, no snapshotting is enabled. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for snapshotsLars Hjemli2007-02-081-0/+10
| | | | | | | | Make a link from the commit viewer to a snapshot of the corresponding tree. Currently only zip-format is supported. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Read repo-info from /etc/cgitrcLars Hjemli2007-02-041-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes cgit read all repo-info from the configfile, instead of scanning for possible git-dirs below a common root path. This is primarily done to get better security (separate physical path from logical repo-name). In /etc/cgitrc each repo is registered with the following keys: repo.url repo.name repo.path repo.desc repo.owner Note: *Required keys are repo.url and repo.path, all others are optional *Each occurrence of repo.url starts a new repository registration *Default value for repo.name is taken from repo.url *The value of repo.url cannot contain characters with special meaning for urls (i.e. one of /?%&), while repo.name can contain anything. Example: repo.url=cgit-pub repo.name=cgit/public repo.path=/pub/git/cgit repo.desc=My public cgit repo repo.owner=Lars Hjemli repo.url=cgit-priv repo.name=cgit/private repo.path=/home/larsh/src/cgit/.git repo.desc=My private cgit repo repo.owner=Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add parameter to adjust max message length in log listingsLars Hjemli2007-01-281-0/+2
| | | | | | | | | The parameter "max-message-length" can be specified in cgitrc, default value is 60. This affects the log message shown in repo summary and shortlog. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add function cgit_parse_tag()Lars Hjemli2007-01-171-0/+8
| | | | | | Teach cgit how to extract author info from a tag. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* WIP: add paths/backlinks to tree/blobviewLars Hjemli2007-01-121-1/+2
|
* Remove troublesome chars from cachefile namesLars Hjemli2007-01-121-0/+1
| | | | | | | Add a funtion cache_safe_filename() which replaces possibly bad filename characters with '_'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move cache_prepare() to cgitLars Hjemli2007-01-121-1/+0
| | | | | | This moves some cgit-specific stuff away from cache.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Handle %xx encoding in querystringLars Hjemli2007-01-041-0/+2
| | | | | | | Convert valid %xx expressions in querystring to ascii, ignore invalid expressions (i.e. eat the three characters %xx). Signed-off-by: Lars Hjemli <larsh@hal-2004.(none)>
* Add basic log filteringLars Hjemli2006-12-281-1/+1
| | | | | | This enables case-insensitive grep on logentris using the new search box Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add generic support for search box in page headerLars Hjemli2006-12-281-1/+3
| | | | | | | This adds the ability to show a search box in any pageheader with correct href and hidden form data, but does not enable the box on any pages. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Only show first 80 characters of commit subject in log and summaryLars Hjemli2006-12-221-0/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add basic diff viewLars Hjemli2006-12-201-0/+2
| | | | | | Finally, xdiff is used to show per-file diffs via commit view. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Show list of modified files in ui-commit.cLars Hjemli2006-12-171-0/+1
| | | | | | | | Compare current commit with 1.parent, and for each affected file display current filemode, old filemode if changed, current filename and source filename if it was a copy/rename. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add cgit_free_commitinfo() and use where neededLars Hjemli2006-12-161-0/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Teach commit parser about author/committer email + timestampLars Hjemli2006-12-161-0/+4
| | | | | | | | | | | We want all four of these when showing a commit, so save them in the commitinfo struct. Btw: There's probably no good reason to save committer timestamp since it's already available in commit->date. But it doesn't hurt us either, and it makes the parser look more complete, so we just do it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add argument parsing + switch for uncached operationLars Hjemli2006-12-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This adds support for the following options to cgit: --root=<path> --cache=<path> --nocache --query=<querystring> --repo=<reponame> --page=<pagename> --head=<branchname> --sha1=<sha1> --ofs=<number> On startup, /etc/cgitrc is parsed, followed by argument parsing and finally querystring parsing. If --nocache is specified (or set in /etc/gitrc), caching is disabled and cgit instead generates pages to stdout. The combined effect of these two changes makes testing/debugging a lot less painfull. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move cgit_print_date into ui-shared, reuse in ui-summaryLars Hjemli2006-12-161-0/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add ui-commit.c + misc ui cleanupsLars Hjemli2006-12-161-2/+3
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add a common commit parserLars Hjemli2006-12-151-0/+9
| | | | | | Make a better commit parser, replacing the ugly one in ui-log.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add simple pager to log pageLars Hjemli2006-12-141-0/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add display of tree content w/ui-tree.cLars Hjemli2006-12-131-0/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Don't truncate valid cachefilesLars Hjemli2006-12-111-0/+1
| | | | | | | | | | | | | | An embarrassing thinko in cgit_check_cache() would truncate valid cachefiles in the following situation: 1) process A notices a missing/expired cachefile 2) process B gets scheduled, locks, fills and unlocks the cachefile 3) process A gets scheduled, locks the cachefile, notices that the cachefile now exist/is not expired anymore, and continues to overwrite it with an empty lockfile. Thanks to Linus for noticing (again). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move global variables + callback functions into shared.cLars Hjemli2006-12-111-3/+4
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move functions for generic object output into ui-view.cLars Hjemli2006-12-111-0/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move log-functions into ui-log.cLars Hjemli2006-12-111-3/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move repo summary functions into ui-summary.cLars Hjemli2006-12-111-0/+3
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move functions for repolist output into ui-repolist.cLars Hjemli2006-12-111-0/+8
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move common output-functions into ui-shared.cLars Hjemli2006-12-111-1/+8
| | | | | | While at it, replace the cgit_[lib_]error constants with a proper function Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Rename config.c to parsing.c + move cgit_parse_query from cgit.c to parsing.cLars Hjemli2006-12-111-0/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Avoid infinite loops in caching layerLars Hjemli2006-12-111-0/+1
| | | | | | | | | | | Add a global variable, cgit_max_lock_attemps, to avoid the possibility of infinite loops when failing to acquire a lockfile. This could happen on broken setups or under crazy server load. Incidentally, this also fixes a lurking bug in cache_lock() where an uninitialized returnvalue was used. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Fix cache algorithm loopholeLars Hjemli2006-12-111-1/+2
| | | | | | | | This closes the door for unneccessary calls to cgit_fill_cache(). Noticed by Linus. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add caching infrastructureLars Hjemli2006-12-101-2/+45
| | | | | | | | | | | | | | | | | | | | | | This enables internal caching of page output. Page requests are split into four groups: 1) repo listing (front page) 2) repo summary 3) repo pages w/symbolic references in query string 4) repo pages w/constant sha1's in query string Each group has a TTL specified in minutes. When a page is requested, a cached filename is stat(2)'ed and st_mtime is compared to time(2). If TTL has expired (or the file didn't exist), the cached file is regenerated. When generating a cached file, locking is used to avoid parallell processing of the request. If multiple processes tries to aquire the same lock, the ones who fail to get the lock serves the (expired) cached file. If the cached file don't exist, the process instead calls sched_yield(2) before restarting the request processing. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Import cgit prototype from git treeLars Hjemli2006-12-091-0/+21
This enables basic cgit functionality, using libgit.a and xdiff/lib.a from git + a custom "git.h" + openssl for sha1 routines. Signed-off-by: Lars Hjemli <hjemli@gmail.com>