繁体   English   中英

使用 PHP 代码自动化 git pull

[英]Automation of git pull using PHP code

我正在努力将“git pull”从位桶服务器到我的godaddy共享主机的任务自动化。 我已经在 Godaddy 服务器上安装了 Git,并且能够从命令行远程'git clone''git pull'等。 但是现在我想编写一个 PHP 代码来直接从浏览器运行“git pull”。

PHP 函数exec()可用于此,但 git pull from bit-bucket 需要密码。 我在互联网上搜索了很多,但找不到如何从 PHP 代码中提供密码。

注意:我尝试在 2 个服务器(Godaddy - Bitbucket)之间设置无密码身份验证,但没有奏效。 所以我只剩下上面的方法了。

编辑:我已经完成了设置,现在可以一键更新 Godaddy 服务器。 但是,由于 Godaddy 服务器的限制,PHP 代码部分对我不起作用。 因此,我为此创建了一个批处理脚本,对服务器进行无密码身份验证和自动 git pull 命令。 以下是执行此操作的步骤(可能对遇到类似问题的任何人都有帮助): http : //abhisheksachan.blogspot.in/2014/04/setting-up-godaddy-shared-hosting-with.html

如果您使用 https 而不是 ssh,您可以直接在请求中指定用户/密码:

git克隆:

exec("git clone https://user:password@bitbucket.org/user/repo.git");

git拉:

exec("git pull https://user:password@bitbucket.org/user/repo.git master");

暴露密码的替代方法:

  • 在目标系统上使用无密码 ssh 密钥。
  • 为 https 使用客户端证书。

更新:如果您需要获取 exec 命令输出以进行调试或验证,您可以将数组参数传递给它,然后使用标准迭代技术将其输出到您选择的位置。 这是一个简单地打印输出的示例:

function execPrint($command) {
    $result = array();
    exec($command, $result);
    print("<pre>");
    foreach ($result as $line) {
        print($line . "\n");
    }
    print("</pre>");
}
// Print the exec output inside of a pre element
execPrint("git pull https://user:password@bitbucket.org/user/repo.git master");
execPrint("git status");

由于$result数组将被exec()附加到而不是覆盖,因此您还可以使用单个数组来保留 exec 命令结果的运行日志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM