Commit 4b000fc0 by Edward Thomson Committed by GitHub

Merge pull request #4305 from pks-t/pks/submodule-with-bare-repo

Submodules with bare repo
parents bcb7e92d 477b3e04
...@@ -209,6 +209,11 @@ int git_submodule_lookup( ...@@ -209,6 +209,11 @@ int git_submodule_lookup(
assert(repo && name); assert(repo && name);
if (repo->is_bare) {
giterr_set(GITERR_SUBMODULE, "cannot get submodules without a working tree");
return -1;
}
if (repo->submodule_cache != NULL) { if (repo->submodule_cache != NULL) {
khiter_t pos = git_strmap_lookup_index(repo->submodule_cache, name); khiter_t pos = git_strmap_lookup_index(repo->submodule_cache, name);
if (git_strmap_valid_index(repo->submodule_cache, pos)) { if (git_strmap_valid_index(repo->submodule_cache, pos)) {
...@@ -549,6 +554,11 @@ int git_submodule_foreach( ...@@ -549,6 +554,11 @@ int git_submodule_foreach(
int error; int error;
size_t i; size_t i;
if (repo->is_bare) {
giterr_set(GITERR_SUBMODULE, "cannot get submodules without a working tree");
return -1;
}
if ((error = git_strmap_alloc(&submodules)) < 0) if ((error = git_strmap_alloc(&submodules)) < 0)
return error; return error;
......
[core]
repositoryformatversion = 0
filemode = true
bare = true
P pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.pack
97896810b3210244a62a82458b8e0819ecfc6850
...@@ -11,6 +11,11 @@ void test_submodule_lookup__initialize(void) ...@@ -11,6 +11,11 @@ void test_submodule_lookup__initialize(void)
g_repo = setup_fixture_submod2(); g_repo = setup_fixture_submod2();
} }
void test_submodule_lookup__cleanup(void)
{
cl_git_sandbox_cleanup();
}
void test_submodule_lookup__simple_lookup(void) void test_submodule_lookup__simple_lookup(void)
{ {
assert_submodule_exists(g_repo, "sm_unchanged"); assert_submodule_exists(g_repo, "sm_unchanged");
...@@ -389,7 +394,8 @@ void test_submodule_lookup__renamed(void) ...@@ -389,7 +394,8 @@ void test_submodule_lookup__renamed(void)
cl_assert_equal_i(8, data.count); cl_assert_equal_i(8, data.count);
} }
void test_submodule_lookup_cached(void) { void test_submodule_lookup__cached(void)
{
git_submodule *sm; git_submodule *sm;
git_submodule *sm2; git_submodule *sm2;
/* See that the simple tests still pass. */ /* See that the simple tests still pass. */
...@@ -413,3 +419,29 @@ void test_submodule_lookup_cached(void) { ...@@ -413,3 +419,29 @@ void test_submodule_lookup_cached(void) {
git_submodule_free(sm); git_submodule_free(sm);
git_submodule_free(sm2); git_submodule_free(sm2);
} }
void test_submodule_lookup__lookup_in_bare_repository_fails(void)
{
git_submodule *sm;
cl_git_sandbox_cleanup();
g_repo = cl_git_sandbox_init("submodules.git");
cl_git_fail(git_submodule_lookup(&sm, g_repo, "nonexisting"));
}
static int foreach_cb(git_submodule *sm, const char *name, void *payload)
{
GIT_UNUSED(sm);
GIT_UNUSED(name);
GIT_UNUSED(payload);
return 0;
}
void test_submodule_lookup__foreach_in_bare_repository_fails(void)
{
cl_git_sandbox_cleanup();
g_repo = cl_git_sandbox_init("submodules.git");
cl_git_fail(git_submodule_foreach(g_repo, foreach_cb, NULL));
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment