适当的Composer包+Git开发工作流程

3
我正在尝试找出在开发自己的Composer包时的正确开发工作流程。我知道如何创建一个composer.json文件并将包上传到Packagist。这不是问题。
假设我有一个简单的PHP类已经添加到Packagist中。当我准备对其进行更改(修复错误、添加新功能等)时,我该怎么办?
我是直接使用composer install命令来将现有的包安装到本地开发环境,并直接在vendors目录下更改我的包吗?如果是这样,那么该目录不是一个克隆的git repo,那我该如何提交并推送我的更改呢?
还是我需要将repo克隆到一个随机的本地目录,然后使用VCS和指向我的克隆git repo的自定义本地存储库来在开发环境中使用composer install命令?如果是这样,我想我应该在存储库中进行更改而不是在本地的vendors目录中进行更改。那么如何让我的开发环境保持更新呢?每次保存包中的文件时,我是否必须执行composer update命令?
此外,Composer只会在看到包的版本号已更改时才会执行更新操作,所以我还必须手动编辑我的包的composer.json文件并处理版本控制,以便让开发环境更新。而这必须发生在我每次保存时。
对我来说,工作流程似乎应该更为显然。我错过了什么?在我的本地开发环境中使用Composer很重要,这样其他依赖项才能正确加载,并且我显然希望我的包保持在克隆的git存储库中,以便我可以推送更改。
附言:假设我的包不是特定于任何框架的,也不是特定于Laravel或Symfony等框架的,只是一个通用的PHP包。

1
这个问题似乎不适合讨论,因为它涉及到开发工作流程。 - Wouter J
1
更适合的地方在哪里提问这样的问题? - Jake Wilson
对于那些想要关闭问题的人,FYI,这个问题属于“与软件开发有关的实际可回答的问题”。(http://stackoverflow.com/help/on-topic) - Jake Wilson
1个回答

0
明显的答案是:
你需要从版本控制系统中检出该软件包,添加你想要的错误修复或功能,提交结果并标记新版本。
为了获得最佳效果,这应该在隔离环境中完成。不要假设该软件包周围有可用的代码基础设施。如果你想测试你的软件包是否提供了你想要的功能,并且无法在更大的应用程序中测试该软件包,那么剩下的就是:为此编写自动化测试。或者经历令人不愉快的编码、提交、标记、更新、测试、仍然无法正常运行的循环...更多的编码...

我该如何将包通过composer install安装到开发项目中,以便进行真实的功能测试,并仍然保持项目作为克隆的git存储库,以便提交和推送更改? - Jake Wilson
另外,我的项目依赖的其他包怎么办?你必须在某个时候进行Composer安装,以便为测试引入这些包。 - Jake Wilson
如果你使用 --prefer-source 运行 Composer,它将克隆该软件包。但是从那里进行更改和提交并不是我所谓的“隔离开发”。 - Sven
1
好的。我想到的一个问题是,如果这不是你的包,也就是说,你没有直接推送到源的权限,那么你必须执行 composer install --prefer-source,但你必须确保它从你的 forked 仓库而不是原始仓库中拉取此包。对吧? - Jake Wilson
不要分叉项目。如果你这样做了,要知道分叉和使用Composer的后果。如果你不知道,可以提一个新问题——这永远不会适合于闲聊评论串。 - Sven
我的意思是只为了提交一个拉取请求而进行分叉。不是永久地分叉到一个新项目。 - Jake Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接