]> git.ipfire.org Git - thirdparty/git.git/commit
submodule: prevent overwriting .gitmodules on path reuse
authorK Jayatheerth <jayatheerthkulkarni2005@gmail.com>
Thu, 24 Jul 2025 15:24:17 +0000 (20:54 +0530)
committerJunio C Hamano <gitster@pobox.com>
Thu, 24 Jul 2025 20:35:07 +0000 (13:35 -0700)
commit1fa06ceddf1ea01bd85e277471ba79330666f037
treeebbe33a18e7fa1bba4d0c34a4b1f59b7531bfb2c
parentcb96e1697ad6e54d11fc920c95f82977f8e438f8
submodule: prevent overwriting .gitmodules on path reuse

Adding a submodule at a path that previously hosted
another submodule (e.g., 'child') reuses the submodule
name derived from the path. If the original submodule
was only moved (e.g., to 'child_old') and not renamed,
this silently overwrites its configuration in .gitmodules.

This behavior loses user configuration and causes
confusion when the original submodule is expected
to remain intact. It assumes that the path-derived
name is always safe to reuse, even though the name
might still be in use elsewhere in the repository.

Teach module_add() to check if the computed submodule
name already exists in the repository's submodule config,
and if so, refuse the operation unless the user explicitly
renames the submodule or uses the --force option,
which will automatically generate a unique name by
appending a number (e.g., child1).

Signed-off-by: K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-submodule.adoc
builtin/submodule--helper.c
t/t7400-submodule-basic.sh