如何使用Composer安装Git仓库的部分代码?

11

我希望只获取git版本库的一个子目录(而不是整个版本库),原因是该版本库过大。

在我的情况下,版本库是:https://github.com/pubnub/pubnub-api.git,我只需要/php目录。

我已经在composer中定义了以下软件包:

   {
            "type": "package",
            "package": {
                "name": "pubnub",
                "version": "dev-master",
                "source" : {
                    "url": "https://github.com/pubnub/pubnub-api.git",
                    "type": "git",
                    "reference":"master"
                }
            }
    },

有什么贴士吗?


1
请记住,你最好只检出一个纯粹的仓库(工作目录中没有任何东西),然后在 php 中检出文件。使用 git clone(我猜这是Composer在幕后执行的操作),你仍将获得所有历史记录。 - Mark Leighton Fisher
我正在寻找相同的行为。有运气吗? - sectus
1
我对使用Composer获取存储库的一部分很感兴趣。 - sectus
2个回答

10

鉴于对"是否有方法克隆Git仓库的子目录?"的回答是"否",且composer需要子目录检出功能来满足所需功能,那么我建议composer最好只是检出整个仓库,然后再删除不需要的部分。

简而言之:不可能。

更详细的回答是: Git可以进行稀疏检出,理论上composer有望支持该功能。您可以使用autoload字段仅加载所需的代码部分(即不加载整个lib)。


1

看起来php目录已经被移动到自己的仓库https://github.com/pubnub/php。这可能对该项目有所帮助,但不知道如何从主仓库和composer实现这一点...


哦,我需要另一个未分割的代码库。 - sectus
1
@flavien,感谢您的笔记,但它并没有回答这个普遍的问题。 - Mike Graf

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