Symfony 如何使用 Git 和 Composer 管理 Component 子包?
How does Symfony manage Component sub-packages with Git and Composer?
我正在尝试找出 Symfony 用于为每个 Symfony 组件(和 Bridge 或 Bundle)创建单独包的工作流程,同时仍将它们全部包含在主 Symfony 框架中。
框架以及每个组件都有自己的composer.json文件:
Symfony
├── Component
| ├── Component1
| | ├── ...
| | └── composer.json
| ├── Component2
| | ├── ...
| | └── composer.json
| └── ...
└── ...
我想以类似的方式创建一个项目。 Symfony 如何使用 Git 子树以这种方式跟踪框架和组件,以便它们可以单独安装或与 composer 一起安装?框架是否为每个包维护一个单独的存储库?这个过程是自动化的吗?手动更新所有组件包似乎很费工夫
我不知道 Symfony 遵循的确切过程。
但实际上有很多不同的路径可以遵循。
最简单的方法似乎是使用 bash
脚本,就像提供的脚本 here。
或者您可能想要设置更复杂的流程,例如 the one set up for the Zend Framework。
另一种解决方案是使用 PHP 本身和 Composer,如 here 所述。
这真的取决于你的需要。
但我提供的链接应该是一个很好的起点,可以帮助您更好地了解如何建立良好的工作流程。
Symfony 中的每个组件和包在 Github 上都有自己的存储库。它们仅用于 packagist,因此它们是只读的。所有工作都在主存储库中进行。
每次提交后,所有更改都将推送到只读存储库。据我所知,该脚本不是 public,但您可以阅读一些关于 fabien 如何实现它的内容 here
我还使用子树拆分将我的包分发到 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 用于为每个 Symfony 组件(和 Bridge 或 Bundle)创建单独包的工作流程,同时仍将它们全部包含在主 Symfony 框架中。
框架以及每个组件都有自己的composer.json文件:
Symfony
├── Component
| ├── Component1
| | ├── ...
| | └── composer.json
| ├── Component2
| | ├── ...
| | └── composer.json
| └── ...
└── ...
我想以类似的方式创建一个项目。 Symfony 如何使用 Git 子树以这种方式跟踪框架和组件,以便它们可以单独安装或与 composer 一起安装?框架是否为每个包维护一个单独的存储库?这个过程是自动化的吗?手动更新所有组件包似乎很费工夫
我不知道 Symfony 遵循的确切过程。
但实际上有很多不同的路径可以遵循。
最简单的方法似乎是使用 bash
脚本,就像提供的脚本 here。
或者您可能想要设置更复杂的流程,例如 the one set up for the Zend Framework。
另一种解决方案是使用 PHP 本身和 Composer,如 here 所述。
这真的取决于你的需要。
但我提供的链接应该是一个很好的起点,可以帮助您更好地了解如何建立良好的工作流程。
Symfony 中的每个组件和包在 Github 上都有自己的存储库。它们仅用于 packagist,因此它们是只读的。所有工作都在主存储库中进行。
每次提交后,所有更改都将推送到只读存储库。据我所知,该脚本不是 public,但您可以阅读一些关于 fabien 如何实现它的内容 here
我还使用子树拆分将我的包分发到 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
希望对您设置基础架构有所帮助。