mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-14 09:36:08 +00:00
submodule: remove trailing slashes from submodule paths
We allow looking up a submodule by path, but we lost the path normalisation during the recent changes. Bring it back.
This commit is contained in:
parent
cf4030b04b
commit
c28a5c972d
@ -168,11 +168,18 @@ int git_submodule_lookup(
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If it's not configured, we need to check for the path */
|
/* If it's not configured or we're looking by path */
|
||||||
if (location == 0 || location == GIT_SUBMODULE_STATUS_IN_WD) {
|
if (location == 0 || location == GIT_SUBMODULE_STATUS_IN_WD) {
|
||||||
git_config_backend *mods;
|
git_config_backend *mods;
|
||||||
const char *pattern = "submodule\\..*\\.path";
|
const char *pattern = "submodule\\..*\\.path";
|
||||||
fbp_data data = { name, NULL };
|
git_buf path = GIT_BUF_INIT;
|
||||||
|
fbp_data data = { NULL, NULL };
|
||||||
|
|
||||||
|
git_buf_puts(&path, name);
|
||||||
|
while (path.ptr[path.size-1] == '/') {
|
||||||
|
path.ptr[--path.size] = '\0';
|
||||||
|
}
|
||||||
|
data.path = path.ptr;
|
||||||
|
|
||||||
mods = open_gitmodules(repo, GITMODULES_EXISTING);
|
mods = open_gitmodules(repo, GITMODULES_EXISTING);
|
||||||
|
|
||||||
@ -189,8 +196,7 @@ int git_submodule_lookup(
|
|||||||
if (data.name) {
|
if (data.name) {
|
||||||
git__free(sm->name);
|
git__free(sm->name);
|
||||||
sm->name = data.name;
|
sm->name = data.name;
|
||||||
sm->path = git__strdup(name);
|
sm->path = git_buf_detach(&path);
|
||||||
GITERR_CHECK_ALLOC(sm->path);
|
|
||||||
|
|
||||||
/* Try to load again with the right name */
|
/* Try to load again with the right name */
|
||||||
if ((error = git_submodule_reload(sm, false)) < 0) {
|
if ((error = git_submodule_reload(sm, false)) < 0) {
|
||||||
@ -198,6 +204,8 @@ int git_submodule_lookup(
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
git_buf_free(&path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((error = git_submodule_location(&location, sm)) < 0) {
|
if ((error = git_submodule_location(&location, sm)) < 0) {
|
||||||
|
@ -31,6 +31,9 @@ void test_submodule_lookup__simple_lookup(void)
|
|||||||
|
|
||||||
/* lookup non-existent item */
|
/* lookup non-existent item */
|
||||||
refute_submodule_exists(g_repo, "no_such_file", GIT_ENOTFOUND);
|
refute_submodule_exists(g_repo, "no_such_file", GIT_ENOTFOUND);
|
||||||
|
|
||||||
|
/* lookup a submodule by path with a trailing slash */
|
||||||
|
assert_submodule_exists(g_repo, "sm_added_and_uncommited/");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_submodule_lookup__accessors(void)
|
void test_submodule_lookup__accessors(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user