我想用subversion管理我的项目,而该项目需要composer管理的依赖项。
这样做的最佳做法是什么?
我可以将具有所需依赖项的composer.json添加到主干中。然后我在我的工作副本中运行一个composer更新。据我所知,我应该将composer创建的文件夹从我的主干中排除,因为它们不需要复制到repo中。这是正确的吗?
如果我再次结账,我必须再次进行作曲家更新。这是正确的吗?
如果我进行导出,我必须进行另一个composer更新。
主要问题是:是否有可能处理像svn:externals这样的composer依赖项?如果我执行签出或导出,subversion应该自己下载依赖项。这可能吗?另外,我希望以后能够手动更新作曲家。
很抱歉,我对composer集成到subversion存储库有点困惑。也许任何人都能解释。
在运行composer update
一次后,将项目的composer.json
和composer.lock
都提交到存储库中,并将vendor
文件夹排除在提交之外。
之后,您只需要运行composer install
来安装上次运行更新时获得的依赖项:
- 从SVN->
composer install
新鲜结账 - 从SVN->
composer install
获取更新
运行composer update
的唯一情况是当您想要更新依赖项时。
关于svn的一个注意事项是:externals:虽然在理论上,它们能够与Composer做同样的事情,即"硬编码"(在某种程度上)您在当前存储库中使用的其他存储库的精确修订,但这很少被使用。通常,您将svn:externals指向trunk分支。但这是一个风险:如果你回到早期的修订版,你就不会得到早期版本的依赖关系!您可以将外部使用的修订版包含在svn:externals链接中,但我发现这对于管理上次使用svn(在Composer启动之前)来说相当麻烦。如果你可以使用Composer,我不建议你使用这些。还要注意的是,大多数Composer包都托管在基于Git的存储库平台上,如Github或Bitbucket,因此无论如何都无法将它们作为svn:externals包含在内。