Как создать репозиторий github и загрузить файлы с PHP?

Я пытаюсь создать репозиторий GitHub из PHP-кода, а также хочу загрузить файлы в созданный репозиторий GitHub.

Я пытался использовать https://github.com/ornicar/php-github-api этот PHP API, но я нигде не мог найти, как я могу загружать файлы в созданный репозиторий GitHub.

Поэтому, пожалуйста, помогите мне решить эту проблему, спасибо заранее.

Ex:

  1. Я хочу создать Respo с именем myProject1

  2. Затем я хотел добавить три файла (papi.php, index.php, jquery.min.js).

Пожалуйста, помогите мне.


person rkaartikeyan    schedule 18.04.2014    source источник
comment
Мы ожидаем, что вопросы здесь, на Stack Overflow, покажут некоторые усилия. И задайте конкретный вопрос, чтобы иметь возможность помочь. В настоящее время ваш вопрос слишком широк и не содержит информации.   -  person PeeHaa    schedule 18.04.2014
comment
@PeeHaa Спасибо за ваш комментарий, я показал ссылку, что я использовал php API, с помощью которого я могу создать репо, а также другие. но я нигде не мог найти, как загрузить файл в созданное репо из php. Поэтому я хочу, чтобы люди вели меня, как это сделать? или вы можете показать мне некоторые блоги или ссылки, которые объясняют, как загружать/создавать файлы в репозиторий github из php.   -  person rkaartikeyan    schedule 18.04.2014
comment
Возможный дубликат stackoverflow.com/questions/6668283/ github-api-write-to-repo/   -  person PeeHaa    schedule 18.04.2014


Ответы (1)


Как упоминалось в разделе «GitHub API — запись в репозиторий", вам потребуется создать большой двоичный объект.

Вы можете увидеть пример в 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));
}

Пока нет имени файла: вы загружаете контент;

Однако для создания файла, как показано в в этом примере вам все равно потребуется:

  • получить SHA, на который указывает текущая главная ветвь
  • получить дерево, к которому принадлежит этот SHA
  • создать новый объект дерева с новым BLOB-объектом на основе старого дерева
  • создайте новый объект коммита, используя новое дерево, и укажите его родителя на текущий мастер
  • наконец, обновите ссылку head/master, чтобы она указывала на новую фиксацию
person VonC    schedule 18.04.2014
comment
Спасибо за ваш добрый ответ @VonC. в приведенной выше функции, где я должен указать имя файла? так что вышеуказанная функция создаст файл. Например, я создал репозиторий из php API с именем myProject1, затем я хотел добавить три файла (papi.php, index.php, jquery.min.js) в созданный репозиторий. - person rkaartikeyan; 18.04.2014
comment
@rkaartikeyan вы сначала создаете большой двоичный объект: $data представляет его содержимое. Затем вам нужно будет создать новый объект дерева и создать новую фиксацию. См. пример (на Perl, но идея осталась прежней) по адресу pqpq.de/2011/07/pithub-how-to-commit-new-file-via.html. - person VonC; 18.04.2014
comment
@rkaartikeyan Помните, Git — это управление контентом. Вот почему вы сначала загружаете контент (там не указано имя файла) - person VonC; 18.04.2014