Composer vcs install(git repo)不会提交父repo

时间:2013-09-27 18:47:18

标签: php git version-control bitbucket composer-php

当我通过存储库配置中的vcs从BitBucket(git repo)安装依赖项时,它会克隆repo。然后,当我提交我的父项目时,它不提交文件,只是对依赖项repo的链接引用。

我如何

a)在父git repo中提交这些文件。这样它们就会出现在BitBuckets界面(和其他克隆或下载的zip文件)中

b)告诉作曲家下载zip文件以获取依赖,而不是克隆repo。我在composer.json中指定了“preferred-install”:“dist”,但它没有做任何事情。注意:这是一个私有存储库。

1 个答案:

答案 0 :(得分:2)

首先,您不应该编辑和/或提交在/vendor目录中创建的存储库(或您定义为充当此目录的位置)。

通常情况下,您包含来自其他人的库,并且您不应该拥有比外部存储库更多的提交权限。如果您要进行更改或实施功能,可能会有拉动请求,问题跟踪器等工作流程。要获取更新,请等待新版本显示,然后调用composer update

相同的规则适用于您自己的库。您应该注意到,当您不通过主项目中的/vendor排除.gitignore目录时,Composer克隆的任何远程存储库都将被视为git子模块。我猜(没有他们的经验),那么子模块的通常规则就适用了。

但我建议不要那样开发。你应该有两个不同的存储库,每个存储库都可以独立工作 - 你的库应该与主项目分开开发,任何开发都可以推送到BitBucket。然后,您可以使用Composer更新供应商目录。

现在ZIP下载:如果存储库在Github上托管,则Composer会有一个特殊的案例处理。 Github提供了一个下载存储库ZIP磁带的界面,标签,分支或提交ID作为密钥。这些下载是世界可读的,因此没有身份验证问题。

您自己的库还可以为该版本的ZIP文件提供下载位置。但如果你手动完成它,确保它始终得到正确维护是相当麻烦的。我建议您使用软件:Satisdetailed description)。

Satis创建至少两个您需要在可从开发机器访问的Web服务器上托管的静态文件,并且还可以选择为您在存储库中找到的每个标记创建ZIP文件。

然后,您可以将主项目中存储库的手动引用更改为指向该Satis托管Web服务器的单个指针。

每当您在其中一个存储库中创建新标记时,您再次运行Satis以获取新信息并创建新的ZIP文件。

仅当您提供ZIP下载位置时,您才会遇到preferred-install=dist选项的不同之处。如果没有下载位置,Composer将始终克隆原始存储库。