【问题标题】:How to create github Repository and upload files from PHP?如何创建 github 存储库并从 PHP 上传文件?
【发布时间】:2014-06-02 21:06:28
【问题描述】:

我正在尝试从 PHP 代码创建 GitHub 存储库,并且我想将文件上传到创建的 GitHub 存储库中。

我一直在尝试使用https://github.com/ornicar/php-github-api 这个PHP API,但是我找不到任何可以将文件上传到创建的 GitHub 存储库的地方。

所以请帮我解决这个问题,在此先感谢。

例如:

  1. 我想创建一个名为myProject1的响应

  2. 然后我想添加三个文件(papi.php, index.php, jquery.min.js)。

所以请帮帮我。

【问题讨论】:

  • 我们希望 Stack Overflow 上的问题能够显示出一些努力。并且是具体的问题,以便能够提供帮助。就目前而言,您的问题过于宽泛且缺乏信息。
  • @PeeHaa 感谢您的评论,我展示了我使用 php api 的链接,我可以创建 repo 和其他人。但我在任何地方都找不到如何从 php 将文件上传到创建的 repo。所以我希望人们应该指导我如何做到这一点?或者你可以给我看一些博客或链接来解释如何从 php 上传/创建文件到 github repo。

标签: php github github-api


【解决方案1】:

如“GitHub API - write to repo”中所述,您需要create a blob

你可以在KnpLabs/php-github-api/test/Github/Tests/Api/GitData/BlobsTest.php#L53-L68看到一个例子

(我使用KnpLabs/php-github-api,因为ornicar/php-github-api 已被弃用并引用它)

/**
 * @test
 */
public function shouldCreateBlob()
{
    $expectedValue = array('blob' => 'some data');
    $data = array('content' => 'some cotent', 'encoding' => 'utf8');

    $api = $this->getApiMock();
    $api->expects($this->once())
        ->method('post')
        ->with('repos/l3l0/l3l0repo/git/blobs', $data)
        ->will($this->returnValue($expectedValue));

    $this->assertEquals($expectedValue, $api->create('l3l0', 'l3l0repo', $data));
}

还没有文件名:你上传内容

但要创建文件,如this example 所示,您仍需要:

  • 获取当前主分支指向的 SHA
  • 获取此 SHA 所属的树
  • 在旧树的基础上,使用新 blob 创建一个新树对象
  • 使用新树创建一个新的提交对象并将其父级指向当前主节点
  • 最后更新 head/master 引用以指向新的提交

【讨论】:

  • 感谢您的友好回复@VonC。在上面的函数中,我必须在哪里给出文件名?这样上面的函数就会创建一个文件。例如,我从名为 myProject1 的 php api 创建了一个 respo,然后我想在我创建的 Respo 中添加三个文件(papi.php、index.php、jquery.min.js)。
  • @rkaartikeyan 你首先创建了一个 blob:$data 代表它的内容。 然后你需要创建一个新的树对象并创建一个新的提交。请参阅pqpq.de/2011/07/pithub-how-to-commit-new-file-via.html 的示例(在 perl 中,但想法保持不变)。
  • @rkaartikeyan 请记住,Git 本质上是内容管理。这就是为什么你首先上传一个 content (没有“文件名”)
猜你喜欢
  • 2014-03-23
  • 2023-04-02
  • 2023-03-10
  • 2021-05-13
  • 2012-05-18
  • 2021-08-07
  • 2019-10-09
  • 1970-01-01
  • 2015-12-27
相关资源
最近更新 更多