【问题标题】:Automation of git pull using PHP code使用 PHP 代码自动化 git pull
【发布时间】:2014-06-01 21:30:32
【问题描述】:

我正在努力将 'git pull' 的任务从 bit-bucket 服务器自动化到我的 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

【问题讨论】:

  • 从 git 自己使用 push 有什么问题?
  • 它需要我 ssh 进入服务器,然后从那里 git pull。从bitbucket更新godaddy服务器上的小代码需要输入两次密码并等待很长时间。我想使用 PHP 脚本自动化这部分,这样没人能看到我的密码。我有很多开发人员在开发一个应用程序。
  • 另请参阅可能对您有用的解决方法:stackoverflow.com/questions/9978400/…

标签: php git bitbucket


【解决方案1】:

如果您使用 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 命令结果的运行日志。

【讨论】:

  • 感谢您的回复,它在命令行中工作,但在 PHP 中没有输出。我看了@@stackoverflow.com/questions/8562544/…,但我是 Windows 用户,所以无法了解该解决方案如何为他们工作!如果您知道,请提供帮助。!
  • 确保 php 可以实际运行 exec - 出于安全原因,此命令有时在服务器上受到严重限制。
  • 此外,可以使用数组作为可选的第二个参数调用 exec - 该数组接收逐行输出,然后您可以使用循环和打印或其他方式显示它。将此添加为更新。
  • 感谢您提供详细信息。Godaddy 共享主机限制了 exec() 中 git 命令的执行,因为我能够运行 whoami、ls 等,但它也无法在 git 上运行。在 exec('git') 的情况下根本没有输出/空白输出。
  • 你可以在 1 行中完成:echo implode("\n", $result);
猜你喜欢
  • 2013-05-26
  • 2012-07-02
  • 2012-03-13
  • 2023-03-19
  • 2013-08-20
  • 2022-12-05
  • 2014-01-03
  • 1970-01-01
相关资源
最近更新 更多