Lars Hjemli [Wed, 3 Dec 2008 16:34:23 +0000 (17:34 +0100)]
ui-log: try to disambiguate ref names
The 'h' querystring parameter in cgit is normally used to specify
a branch (i.e. a ref below refs/heads/), but if a repository contains
a tag with the same name as a branch the output from ui-log would use
the tag as start-revision.
This patch tries to fix the issue by checking if the specified ref is
valid as a branch name; if so, the full refname is used in the call
to setup_revisions().
Noticed-by: Takamori Yamaguchi <akschar@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Ramsay Jones [Tue, 4 Nov 2008 19:23:41 +0000 (19:23 +0000)]
Fix tests to work on Ubuntu (dash)
The system shell (/bin/sh) on Ubuntu is dash, which aims to be a
POSIX standard shell. In particular, dash does not implement any
of the common extensions to the standard that, say, bash and ksh
do.
Replace some non-POSIX constructs in setup.sh with more portable
and mundane code.
Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Ramsay Jones [Tue, 4 Nov 2008 19:22:08 +0000 (19:22 +0000)]
Fix some warnings to allow -Werror
The type used to declare the st_size field of a 'struct stat' can
be a 32- or 64-bit sized type, which can vary from one platform to
another, or even from one compilation to another. In particular,
on linux, if you include the following define:
#define _FILE_OFFSET_BITS 64
prior to including certain system header files, then the type used
for the st_size field will be __off64_t, otherwise it will be an
__off_t. Note that the above define is included at the top of
git-compat-util.h.
In cache.c, the "%zd" format specifier expects a "signed size_t",
another type which can vary, when an __off64_t or a __off_t is
provided. To supress the warning, use the PRIuMAX format specifier
and cast the st_size field to uintmax_t. This should work an any
platform for which git currently compiles.
In ui-plain.c, the size parameter of sha1_object_info() and
read_sha1_file() is defined to be "unsigned long *" not "size_t *".
So, to supress the warning, simply declare size with the correct type.
Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli [Sat, 11 Oct 2008 18:09:42 +0000 (20:09 +0200)]
ui-snapshot: add dwimmery
When downloading a snapshot, the snapshot name will often contain the repo
name combined with a tag. This patch tries to exploit this so that the
correct revision is downloaded even if no specific revision is specified.
PS: this only occurs if neither 'h' nor 'id' is specified in the query-
string.
PPS: this also fixes a bug which occurs when trying to download a filename
with an unsupported suffix: it used to try to print an error message to
the user but failed since it didn't prepare the output properly.
Lars Hjemli [Sat, 11 Oct 2008 17:05:50 +0000 (19:05 +0200)]
Add cgit_query.nohead flag
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.
Lars Hjemli [Sun, 5 Oct 2008 16:55:49 +0000 (18:55 +0200)]
Replace cgitrc with cgitrc.5.txt
The new file describes all cgitrc options in a more structured manner then
the cgitrc example file and it might also work as the source for a cgitrc
man page.
Lars Hjemli [Sun, 5 Oct 2008 11:13:03 +0000 (13:13 +0200)]
ui-snapshot.c: specify archiver_args.baselen
The struct member was introduces in git commit d53fe8187c38, but the cgit
testsuite failed to detect that cgit always generated archives without
prefixes, i.e. the result from cgit_repobasename was ignored.
Lars Hjemli [Tue, 23 Sep 2008 15:54:45 +0000 (17:54 +0200)]
ui-diff: make diffstat header a link to the full diff
When printing a path-filtered diff it wasn't obvious how to get back to
the full diff (clicking the 'diff' tab would do this). Making the diffstat
heading into a link seems to improve the usability.
Lars Hjemli [Tue, 23 Sep 2008 15:47:26 +0000 (17:47 +0200)]
ui-diff: fix links from diffstat
The links in the diffstat is supposed to work as a filter for the diff,
but this only worked when a single rev was supplied, i.e. the filtered
diff was always against the parent of the specified rev.
With this patch it is now possible to use the diffstat as a 'filter menu'
for urls like http://hjemli.net/git/cgit/diff/?id=v0.7.2&id2=v0.7.1
Lars Hjemli [Sat, 9 Aug 2008 19:11:41 +0000 (21:11 +0200)]
Teach cgit how to use PATH_INFO
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.
Lars Hjemli [Sun, 14 Sep 2008 07:45:37 +0000 (09:45 +0200)]
parsing.c: be prepared for unexpected content in commit/tag objects
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.
Eric Wong [Mon, 1 Sep 2008 06:30:33 +0000 (23:30 -0700)]
use Host: header to generate cgit_hosturl
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.
Lars Hjemli [Mon, 1 Sep 2008 22:53:04 +0000 (00:53 +0200)]
ui-plain: handle subdirectories
The callback from read_tree_recursive just needs to check the type of
each tree entry; if it's a dir we want to continue scanning, if it's a
regular file we'll assume it's the one we requested.
Lars Hjemli [Wed, 6 Aug 2008 16:52:27 +0000 (18:52 +0200)]
Makefile: Git dependency, take 3
In commit a1266edfe the build instructions for the git libs where moved
to their real targets, which in turn depended on the phony target `git`.
But since `git` is an actual directory in cgit the git libs wouldn't be
recompiled when needed.
So with this patch (third time lucky), cgit is declared to depend on the
really phony target `libgit` and the build instructions for `libgit` is
to unconditionally rebuild git/libgit.a and git/xdiff/lib.a.
Lars Hjemli [Wed, 6 Aug 2008 09:07:13 +0000 (11:07 +0200)]
ui-tree: link to plain view instead of blob view
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.
Stefan Naewe [Fri, 1 Aug 2008 12:54:38 +0000 (14:54 +0200)]
Added `local-time` option to cgitrc
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>
Lars Hjemli [Thu, 31 Jul 2008 23:25:51 +0000 (01:25 +0200)]
Makefile: another take on git dependency rules
When building cgit we depend on xdiff/lib.a and libgit.a in the git
directory, but the previous attempt on describing this dependency
failed since the build instructions for the libs was placed under the
phony `git` target.
This patch fixes the issue by moving the build instructions to their
real targets. It also makes it clear that only the `cgit` target
depends on the git binaries (since they're only used during linking).
And while at it, the patch also cleans up the list of phony targets.
Lars Hjemli [Sun, 27 Jul 2008 10:58:37 +0000 (12:58 +0200)]
Modify default value for a few cgitrc options
The default max-length used when printing commit messages and repo
descriptions can be increased due to the new layout (no sidebar).
Also, on the repo summary page I believe it makes sense to only show the
ten most recent branches and tags by default, just as it makes sense to
show the ten most recent commit messages for the active branch.
Lars Hjemli [Sun, 27 Jul 2008 09:54:06 +0000 (11:54 +0200)]
ui-summary: show clone urls
If either repo.clone-url or clone-prefix is specified in cgitrc, all
space-separated values in the config option is printed as a possible
clone url on the repo summary page.
Lars Hjemli [Tue, 22 Jul 2008 17:30:06 +0000 (19:30 +0200)]
Makefile: fix git dependency rules
The objectfiles depends unconditionally on some specific git binaries while
those git binaries depends on the phony `git` target and this patch seems to
get these dependencies spelled out correctly.
Lars Hjemli [Mon, 21 Jul 2008 08:10:48 +0000 (10:10 +0200)]
Adjust to new calling convention for read_tree_recursive()
In GIT-1.6.0, read_tree_recursive takes an extra void pointer for callback
data. We might want to use this to avoid some global variables, but for now
lets just make sure that we can still compile.
Lars Hjemli [Tue, 20 May 2008 20:32:22 +0000 (22:32 +0200)]
ui-tree.c: avoid peeking at GITLINK objects
When an object in the tree has GITLINK mode-bits we don't need to get any
more info about that particular object (and trying to get more info about
it will usually generate an annoying warning on stderr since the object
typically doesn't exist in the repo anyways).
Lars Hjemli [Tue, 20 May 2008 15:56:47 +0000 (17:56 +0200)]
cache.c: fix error checking in print_slot()
The change to print_slot() in cdc6b2f8e7a8d43dcfe0475a9d3498333ea686b8 made
the function return correct errno for read errors while ignoring write errors,
which is not what was intended. This patch tries to rectify things.
Lars Hjemli [Sun, 18 May 2008 21:59:11 +0000 (23:59 +0200)]
cache.c: do not ignore errors from print_slot()
If print_slot() fails, the client will be served an inferior response.
This patch makes sure that such an error will be returned to main(), which
in turn will try to inform about the error in the response itself.
The error is also printed to the cache_log, i.e. stderr, which will make
the error message appear in error_log (atleast when httpd==apache).
Noticed-by: Jim Meyering <jim@meyering.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli [Sat, 3 May 2008 10:44:20 +0000 (12:44 +0200)]
Add link to index page from repo header, remove page name
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.
Lars Hjemli [Sat, 3 May 2008 08:54:39 +0000 (10:54 +0200)]
Add a pager on the repolist
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).
Print an error if filename is not found in html_include.
Normally when html_include cannot open the file it fails silently and
things can be a bit hard to figure out from just looking at apache's
log. This will be beneficial for those initially setting up their server
with cgit.
Signed-off-by: Harley Laue <losinggeneration@aim.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli [Mon, 28 Apr 2008 23:13:08 +0000 (01:13 +0200)]
Merge branch 'lh/about'
* lh/about:
Add 'about site' and 'about repo' pages
Prepare for 'about site' page / add 'root-readme' option to cgitrc
Make it possible for a single cmd to work both with and without a repo
Re-enable 'index-info' and add support for 'root-desc' in cgitrc
Move included header-file out of repolist table
Prepare for 'about repo' page
Lars Hjemli [Mon, 28 Apr 2008 23:01:30 +0000 (01:01 +0200)]
Make it possible for a single cmd to work both with and without a repo
When cgit_cmd.want_repo was 0, we used to assume that the cmd would never
be invoked for a repo. But soon this will become untrue (the 'about' cmd
is rapidly approching), so from now on we will initialize any requested
repo even if want_repo==0 (and return an error if want_repo==1 but no repo
is specified).
Lars Hjemli [Mon, 28 Apr 2008 22:55:34 +0000 (00:55 +0200)]
Re-enable 'index-info' and add support for 'root-desc' in cgitrc
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.
Lars Hjemli [Mon, 28 Apr 2008 10:10:13 +0000 (12:10 +0200)]
Add page 'ls_cache'
This new page will list all entries found in the current cache, which is
useful when reviewing the new cache implementation. There are no links to
the new page, but it's reachable by adding 'p=ls_cache' to any cgit url.