从主 GITHUB 存储库拆分子树并创建作曲家包的问题

Posted

技术标签:

【中文标题】从主 GITHUB 存储库拆分子树并创建作曲家包的问题【英文标题】:Issue with sub tree split from main GITHUB repo and creating composer package 【发布时间】:2017-06-11 14:58:00 【问题描述】:

这个想法是从现有的作曲家项目中创建一个组件。我已将文件夹从主存储库中拆分出来并创建了新的存储库。 使用Reference:

还在 packagist 中注册了这两个包。现在,当我使用下面的 composer 命令安装主包时:

composer create-project sanjoydesk/myapp

它不会将新创建的包替换到子文件夹中。每个存储库中都有 Composer.json。

我正在尝试从我的主项目中为我的项目创建各种组件,我希望与 Symfony/Laravel 组件的创建方式完全相同。 任何帮助都是非常可观的。

参考: Main repository, Sub Repository

【问题讨论】:

你好有人帮忙吗? 【参考方案1】:

如果“sanjoydesk/myapp”曾经是包含现在驻留在“sanjoydesk/testing-split”中的文件的存储库,您不应该"replace": "sanjoydesk/testing-split": "self.version",因为这会告诉 Composer “sanjoydesk/myapp”应该算作与“sanjoydesk/testing-split”相同的包(如果它们是完全相同的版本)。

这不会安装“sanjoydesk/testing-split”,它会阻止它被安装,因为那个包已经存在了。

您可能应该使用"require": "sanjoydesk/testing-split":"self.version" 来安装拆分存储库,但您还应该确保现在通过此库提取的任何类都不存在于“sanjoydesk/myapp”中。否则你会混淆 Composer 和你自己在哪里找到一个特定的类。

还要注意,保持准确的版本号同步是一件痛苦的事,您可能只需要一个足够的版本号“sanjoydesk/testing-split”,而不是“self.version”,然后独立开发库。

【讨论】:

感谢您的回答。不确定我是否理解正确。让我稍微解释一下。在我的情况下,“REPO1”是主要的回购。它在 sanjoydesk/REPO1/src/MyApp/Folder1、Folder2、Folder3 等中有多个文件夹。现在我想将这个主存储库文件夹拆分为单独的只读子存储库。也可以使用独立的子包。现在每次我安装主包时,它都应该包含里面的子包。你能帮我解决这个问题吗?在此先感谢.. @Sven 不确定我是否正确理解了您的期望,但您可能错了:如果您从它的 repo 使用/安装主应用程序,该 repo 包含的文件也被提取到单独的 repo 中。你的作曲家文件用“替换”告诉世界,对子包的任何依赖都可以由主包来实现——因为它有文件。 “它没有将新创建的包替换到子文件夹中”是什么意思。在你原来的问题?你预计会发生什么? 好吧,让我给你一些参考:我想要和 Laravel 一样,Symfony 工作。 Symfony 有许多不同的组件,它们也被它自己的框架所利用。 Laravel 也是全栈框架,后来拆分为框架也使用的组件。希望现在清楚。我想做一些完全相似的事情。或者我们可以在 facebook 或 gmail 中聊天以了解获得帮助.. @Sven 我知道您在一般层面上想要什么,但您希望在细节上发生什么?如果 Composer 已经安装在主包中,为什么还要触摸与子组件相关的任何东西? 好的。可能是我错了。因此,如果我没有错,任何组件的所有更改都将仅推送到主存储库(进入目录)。但是我需要手动将这些更改推送到 Sub Repo 吗?或者它会自动将我的目录代码同步到组件仓库中? @斯文

以上是关于从主 GITHUB 存储库拆分子树并创建作曲家包的问题的主要内容,如果未能解决你的问题,请参考以下文章

从单一存储库加载一个特定的作曲家包

如何在 github 和 packagist 上创建包的版本?特定于 PHP

奇点;在用户主目录中获取一个 github 存储库

为 wordpress 主题和插件创建满足作曲家的私有存储库

将作曲家存储库集成到 php 文件中

强制 PHP 作曲家创建本地存储库的相对而非绝对符号链接