我试图找出Symfony用于为每个Symfony组件(和桥或包)创建单独的包的工作流程,同时仍然将它们全部包含在主Symfony框架中。
框架和每个组件都有自己的编写器。json文件:
Symfony
├── Component
| ├── Component1
| | ├── ...
| | └── composer.json
| ├── Component2
| | ├── ...
| | └── composer.json
| └── ...
└── ...
我想以类似的方式创建一个项目。Symfony是如何使用Git子树来跟踪框架和组件的,这样它们就可以单独安装或与composer一起安装了?框架是否为每个包维护一个单独的存储库?这个过程是自动化的吗?手动更新所有的组件包似乎要做很多工作。
Symfony中的每个组件和bundle在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
将组件添加到主存储库
#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
在主存储库更改后推送
#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
希望可以帮助您建立基础设施。
标题>我不知道Symfony遵循的确切过程。
但在实践中,有很多不同的路径可以遵循。
最简单的一种似乎是使用bash
脚本,就像这里提供的那样。
或者您想要设置一个更复杂的流,就像为Zend框架设置的那样。
另一个解决方案是使用PHP本身和Composer,就像这里描述的。
这完全取决于你的需要。
但我提供的链接应该是一个很好的起点,以更好地了解如何建立一个良好的工作流程