about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2011-06-18 14:32:43 +0200
committerLars Hjemli <hjemli@gmail.com>2011-06-18 14:59:01 +0200
commit9900ac022edfcfacee317d19a0f1d4d03b837b43 (patch)
tree414b80acb0f0d442e08c7e6b276822c7c662cd8b
parentcgitrc.5.txt: document repo.module-link (diff)
downloadcgit-pink-9900ac022edfcfacee317d19a0f1d4d03b837b43.tar.gz
cgit-pink-9900ac022edfcfacee317d19a0f1d4d03b837b43.zip
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>
-rw-r--r--cgit.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index e498030..5259f56 100644
--- 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);