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