0

我需要从 Composer(Symfony2 默认使用)切换到 Git 子模块。我以为我可以将所需的子模块添加到所需的位置,从而覆盖 Composer 安装的当前版本。

但是当我使用时git submodule add,它说:

'vendor/twig/twig' already exists in the index

所以我尝试了:

git rm vendor/twig/twig

并尝试再次添加子模块,同样的错误。

我究竟做错了什么?

4

3 回答 3

3

我是 cloudControl 的创始人兼 CEO。目前 composer 确实破坏了我们的图像构建过程,因为它以某种方式干扰了我们必须检测子模块的逻辑。团队已意识到此问题并正在努力解决根本问题。

于 2012-08-27T19:21:37.680 回答
2

我正在为 cloudControl 工作,我们最近一直在调查这个问题。关于最初的问题,您已经提出了一个用 git 子模块替换作曲家包的正确解决方案,这只是一个 git 命令问题。但是这样做并没有多大意义,只要这些 git 子模块与 Composer 包相同,并且您的 php 代码仍然挂在 Composer 提供的 autoload.php 上。

我们还没有在内部处理 Composer,它们的文件只是添加到存储库中,其余的由 php 代码要求完成。但是我们确实处理 git 子模块,所以如果你想真正从 Composer 切换到 Git 子模块,最好的选择是摆脱 Composer 文件(vendor文件夹和composer.*文件),在任何你想要的地方添加 git 子模块并再次处理 php 依赖项。因此,一切都应该正常工作,您将完全切换到 git 子模块。

对 Composer 的原生支持是我们未来的计划。

于 2012-08-29T11:04:13.850 回答
1

问题是我必须首先实际删除和 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 子模块,可以在我的云应用程序中使用它。

于 2012-08-28T14:31:22.373 回答