cgit.c: improve error message when git repo cannot be accessed

The current 'Not a git repository' error message is not very helpful,
since it doesn't state the cause of the problem.

This patch uses errno to provide a hint of the underlying problem. It
would have been even better to give the exact cause (e.g. for ENOENT it
would be nice to know which file/directory is missing), but that would
require reimplementing setup_git_directory_gently() which seems a bit
overkill.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2011-06-18 14:32:43 +02:00
parent 46ca32e043
commit 9900ac022e

6
cgit.c
View File

@ -403,13 +403,17 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
char *tmp;
unsigned char sha1[20];
int nongit = 0;
int rc;
setenv("GIT_DIR", ctx->repo->path, 1);
setup_git_directory_gently(&nongit);
if (nongit) {
rc = errno;
ctx->page.title = fmt("%s - %s", ctx->cfg.root_title,
"config error");
tmp = fmt("Not a git repository: '%s'", ctx->repo->path);
tmp = fmt("Failed to open %s: %s",
ctx->repo->name,
rc ? strerror(rc) : "Not a valid git repository");
ctx->repo = NULL;
cgit_print_http_headers(ctx);
cgit_print_docstart(ctx);