]> granicus.if.org Git - cgit/commitdiff
cgit.c: improve error message when git repo cannot be accessed
authorLars Hjemli <hjemli@gmail.com>
Sat, 18 Jun 2011 12:32:43 +0000 (14:32 +0200)
committerLars Hjemli <hjemli@gmail.com>
Sat, 18 Jun 2011 12:59:01 +0000 (14:59 +0200)
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>
cgit.c

diff --git a/cgit.c b/cgit.c
index e498030b4dd7d83043cadb1a57ce12000b949755..5259f56fcd9cc09ebf152bcc163fd2801427afa4 100644 (file)
--- a/cgit.c
+++ b/cgit.c
@@ -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);