如何使用 composer 安装部分 git 存储库?

Posted

技术标签:

【中文标题】如何使用 composer 安装部分 git 存储库?【英文标题】:How to use composer to install part of a git repository? 【发布时间】:2013-01-07 07:26:19 【问题描述】:

我只想需要一个 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"
                
            
    ,

有什么建议吗?

【问题讨论】:

请记住,您能做的最好的事情是检索一个裸存储库(工作目录中没有任何内容),然后签出php 中的文件。您仍然会使用 git clone 获得所有历史记录(我猜 Composer 在幕后所做的)。 我正在寻找相同的行为。运气好吗? 我有兴趣通过 composer 获取部分存储库。 【参考方案1】:

似乎 php 目录已移至此处https://github.com/pubnub/php 的自己的存储库中。这可能对这个项目有所帮助,但不知道如何从主仓库和作曲家实现这一点......

【讨论】:

哦,我需要另一个没有分割的存储库。 @flavien,感谢您的注释,但它没有回答一般问题。【参考方案2】:

鉴于"Is there any way to clone a git repository's sub-directory only?" 是"No" 的答案,并且作曲家需要子目录签出功能来满足所需的功能,那么我建议最好的作曲家可以做的是签出整个内容然后删除你不想。

简而言之:不可能。

更长的答案: 是 git 可以做一个sparse checkout 所以理论上作曲家有朝一日可以支持该功能。您可以使用autoload 字段仅加载您想要的代码部分(即,不加载整个库)。

【讨论】:

以上是关于如何使用 composer 安装部分 git 存储库?的主要内容,如果未能解决你的问题,请参考以下文章

Composer Github 私有存储库无法使用给定的密钥

Composer - 添加没有 composer.json 的 git 存储库

如何在 GitHub 存储库中包含 Composer

ubuntu:如何使用 sudo 使用 composer 安装私有存储库

GIT 嵌套存储库:Composer vs. SubModules vs. Subtree vs.?

阻止 Composer 更新重新安装