当我尝试从我的私人存储库安装依赖项时,我收到以下错误:
> php.exe composer.phar update
Loading composer repositories with package information
[RuntimeException]
Failed to clone https://my.stash.repo/scm/lib/my-super-lib.git, could no
t read packages from it
fatal: Authentication failed for 'https://my.stash.repo/scm/lib/my-super-lib.git/'
update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--with-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [packagesN]
Process finished with exit code 1 at 10:57:04.
Execution time: 1 996 ms.
相关的composer.json
部分如下所示:
"require": {
"php": ">=5.3.0",
"scaytrase/my-super-lib": "1.1"
},
"repositories": [
{
"type": "vcs",
"url": "https://my.stash.repo/scm/lib/my-super-lib.git"
}
],
如果我直接设置用户名和密码,如
"url": "https://username:password@my.stash.repo/scm/lib/my-super-lib.git"
作曲家操作工作得很好。但我不想要商店明文凭证。
有没有办法让作曲家每次都要问用户名和密码?
存储库是Atlassian Stash,前面有https nginx(https和http都经过测试)
Composer version 70a20ebcc19f1ea8ab0954a4fbdce208b30085e7 2014-03-12 16:07:58
修改
现在我自己执行git clone --mirror
来填充作曲家的缓存然后我像往常一样运行作曲家安装或作曲家更新(但它说有时无法更新包信息)
code:
$command = sprintf('git clone --mirror %s %s', escapeshellarg($this->url), escapeshellarg($this->repoDir));
if (0 !== $this->process->execute($command, $output)) {
$output = $this->process->getErrorOutput();
if (0 !== $this->process->execute('git --version', $ignoredOutput)) {
throw new \RuntimeException('Failed to clone '.$this->url.', git was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput());
}
throw new \RuntimeException('Failed to clone '.$this->url.', could not read packages from it' . "\n\n" .$output);
}
手动git clone --mirror
工作得很好并要求我的凭据。但作曲家(显然执行相同的命令) - 它没有。
EDIT2
这似乎是我使用的PHP Storm 8 EAP问题。最新的稳定版本需要在composer install
期间正确进行身份验证,但不能在composer update
期间进行身份验证。
答案 0 :(得分:1)
似乎是最新的PhpStorm 8 EAP 134.1456中的一个错误。 PhpStorm 7.1.3与作曲家一样使用命令行(相同的行为)并执行composer install
罚款(但不是composer update
,但命令行也失败了。)
我已经提交了bugreport
修改强>
我对作曲家的错误报告已被this
取代<强> UPD2 强>
现在问题完全不实际。 Composer正确处理身份验证,并要求在COMPOSER_HOME/auth.json
答案 1 :(得分:0)
您可以使用这些http凭据设置加密文件,以便git从该加密文件中使用它们 这假设正在运行的gpg代理能够提供访问该凭据gpg加密文件所需的唯一密码。
您将使用的网址是:
https://username@my.stash.repo/scm/lib/my-super-lib.git
允许git向其credential helper询问正确的密码(&{39; username
&#39;)。
参见&#34; Is there a way to skip password typing when using https://github
&#34;举一个具体的例子。