【问题标题】:Composer - how to track changes to packagesComposer - 如何跟踪包的更改
【发布时间】:2014-02-07 19:03:41
【问题描述】:

跟踪(我自己的)对 Composer 包所做的更改,然后将这些更改与包本身的后续更新合并的最佳方法是什么?

这些是我对给定项目特定的包所做的更改/自定义。

我目前只是将/vendor 文件夹提交到我的 VCS,然后在那里合并/更新我的更改,但我想有更好的方法吗?

我应该只使用 svn:externals 或 Git 子模块来处理这种事情吗?

【问题讨论】:

    标签: git svn composer-php


    【解决方案1】:

    如果您使用的外部软件不提供您需要的功能,基本上只有两种选择:

    1. 提供要包含在正式版本中的补丁,以便您能够直接在外部软件中使用您想要的功能。
    2. 修改包含软件的方式,以便通过您的代码添加功能,并使用未更改的外部软件。

    第三种方法是根据自己的喜好不断修改外部软件的新版本,但这会以维护地狱告终。你似乎这样做了,但你不应该这样做。

    svn externals 或 git 子模块也是处理这个问题的不好方法,尤其是如果你想使用 Composer 来维护你的依赖项。

    所以正确的方法是自己创建一个依赖于另一个外部包的包并添加你想要的功能。然后,您可以专门使用 Composer 来管理依赖项。维护很容易,因为对外部包的依赖可以根据需要绑定到一个版本,或者放宽到一系列版本,只要您的修改兼容。

    如果您遇到与您的修改不兼容的新外部版本,您可以创建依赖于新版本但不依赖旧版本的包的新版本,然后重新创建修改。将您的主软件更新到您的修改的新版本将自动尝试获取外部软件的较新版本,或者将拒绝安装您的较新修改,因为另一个软件包依赖于旧的外部版本。

    【讨论】:

    • 谢谢 - 这是有道理的。在这种情况下,#1 并不是一个真正的选择,所以我将尽一切努力走 #2 路线并将我的修改限制为制作扩展基包类的类以覆盖/扩展它们的功能,然后滚动我的更改像您提到的那样放入 Composer 包中。再次感谢您的回复!
    猜你喜欢
    • 2015-12-06
    • 2020-04-03
    • 1970-01-01
    • 2014-05-21
    • 2021-05-16
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多