首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP代码实现git拉出的自动化

使用PHP代码实现git拉出的自动化
EN

Stack Overflow用户
提问于 2014-04-17 14:32:33
回答 1查看 35.2K关注 0票数 15

我的工作是自动化的任务,'git拉从位桶服务器到我的godaddy共享主机。我已经将Git安装在Godaddy服务器上,并且能够从命令行远程'git克隆‘'git拉出’等等。但是现在我想编写一个PHP代码来直接从浏览器中运行'git拉‘。

PHP函数exec()可以用于此操作,但是git从位桶中提取需要一个密码。我在网上搜索了很多,但是找不到如何从provide .提供密码。

注意:我尝试过在2服务器之间设置无密码身份验证(Go爸爸- Bitbucket),但是它没有工作。所以我只剩下上面的方法了。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-17 14:41:54

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

git克隆人:

代码语言:javascript
复制
exec("git clone https://user:password@bitbucket.org/user/repo.git");

使劲拉:

代码语言:javascript
复制
exec("git pull https://user:password@bitbucket.org/user/repo.git master");

公开密码的替代方案:

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

Update: --如果您需要获取exec命令输出来调试或验证,您可以传递一个数组参数,然后使用标准迭代技术输出到您选择的位置。下面是一个简单地打印输出的示例:

代码语言:javascript
复制
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命令的结果。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23136044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档