我有一个依赖于模块Y的项目X.它们都是我的私人项目。每个在bitbucket上都有自己的git存储库。每个人都有一个composer.json。
当我在项目X上运行composer install
时,它会从其存储库中获取Y并将其推送到X的vendor
目录中。
问题是它还推送了.git
中的vendor/jodes/Y/
目录。
这是一个问题,因为有些东西会在.git目录中打开文件,这意味着我的[持续集成]脚本在重复进程时无法删除.git
目录。我认为它是我的IDE。
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
的其他优点,例如能够指定文件或目录或其他将从存档中排除的模式。
答案 0 :(得分:2)
composer [install|update] --prefer-dist
应该这样做。
默认情况下,尤其是当您引用分支而不是标记("版本")时,作曲家更喜欢将依赖关系作为源提取。如果您指定--prefer-dist
,则明确告诉作曲家使用档案。