如何从PHP创建github存储库和上传文件?

时间:2014-04-18 10:58:01

标签: php github github-api

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

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

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

例如:

  1. 我想创建一个名为myProject1

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

  4. 所以请帮助我。

1 个答案:

答案 0 :(得分:3)

如" 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引用以指向新提交