Cy *_*nol 3 php git dependency-management symfony composer-php
我试图找出Symfony用于为每个Symfony组件(和Bridge或Bundle)创建单独的包的工作流,同时仍将它们全部包含在主Symfony Framework中.
框架以及每个组件都有自己的composer.json文件:
Symfony
??? Component
| ??? Component1
| | ??? ...
| | ??? composer.json
| ??? Component2
| | ??? ...
| | ??? composer.json
| ??? ...
??? ...
Run Code Online (Sandbox Code Playgroud)
我想以类似的方式创建一个项目.Symfony如何使用Git子树以这种方式跟踪框架和组件,以便它们可以单独安装或与编辑器一起安装?框架是否为每个包维护一个单独的存储库?这个过程是否自动化?手动更新所有组件包似乎需要做很多工作.
小智 7
Symfony中的每个组件和包都在Github上拥有自己的存储库.它们仅用于包装,因此它们是只读的.所有工作都在主存储库中进行.
每次提交后,所有更改都将推送到只读存储库.我所知道的剧本并不公开,但你可以在这里看一下fabien如何实现它
我还使用子树拆分将我的包分发到jenkin任务中的子存储库.
这是一个小的指南,用于将子树拆分添加到主存储库以及如何将其分发回其存储库.示例转移到您的目录结构示例,并且存储库的所有者是Acme.
#execute in subtree repository
$ git init
$ git commit -a -m "init"
$ git remote add origin git@github.com:Acme/Component1.git
$ git push -u origin master
Run Code Online (Sandbox Code Playgroud)
#execute in main repository
$ git remote add -f Component1 git@github.com:Acme/Component1.git
$ git subtree add --prefix Symfony/Component/Component1 --squash Component1/master
$ git subtree push --prefix=Symfony/Component/Component1 Component1 master
Run Code Online (Sandbox Code Playgroud)
#execute in main repository on a webhook in e.g. jenkins
$ git remote add -f Component1 git@github.com:Acme/Component1.git #only if you haven't add it before
$ git subtree push --prefix=Symfony/Component/Component1 Component1 master
Run Code Online (Sandbox Code Playgroud)
希望这可能有助于建立您的基础设施.