我需要从 Composer(Symfony2 默认使用)切换到 Git 子模块。我以为我可以将所需的子模块添加到所需的位置,从而覆盖 Composer 安装的当前版本。
但是当我使用时git submodule add
,它说:
'vendor/twig/twig' already exists in the index
所以我尝试了:
git rm vendor/twig/twig
并尝试再次添加子模块,同样的错误。
我究竟做错了什么?
我需要从 Composer(Symfony2 默认使用)切换到 Git 子模块。我以为我可以将所需的子模块添加到所需的位置,从而覆盖 Composer 安装的当前版本。
但是当我使用时git submodule add
,它说:
'vendor/twig/twig' already exists in the index
所以我尝试了:
git rm vendor/twig/twig
并尝试再次添加子模块,同样的错误。
我究竟做错了什么?
我是 cloudControl 的创始人兼 CEO。目前 composer 确实破坏了我们的图像构建过程,因为它以某种方式干扰了我们必须检测子模块的逻辑。团队已意识到此问题并正在努力解决根本问题。
我正在为 cloudControl 工作,我们最近一直在调查这个问题。关于最初的问题,您已经提出了一个用 git 子模块替换作曲家包的正确解决方案,这只是一个 git 命令问题。但是这样做并没有多大意义,只要这些 git 子模块与 Composer 包相同,并且您的 php 代码仍然挂在 Composer 提供的 autoload.php 上。
我们还没有在内部处理 Composer,它们的文件只是添加到存储库中,其余的由 php 代码要求完成。但是我们确实处理 git 子模块,所以如果你想真正从 Composer 切换到 Git 子模块,最好的选择是摆脱 Composer 文件(vendor
文件夹和composer.*
文件),在任何你想要的地方添加 git 子模块并再次处理 php 依赖项。因此,一切都应该正常工作,您将完全切换到 git 子模块。
对 Composer 的原生支持是我们未来的计划。
问题是我必须首先实际删除和 git-remove 存储库。
即对于树枝,我最终所做的是:
git rm -r vendor/twig/*
rm -r vendor/twig/*
git add vendor/.
git submodule add git://github.com/fabpot/Twig.git vendor/twig/twig
git submodule add https://github.com/fabpot/Twig-extensions.git vendor/twig/extensions
现在我有 twig 和 twig 扩展作为 git 子模块,可以在我的云应用程序中使用它。