我们当前的开发设置使用单个Subversion存储库,其中包含多个项目,每个项目都有分支,标记和主干.然后,我们使用“稀疏结账”来选择项目,以及这些项目的分支,以便与之合作.
结果是工作副本的目录结构与存储库的目录结构相匹配,包括分支信息,我们从不使用svn开关. (这种工作方式对于使用SVN的人来说可能很熟悉,但对于那些不使用SVN的人来说可能会感到惊讶.)
我们正在考虑使用Composer来管理外部和内部依赖关系,但我不确定这如何适用于稀疏的checkout工作方式.
我想在现有checkout中使用目录来某种方式来满足依赖关系,而不是每个需要单独副本的“根项目”.
例如:
> sites / Foo / trunk
>取决于lib Aaa,所以引用lib / Aaa / trunk
>取决于lib Bbb 1.5.*,所以引用lib / Bbb / branches / release-1.5
> sites / Bar / trunk
>取决于lib Aaa 1.0.*,所以引用lib / Aaa / branches / release-1.0
>取决于lib Bbb 1.5.*,所以引用lib / Bbb / branches / release-1.5
目前,如果我编辑lib / Bbb / branches / release-1.5中的代码,我可以在两个站点上测试这些更改,而无需提交一个并更新另一个.
有没有办法使用Composer来管理这些依赖项?
(PS:请不要回答“放弃SVN,使用Git,它真是太棒了”;这是对不同问题的回答.)
解决方法:
不 – 我不相信你可以用Composer作为标准来做这件事:它希望将文件从任何来源(Packagist / VCS / Zips)复制到本地供应商文件夹,这不是你想要的.
也就是说,我相信有两种可能的方法可以实现这一点(至少部分):
自动加载磁带机
您可以尝试使用composer.json文件中的autoload字段将正确的文件包含到项目中.您仍然需要手动管理相关分支/版本的检出(就像我假设您现在这样做),但您可以通过Composer管理内部库的包含.这可能要求您的库正确命名空间.每个命名空间的文件路径都是相对于项目的根目录,但如果需要,可以在根目录下(通过/../路径).
说实话,如果你已经拥有这些文件的自动加载器,那么这个解决方案可能没什么优势. Relevant Docs
Composer插件
你也可以编写一个可能管理它的作曲家插件/“自定义安装程序”.这样做的好处是,您可以让它管理检查稀疏存储库的正确部分以获得正确的版本,以及进行正确的Wildstar版本检查,但这将是一个更加困难和风险更大的冒险.
基本过程是你要定义一个新的包类型(例如’internal-svn-package’).您可以将插件创建为通过Composer正常安装的外部库,Composer声明(通过它的composer.json)它处理这种新类型的包.然后,您的自定义逻辑将用于使用此自定义类型列出的任何包.我不确定您可以重用多少SVN签出的内部编写器逻辑. Relevant Docs
原文地址:https://codeday.me/bug/20190703/1363473.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。