author | Lars Hjemli <hjemli@gmail.com> | 2011-06-18 12:32:43 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2011-06-18 12:59:01 (UTC) |
commit | 9900ac022edfcfacee317d19a0f1d4d03b837b43 (patch) (unidiff) | |
tree | 414b80acb0f0d442e08c7e6b276822c7c662cd8b | |
parent | 46ca32e04319caf9dd65f9de47704d637547ad23 (diff) | |
download | cgit-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>
-rw-r--r-- | cgit.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -398,23 +398,27 @@ char *find_default_branch(struct cgit_repo *repo) | |||
398 | return ref; | 398 | return ref; |
399 | } | 399 | } |
400 | 400 | ||
401 | static int prepare_repo_cmd(struct cgit_context *ctx) | 401 | static 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(); |
419 | return 1; | 423 | return 1; |
420 | } | 424 | } |