1

我正在尝试git pull从 PHP 文件中提取,但似乎没有使用该配置。

git config --global user.namegit config --global user.email设置和 git pull 从命令行工作。

现在,当我尝试执行此脚本时:

<?php

header('Content-type: text/plain');
system('git pull 2>&1');
echo "\nCompleted!";

我得到以下输出:

*请告诉我你是谁。

git config --global user.email "you@example.com" git config --global user.name "你的名字"

设置您帐户的默认身份。省略 --global 以仅在此存储库中设置身份。

致命:不允许空标识

完全的!

是否可能是因为git config用户特定而 PHP 是从另一个用户运行的?

4

4 回答 4

2

只需-c在 git 本身上使用标志:

-c <name>=<value>
Pass a configuration parameter to the command. The value given will override values from configuration files. The <name> is expected in the same format
as listed by git config (subkeys separated by dots).

所以像:

git -c user.name=apache pull

应该带你到那里。添加您需要的任何参数。如果你想指定一个特定的文件,那么要么向执行脚本的用户添加相关的配置选项,要么先导出一个不同的环境HOME变量来绕过它。

于 2012-08-08T12:56:22.857 回答
0

即使您没有登录,您也希望您的网络服务器能够正常工作,不是吗?这意味着它由您以外的其他用户运行(除非您另外指定)。除非您通过 CLI 运行脚本,否则脚本将由 apache、www-data 或您配置的任何用户运行。

于 2012-08-08T11:57:46.240 回答
0

我设法让它工作,但这不是一个理想的解决方案。我需要找到一种方法来git config为 apache 用户设置一次,而不是每次。我在共享主机上,所以我不知道这是否真的可能。

<?php

header('Content-type: text/plain');
system('git config user.name "Server"');
system('git config user.email "deploy@server.com"');
system('git pull 2>&1');
echo "\nCompleted!";
于 2012-08-08T12:12:28.533 回答
0

这有点杂乱无章,但您也可以设置系统 git config:

git config --system user.name <user>
git config --system user.email <user>@<domain>

这具有作为服务器所有用户的默认配置的相当不幸的副作用,因此它确实不是很好。

于 2015-05-28T23:07:34.200 回答