all repos — cgit @ 9900ac022edfcfacee317d19a0f1d4d03b837b43

a hyperfast web frontend for git written in c

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>
Lars Hjemli hjemli@gmail.com
Sat, 18 Jun 2011 14:32:43 +0200
commit

9900ac022edfcfacee317d19a0f1d4d03b837b43

parent

46ca32e04319caf9dd65f9de47704d637547ad23

1 files changed, 5 insertions(+), 1 deletions(-)

jump to
M cgit.ccgit.c

@@ -403,13 +403,17 @@ {

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);