diff options
| author | Russell Belfer <rb@github.com> | 2012-04-11 11:52:59 -0700 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2012-04-11 12:11:35 -0700 |
| commit | 7784bcbbee972d1f00ea88655a5592fb44ca767d (patch) | |
| tree | 75926bc03a5f7f072878af8eb3e0e37b7fa66d4f /tests-clar/clar_helpers.c | |
| parent | 1de77cd31432a1bdff060181c6d9ec25a412a0c2 (diff) | |
| download | libgit2-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 'tests-clar/clar_helpers.c')
| -rw-r--r-- | tests-clar/clar_helpers.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/tests-clar/clar_helpers.c b/tests-clar/clar_helpers.c index 22db56f0c..001045360 100644 --- a/tests-clar/clar_helpers.c +++ b/tests-clar/clar_helpers.c @@ -28,9 +28,9 @@ void cl_git_mkfile(const char *filename, const char *content) cl_must_pass(p_close(fd)); } -void cl_git_append2file(const char *filename, const char *new_content) +void cl_git_write2file(const char *filename, const char *new_content, int flags) { - int fd = p_open(filename, O_WRONLY | O_APPEND | O_CREAT); + int fd = p_open(filename, flags); cl_assert(fd != 0); if (!new_content) new_content = "\n"; @@ -39,6 +39,16 @@ void cl_git_append2file(const char *filename, const char *new_content) cl_must_pass(p_chmod(filename, 0644)); } +void cl_git_append2file(const char *filename, const char *new_content) +{ + cl_git_write2file(filename, new_content, O_WRONLY | O_APPEND | O_CREAT); +} + +void cl_git_rewritefile(const char *filename, const char *new_content) +{ + cl_git_write2file(filename, new_content, O_WRONLY | O_CREAT | O_TRUNC); +} + static const char *_cl_sandbox = NULL; static git_repository *_cl_repo = NULL; @@ -52,11 +62,12 @@ git_repository *cl_git_sandbox_init(const char *sandbox) p_chdir(sandbox); - /* Rename `sandbox/.gitted` to `sandbox/.git` which must be done since - * we cannot store a folder named `.git` inside the fixtures folder of - * our libgit2 repo. + /* If this is not a bare repo, then rename `sandbox/.gitted` to + * `sandbox/.git` which must be done since we cannot store a folder + * named `.git` inside the fixtures folder of our libgit2 repo. */ - cl_git_pass(p_rename(".gitted", ".git")); + if (p_access(".gitted", F_OK) == 0) + cl_git_pass(p_rename(".gitted", ".git")); /* If we have `gitattributes`, rename to `.gitattributes`. This may * be necessary if we don't want the attributes to be applied in the |
