mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-11 18:17:54 +00:00
Merge pull request #3302 from libgit2/cmn/submodule-foreach-diff-path
List a submodule only once when the path matches a submodule in the index
This commit is contained in:
commit
ceb5873913
@ -1647,7 +1647,7 @@ static int submodule_load_from_config(
|
|||||||
} else {
|
} else {
|
||||||
khiter_t pos;
|
khiter_t pos;
|
||||||
git_strmap *map = data->map;
|
git_strmap *map = data->map;
|
||||||
pos = git_strmap_lookup_index(map, name.ptr);
|
pos = git_strmap_lookup_index(map, path ? path : name.ptr);
|
||||||
if (git_strmap_valid_index(map, pos)) {
|
if (git_strmap_valid_index(map, pos)) {
|
||||||
sm = git_strmap_value_at(map, pos);
|
sm = git_strmap_value_at(map, pos);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "clar_libgit2.h"
|
#include "clar_libgit2.h"
|
||||||
#include "submodule_helpers.h"
|
#include "submodule_helpers.h"
|
||||||
#include "git2/sys/repository.h"
|
#include "git2/sys/repository.h"
|
||||||
|
#include "repository.h"
|
||||||
#include "fileops.h"
|
#include "fileops.h"
|
||||||
|
|
||||||
static git_repository *g_repo = NULL;
|
static git_repository *g_repo = NULL;
|
||||||
@ -103,10 +104,27 @@ static int sm_lookup_cb(git_submodule *sm, const char *name, void *payload)
|
|||||||
|
|
||||||
void test_submodule_lookup__foreach(void)
|
void test_submodule_lookup__foreach(void)
|
||||||
{
|
{
|
||||||
|
git_config *cfg;
|
||||||
sm_lookup_data data;
|
sm_lookup_data data;
|
||||||
|
|
||||||
memset(&data, 0, sizeof(data));
|
memset(&data, 0, sizeof(data));
|
||||||
cl_git_pass(git_submodule_foreach(g_repo, sm_lookup_cb, &data));
|
cl_git_pass(git_submodule_foreach(g_repo, sm_lookup_cb, &data));
|
||||||
cl_assert_equal_i(8, data.count);
|
cl_assert_equal_i(8, data.count);
|
||||||
|
|
||||||
|
memset(&data, 0, sizeof(data));
|
||||||
|
|
||||||
|
/* Change the path for a submodule so it doesn't match the name */
|
||||||
|
cl_git_pass(git_config_open_ondisk(&cfg, "submod2/.gitmodules"));
|
||||||
|
|
||||||
|
cl_git_pass(git_config_set_string(cfg, "submodule.smchangedindex.path", "sm_changed_index"));
|
||||||
|
cl_git_pass(git_config_set_string(cfg, "submodule.smchangedindex.url", "../submod2_target"));
|
||||||
|
cl_git_pass(git_config_delete_entry(cfg, "submodule.sm_changed_index.path"));
|
||||||
|
cl_git_pass(git_config_delete_entry(cfg, "submodule.sm_changed_index.url"));
|
||||||
|
|
||||||
|
git_config_free(cfg);
|
||||||
|
|
||||||
|
cl_git_pass(git_submodule_foreach(g_repo, sm_lookup_cb, &data));
|
||||||
|
cl_assert_equal_i(8, data.count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_submodule_lookup__lookup_even_with_unborn_head(void)
|
void test_submodule_lookup__lookup_even_with_unborn_head(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user