diff options
| author | 2011-06-18 21:32:43 (JST) | |
|---|---|---|
| committer | 2011-06-18 21:59:01 (JST) | |
| commit | 9900ac022edfcfacee317d19a0f1d4d03b837b43 (patch) | |
| tree | 414b80acb0f0d442e08c7e6b276822c7c662cd8b | |
| parent | 46ca32e04319caf9dd65f9de47704d637547ad23 (diff) | |
| download | cgit-9900ac022edfcfacee317d19a0f1d4d03b837b43.zip cgit-9900ac022edfcfacee317d19a0f1d4d03b837b43.tar.gz | |
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
| @@ -403,13 +403,17 @@ static int prepare_repo_cmd(struct cgit_context *ctx) | |||
| 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); |
