Composer从私有GIT存储库安装包而没有.git目录

时间:2015-08-11 07:01:08

标签: php git composer-php

我有一个依赖于模块Y的项目X.它们都是我的私人项目。每个在bitbucket上都有自己的git存储库。每个人都有一个composer.json。

当我在项目X上运行composer install时,它会从其存储库中获取Y并将其推送到X的vendor目录中。

问题是它还推送了.git中的vendor/jodes/Y/目录。

这是一个问题,因为有些东西会在.git目录中打开文件,这意味着我的[持续集成]脚本在重复进程时无法删除.git目录。我认为它是我的IDE。

如何在不创建`.git`目录的情况下让作曲家从存储库中获取Y?

X的composer.json是:

{
    "name": "jodes/X",
    "require": {
        "jodes/Y": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://Jodes@bitbucket.org/Jodes/Y.git"
        }
    ]
}

似乎作曲家基本上运行git clone来从存储库中获取?相反,有没有办法让它在git archive目录中执行与vendor类似的操作? (而不是zip文件)。

作为一种解决方法我尝试配置我的IDE(Netbeans)来忽略.git目录,但我的脚本仍然得到" Permission denied"尝试删除它时出错。

作为奖励,我还想利用使用git archive的其他优点,例如能够指定文件或目录或其他将从存档中排除的模式。

1 个答案:

答案 0 :(得分:2)

composer [install|update] --prefer-dist

应该这样做。

默认情况下,尤其是当您引用分支而不是标记("版本")时,作曲家更喜欢将依赖关系作为源提取。如果您指定--prefer-dist,则明确告诉作曲家使用档案。