summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2011-06-18 12:32:43 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2011-06-18 12:59:01 (UTC)
commit9900ac022edfcfacee317d19a0f1d4d03b837b43 (patch) (unidiff)
tree414b80acb0f0d442e08c7e6b276822c7c662cd8b
parent46ca32e04319caf9dd65f9de47704d637547ad23 (diff)
downloadcgit-9900ac022edfcfacee317d19a0f1d4d03b837b43.zip
cgit-9900ac022edfcfacee317d19a0f1d4d03b837b43.tar.gz
cgit-9900ac022edfcfacee317d19a0f1d4d03b837b43.tar.bz2
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>
Diffstat (more/less context) (ignore whitespace changes)
-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
@@ -400,19 +400,23 @@ char *find_default_branch(struct cgit_repo *repo)
400 400
401static int prepare_repo_cmd(struct cgit_context *ctx) 401static int prepare_repo_cmd(struct cgit_context *ctx)
402{ 402{
403 char *tmp; 403 char *tmp;
404 unsigned char sha1[20]; 404 unsigned char sha1[20];
405 int nongit = 0; 405 int nongit = 0;
406 int rc;
406 407
407 setenv("GIT_DIR", ctx->repo->path, 1); 408 setenv("GIT_DIR", ctx->repo->path, 1);
408 setup_git_directory_gently(&nongit); 409 setup_git_directory_gently(&nongit);
409 if (nongit) { 410 if (nongit) {
411 rc = errno;
410 ctx->page.title = fmt("%s - %s", ctx->cfg.root_title, 412 ctx->page.title = fmt("%s - %s", ctx->cfg.root_title,
411 "config error"); 413 "config error");
412 tmp = fmt("Not a git repository: '%s'", ctx->repo->path); 414 tmp = fmt("Failed to open %s: %s",
415 ctx->repo->name,
416 rc ? strerror(rc) : "Not a valid git repository");
413 ctx->repo = NULL; 417 ctx->repo = NULL;
414 cgit_print_http_headers(ctx); 418 cgit_print_http_headers(ctx);
415 cgit_print_docstart(ctx); 419 cgit_print_docstart(ctx);
416 cgit_print_pageheader(ctx); 420 cgit_print_pageheader(ctx);
417 cgit_print_error(tmp); 421 cgit_print_error(tmp);
418 cgit_print_docend(); 422 cgit_print_docend();