Commit Graph

682 Commits

Author SHA1 Message Date
Lars Hjemli
74061ed5f0 Add support for repo-local cgitrc file
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>
2009-08-24 10:22:58 +02:00
Lars Hjemli
a1b3938f71 cgit.c: refactor repo_config() from config_cb()
The new function repo_config() is used to handle all 'simple' repo
options, for the following reasons:
* code readability
* parser performance
* upcoming support for repo-local cgitrc files during scanning

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:58 +02:00
Lars Hjemli
63816ec597 ui-repolist.c: sort by section name, repo name as default
When no sorting is requested by the client, cgit will now sort by
section name followed by repo name. This allows repos to be registered/
discovered independently of their display order.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:58 +02:00
Lars Hjemli
3939854578 Add config option 'repo.section'
This option can be used to specify the section name for the current
repository.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:58 +02:00
Lars Hjemli
e7af002d5c Introduce 'section' as canonical spelling for 'repo.group'
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>
2009-08-24 10:22:58 +02:00
Lars Hjemli
50d5af3adc Add support for --scan-path command line option
This is an alias for --scan-tree (which might be deprecated in the
future).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:58 +02:00
Lars Hjemli
0046637692 Rename 'repo.scan' to 'scan-path'
The 'repo.' prefix will soon be reserved for repo-specific config
options.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:58 +02:00
Lars Hjemli
b4dc93dc76 cgitrc.5.txt: document repo.scan and cache-scanrc-ttl
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:58 +02:00
Lars Hjemli
d746827ec4 cgit.c: add support for caching autodetected repositories
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:57 +02:00
Lars Hjemli
302a3efa26 cgit.c: make print_repolist() and print_repo() reusable for caching
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:57 +02:00
Lars Hjemli
523a2161b9 cache.h: export hash_str()
This function will be reused to cache the result of tree scanning.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:57 +02:00
Lars Hjemli
6f3bf1ae1e cgit.c: add support for cgitrc option 'repo.scan'
When specified, the specified path will be scanned for repositories.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:57 +02:00
Lars Hjemli
fb9bf55cde scan-tree: detect non-bare repository and stop scanning early
We don't want to descend into every subdirectory of a git repository
with a workdir.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 10:22:57 +02:00
Lars Hjemli
b44c40ea72 cgitrc.5.txt: fix description and markup for 'snapshots' option
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-24 08:00:37 +02:00
Lars Hjemli
6638f40868 cgit.css: make the blob display in tree view a bit prettier
Adding some padding to the linenumbers while right-aligning them and
removing the background color makes the page more readable.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-21 14:37:50 +02:00
Lars Hjemli
b0f946bcc7 Rename "linenumbers" to "enable-tree-linenumbers", change default to "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>
2009-08-21 14:26:52 +02:00
Florian Pritz
d67cc7f9d5 Add 'linenumbers' config option
Signed-off-by: Florian Pritz <bluewind@xssn.at>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-21 14:17:49 +02:00
Florian Pritz
03389d6e67 ui-tree.c: show line numbers when highlighting
When source-filter is enabled, cgit currently will not display
linenumbers in the tree view. This patch restores the linenumber
function.

Signed-off-by: Florian Pritz <bluewind@xssn.at>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-21 14:14:21 +02:00
Stefan Naewe
6445a3ad09 scan-tree: split the pw_gecos field at the ',' to get the real name
Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-20 10:11:07 +02:00
Lars Hjemli
0374a76ce1 cgit.c: fix caching keyed on PATH_INFO with no QUERY_STRING
When generating a hash for caching, ctx.qry.raw is used as key. And
since cgit_parse_url() zero-terminates it's argument (after the repo
path), ctx.qry.raw must xstrdup(ctx.qry.url).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-20 10:07:51 +02:00
Lars Hjemli
e16f178334 Add and use a common readfile() function
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>
2009-08-18 17:22:14 +02:00
Lars Hjemli
523c133e2e Merge branch 'stable' 2009-08-18 17:21:52 +02:00
Simon Arlott
011f2e9bdd truncate buffer before reading empty files
If readfile() reads an empty file, fgets() won't truncate the buffer
and it'll still contain the contents of the previously read file.

[lh: fixed similar issue in ui-repolist.c]

Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-18 14:27:41 +02:00
Lars Hjemli
73b54f7d7e Merge branch 'stable' 2009-08-18 13:14:11 +02:00
Matthew Metnetsky
6421dc38db ui-shared: don't print header <img/> if there isn't a logo defined
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-18 13:13:51 +02:00
Lars Hjemli
cb92d05b6b Merge branch 'stable' 2009-08-17 10:17:23 +02:00
Lars Hjemli
435a1da8d1 cgit.c: do not segfault on unexpected query-string format
The querystring_cb() function will be invoked with a NULL value when
the querystring contains a name not followed by a '='. Such a value
used to cause a segfault, which this patch fixes.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-17 09:26:17 +02:00
Lars Hjemli
8a631b1173 ui-tag.c: do not segfault when id is missing from query-string
The purpose of the tag page is to print info about a specific tag,
but if no tag was specified on the query-string cgit used to segfault.

With this patch, cgit will fallback to the value of the 'h' parameter
instead (which is never NULL due to prepare_repo_cmd() in cgit.c).

It will now also verify that the specified tagname is in fact a valid
ref in the 'refs/tags/' namespace, i.e. specifying 'id=master' will
trigger a 'Bad tag reference' error.

Noticed-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-17 09:24:36 +02:00
Lars Hjemli
0730ee6ea4 ui-log.c: handle lightweight tags when printing commit decorations
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-16 20:53:20 +02:00
Stefan Bühler
1bbe04c2c0 ui-refs.c: improve handling of lightweight tags
When a lightweight tag is referencing a commit object, cgit now uses
the commit date when comparing tag age. Also, the commitdate and author
info is printed in the refs view, making lightweight tags appear similar
to annotated tags.

Signed-off-by: Stefan Bühler <lighttpd@stbuehler.de>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-16 20:53:20 +02:00
Lars Hjemli
ff0ff807a3 Use GIT-1.6.3.4
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-16 20:53:20 +02:00
Lars Hjemli
2c742d1a92 Merge branch 'lh/embedded' 2009-08-11 10:12:53 +02:00
Lars Hjemli
80550bbe02 ui-shared: add support for header/footer options when embedded=1
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>
2009-08-11 10:12:35 +02:00
Lars Hjemli
fcc6056230 cgitrc.5.txt: describe where/how cgit will locate cgitrc
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-10 18:59:33 +02:00
Lars Hjemli
92f9b53c42 cgit.c: make '/cgit.png' the default value for 'logo' option
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-10 18:59:31 +02:00
Lars Hjemli
4c228e3c3b cgit.css: align commit message with subject in expanded log listing
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-10 18:03:31 +02:00
Lars Hjemli
8b2252b0b6 ui-shared: add support for NO_HTTP=1/--nohttp
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>
2009-08-10 09:20:17 +02:00
Lars Hjemli
60a26272e0 Cleanup handling of environment variables
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-10 08:21:09 +02:00
Lars Hjemli
e6cd7121ed Add some example filter scripts
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09 14:56:23 +02:00
Lars Hjemli
db8b8cb946 Merge branch 'lh/about'
Conflicts:
	cgit.h
2009-08-09 13:46:34 +02:00
Lars Hjemli
db6303b588 Merge branch 'lh/plugins'
Conflicts:
	cgit.c
	cgit.h
2009-08-09 13:46:01 +02:00
Lars Hjemli
17e3ff4264 Merge branch 'lh/mimetypes' 2009-08-09 13:45:36 +02:00
Lars Hjemli
537c05f138 Add 'about-filter' and 'repo.about-filter' options
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>
2009-08-09 13:41:54 +02:00
Lars Hjemli
e1782fff8a ui-summary: enable arbitrary paths below repo.readme
This change makes it possible to include any number of pages below
the 'about' tab for a repository. The path is assumed to be located
in the same directory as the 'repo.readme' file.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09 13:41:54 +02:00
Lars Hjemli
97b3d25262 cgit.c: allow repo.*-filter options to unset the current default
If e.g. repo.commit-filter is specified as an empty string, this
is now properly handled as disabling the global commit-filter setting
for the current repository.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09 13:39:44 +02:00
Lars Hjemli
e976df2795 Add support for repo.commit-filter and repo.source-filter
These options can be used to override the default commit- and source-
filter settings per repository.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09 13:22:00 +02:00
Martin Szulecki
b4c3562f57 Expose file extension in tree lists as class to allow nicer tree styling
Signed-off-by: Martin Szulecki <opensuse@sukimashita.com>
2009-08-08 14:23:34 +02:00
Martin Szulecki
2f56e390f0 Introduce noplainemail option to hide email adresses from spambots
Signed-off-by: Martin Szulecki <opensuse@sukimashita.com>
2009-08-08 14:23:28 +02:00
Lars Hjemli
f35db1cd2b ui-commit: add support for 'commit-filter' option
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>
2009-07-31 17:42:57 +02:00
Lars Hjemli
46b7abed99 ui-tree: add support for source-filter option
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>
2009-07-31 17:41:21 +02:00