编译器从私有GIT存储库安装包,没有. GIT目录


Composer install package from private GIT repository without the .git directory

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

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

问题是它也在vendor/jodes/Y/中推了一个.git目录。

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

我如何让composer从存储库中获得Y,而不做'。git目录?

X的作曲家。json是:

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

似乎作曲家基本上运行git clone从存储库获取?相反,是否有一种方法可以使它在vendor目录中执行类似于git archive的操作?(而不是zip文件)。

作为一个解决方案,我已经尝试配置我的IDE (Netbeans)忽略.git目录,但我的脚本仍然得到"权限拒绝"错误时,试图删除它。

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

composer [install|update] --prefer-dist

应该可以。

默认情况下,特别是当你引用分支,而不是标签("版本")时,composer倾向于将依赖项作为源代码获取。如果您指定了--prefer-dist,则可以显式地告诉composer使用归档文件。