Composer - 如何跟踪包的更改

时间:2014-02-06 01:01:37

标签: git svn composer-php

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

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

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

我是否应该使用svn:externals或Git子模块进行此类事情?

1 个答案:

答案 0 :(得分:1)

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

  1. 提供正式版本中的补丁,以便您可以直接在外部软件中使用您想要的功能。
  2. 修改您的软件包含方式,以便您的代码添加该功能,并且不加改变地使用外部软件。
  3. 第三种方法是根据自己的喜好不断修改外部软件的新版本,但这将以维护地狱结束。你似乎这样做了,但你不应该这样做。

    svn externals或git子模块都是处理此问题的一种不好的方法,特别是如果你想使用Composer维护你的依赖项。

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

    如果您创建了与您的修改不兼容的新外部版本,您可以创建一个新版本的软件包,该版本取决于新版本而不是旧版本,并重新创建修改。将主软件更新为修改的新版本也会自动尝试获取较新版本的外部软件,或者拒绝安装较新的修改,因为另一个软件包依赖于较旧的外部版本。