Git Submodules как пакетный менеджер: 11 лет боли и ни одного исправления
Git Submodules as a Package Manager

Автор рассматривает git submodules как пакетный менеджер и находит, что они не дотягивают до него по всем параметрам. Разбираются проблемы с разрешением зависимостей (URL в .gitmodules, отсутствие реестра), установкой (пустые каталоги, detached HEAD), хранением (дублирование объектов, конфликт с worktree), обновлением (только точный SHA или ветка) и безопасностью (серия CVE). Особо отмечается, что за 11 лет после появления git worktree конфликт с submodules так и не решён: требуется --force для удаления и запрещено перемещение. В итоге автор приходит к выводу, что submodules — это сырые внутренности git, а не абстракция пакетного менеджера.
Submodules expose git’s internals directly: object IDs as the pin, detached HEADs after update, the $GIT_DIR/modules/ layout, transport URLs in the manifest. A package manager wraps the equivalents behind a manifest format, a resolver, and a local cache; submodules surface them raw.