SVN Repo与Composer的供应商合作

时间:2013-12-16 14:52:39

标签: php svn dependencies composer-php dependency-management

目前,我在我的供应商目录中检查了一个与Composer配合使用的私有SVN仓库。它工作得很好,但只要我不改变/提交东西。在我对SVN repo进行更改后composer update,我得到了清除message that my way of working is not recommended,以及我的.svn目录丢失的消息。 (缺少的.svn目录可能是因为我从一个仓库中检查了多个供应商包)

据我所知,在供应商目录中进行结帐并不是最佳做法。但它感觉相当舒适(如果它是有效的)。现在,由于我不是一个喜欢坚持不良做法的人,我想改进这一点。

Composer建议只给出了一些关于如何在供应商目录中运行SVN的示例,而且“最佳实践”句子对我来说也不是很清楚。此外,this post也没有真正帮助,因为我没有得到塞尔达克所展示的信息。

我的问题是,使用SVN管理供应商的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

建议的方法是仅提交composer.lockcomposer.json个文件。这使您的存储库变得轻量级,因为您不必提交构成所包含库的所有文件。如果您致电composer install,Composer承诺会安装完全相同的文件。

它的工作方式是将所有包含的供应商文件实际提交到项目存储库中。我在一些项目中做到了,因为除了在存储库中包含所有内容之外,还没有办法部署这些项目。最重要的是,每个人都可以立即检查或更新存储库,并拥有该软件的工作副本。不好的一点是,只要从存储库导出依赖项,就会有一个更复杂的更新和提交过程,因为您手动必须删除外部存储库的所有标志(如.git目录 - 您如果你使用git作为repo,你不想拥有git子模块,如果你使用的是SVN,你不想提交完整的git历史记录) - 这与从SVN签出的库的方式相同。

如果不创建一个更新脚本来完成将依赖项提交到存储库所需的所有内容,那么除非有力量,否则永远不会更新您的软件。在不提交依赖关系的情况下,更新就像调用composer update然后在composer.jsoncomposer.lock中提交更改一样简单。

如果依赖项不在项目存储库中,它们如何部署到生产服务器?在将文件复制到生产系统之前调用composer install。 :)