summaryrefslogtreecommitdiff
path: root/src/errors.c
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2012-04-11 11:52:59 -0700
committerRussell Belfer <rb@github.com>2012-04-11 12:11:35 -0700
commit7784bcbbee972d1f00ea88655a5592fb44ca767d (patch)
tree75926bc03a5f7f072878af8eb3e0e37b7fa66d4f /src/errors.c
parent1de77cd31432a1bdff060181c6d9ec25a412a0c2 (diff)
downloadlibgit2-7784bcbbee972d1f00ea88655a5592fb44ca767d.tar.gz
Refactor git_repository_open with new options
Add a new command `git_repository_open_ext` with extended options that control how searching for a repository will be done. The existing `git_repository_open` and `git_repository_discover` are reimplemented on top of it. We may want to change the default behavior of `git_repository_open` but this commit does not do that. Improve support for "gitdir" files where the work dir is separate from the repo and support for the "separate-git-dir" config. Also, add support for opening repos created with `git-new-workdir` script (although I have only confirmed that they can be opened, not that all functions work correctly). There are also a few minor changes that came up: - Fix `git_path_prettify` to allow in-place prettifying. - Fix `git_path_root` to support backslashes on Win32. This fix should help many repo open/discover scenarios - it is the one function called when opening before prettifying the path. - Tweak `git_config_get_string` to set the "out" pointer to NULL if the config value is not found. Allows some other cleanup. - Fix a couple places that should have been calling `git_repository_config__weakptr` and were not. - Fix `cl_git_sandbox_init` clar helper to support bare repos.
Diffstat (limited to 'src/errors.c')
-rw-r--r--src/errors.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/errors.c b/src/errors.c
index 70aa641c..aad6c448 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -92,8 +92,12 @@ const char *git_lasterror(void)
{
char *last_error = GIT_GLOBAL->error.last;
- if (!last_error[0])
+ if (!last_error[0]) {
+ const git_error *err = git_error_last();
+ if (err != NULL)
+ return err->message;
return NULL;
+ }
return last_error;
}