【发布时间】:2014-02-07 19:03:41
【问题描述】:
跟踪(我自己的)对 Composer 包所做的更改,然后将这些更改与包本身的后续更新合并的最佳方法是什么?
这些是我对给定项目特定的包所做的更改/自定义。
我目前只是将/vendor 文件夹提交到我的 VCS,然后在那里合并/更新我的更改,但我想有更好的方法吗?
我应该只使用 svn:externals 或 Git 子模块来处理这种事情吗?
【问题讨论】:
标签: git svn composer-php
跟踪(我自己的)对 Composer 包所做的更改,然后将这些更改与包本身的后续更新合并的最佳方法是什么?
这些是我对给定项目特定的包所做的更改/自定义。
我目前只是将/vendor 文件夹提交到我的 VCS,然后在那里合并/更新我的更改,但我想有更好的方法吗?
我应该只使用 svn:externals 或 Git 子模块来处理这种事情吗?
【问题讨论】:
标签: git svn composer-php
如果您使用的外部软件不提供您需要的功能,基本上只有两种选择:
第三种方法是根据自己的喜好不断修改外部软件的新版本,但这会以维护地狱告终。你似乎这样做了,但你不应该这样做。
svn externals 或 git 子模块也是处理这个问题的不好方法,尤其是如果你想使用 Composer 来维护你的依赖项。
所以正确的方法是自己创建一个依赖于另一个外部包的包并添加你想要的功能。然后,您可以专门使用 Composer 来管理依赖项。维护很容易,因为对外部包的依赖可以根据需要绑定到一个版本,或者放宽到一系列版本,只要您的修改兼容。
如果您遇到与您的修改不兼容的新外部版本,您可以创建依赖于新版本但不依赖旧版本的包的新版本,然后重新创建修改。将您的主软件更新到您的修改的新版本将自动尝试获取外部软件的较新版本,或者将拒绝安装您的较新修改,因为另一个软件包依赖于旧的外部版本。
【讨论】: