【发布时间】:2013-12-26 20:36:50
【问题描述】:
我有一个使用 FuelPHP 构建的 Web 应用程序,该应用程序托管在私有 GitHub 存储库上。
我最近在项目using Composer 中添加了JAXL 和APNS-PHP。具体来说,我在fuel/app 目录中创建了一个composer.json,其中包含以下内容:
{
"require": {
"varavan/apns-php": "dev-master",
"abhinavsingh/jaxl": "3.*@dev"
}
}
我运行了composer update,并且在我的本地开发环境中一切正常。我也可以从命令行很好地推送到 GitHub。
但是,当我在公共服务器上pull 时,新安装的composer 包并没有包含在拉取中,尽管它们的目录已创建。具体来说,这些目录存在,但为空:
fuel/app/vendor/abhinavsingh/jaxl/
fuel/app/vendor/varavan/apns-php/
如果我查看 GitHub 上的那些目录,它们看起来不像目录。他们有一个我不认识的图标:
另外,如果我从 GitHub GUI 应用程序中单击“同步分支”,它会给我这个消息这已经解决,请参阅下面的更新。
“fuel/app/vendor/abhinavsingh/jaxl”中的子模块已从 .gitmodules,但该文件夹仍然存在于存储库中。删除 文件夹,提交更改,然后重试。
什么!?
我使用 composer 来安装 JAXL,而不是 Git。
如果我在服务器上运行composer install,它会说:
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
但是 JAXL 和 APNS-PHP 目录仍然是空的。
如何将作曲家包放到我的生产服务器上?
更新
我将此添加到我的.gitmodules 文件中:
[submodule "fuel/app/vendor/abhinavsingh/jaxl"]
path = fuel/app/vendor/abhinavsingh/jaxl
url = git://github.com/abhinavsingh/JAXL.git
[submodule "fuel/app/vendor/varavan/apns-php"]
path = fuel/app/vendor/varavan/apns-php
url = git://github.com/varavan/ApnsPHP.git
这解决了 GitHub GUI 应用程序给我的错误,但我仍然不知道如何在生产服务器上安装作曲家包。
【问题讨论】:
-
你为什么要首先推送 composer 托管包?
-
我没有专门尝试推送作曲家托管软件包,我只是运行了
git push和git pull,一切都崩溃了。我只是想把事情整理好。 -
你在 apns-php/ 和 jaxl/ 中有一个 .git 目录吗
-
在我的本地机器上,是的,我在
apns-php和jaxl目录中都有.git目录。在生产服务器上,这些目录中没有任何内容。 -
你应该将你的 vendor 目录添加到你的 .gitignore 文件中。 Composer 安装的包应该不推送到 GitHub;克隆存储库时只需运行
composer install。