Visão geral
Isso basicamente permite que você reimplemente uma série de funcionalidades do Git com a API REST, criando objetos sem processamento diretamente no banco de dados e atualizando referências de ramificações que você pode fazer tecnicamente sobre qualquer coisa que o Git possa fazer sem tê-lo instalado.
A API REST retornará 409 Conflict
se o repositório Git estiver vazio ou indisponível. Um repositório indisponível normalmente significa que o GitHub Enterprise Cloud está no processo de criação do repositório. Para um repositório vazio, use o ponto de extremidade PUT /repos/{owner}/{repo}/contents/{path}
API REST para criar um conteúdo e inicializar o repositório a fim de usar a API para gerenciar o banco de dados do Git. Entre em contato com conosco por meio do Portal de suporte do GitHub se esse status de resposta persistir.
Para obter mais informações sobre o banco de dados de objetos do Git, leia o capítulo Componentes internos do Git do livro Pro Git.
Por exemplo, se desejar fazer commit de uma alteração em um arquivo no seu repositório, você vai:
- Obter o objeto do commit atual
- Recuperar a árvore para a qual ele aponta
- Recuperar o conteúdo do objeto do blob que a árvore tem para esse caminho específico do arquivo
- Alterar o conteúdo de alguma forma e postar um novo objeto do blob com esse novo conteúdo, obtendo, em troca, o SHA do blob
- Publicar um novo objeto da árvore com esse ponteiro do caminho de arquivo substituído pelo SHA do seu blob novo e obtendo, em troca, o SHA da árvore
- Criar um novo objeto de confirmação com o SHA do commit atual como o principal e o SHA da novo da árvore, obtendo, em troca, o SHA do commit
- Atualizar a referência do seu branch para apontar para o novo SHA do commit
Pode parecer complexo, mas, na verdade, é bem simples quando você entende o modelo e ele revela várias coisas que podem ser feitas com a API.
Verificar a mesclabilidade de pull requests
Warning
Não dependa do uso direto do Git ou de GET /repos/{owner}/{repo}/git/refs/{ref}
para atualizações de referências de merge
do Git, pois esse conteúdo fica desatualizado sem aviso.
Uma API de consumo precisa solicitar explicitamente uma solicitação de pull para criar um commit de mesclagem de teste. Um commit de mesclagem de teste é criado quando você visualiza a solicitação de pull na interface do usuário e o botão "Mesclar" é exibido ou quando você obtém, cria ou edita uma solicitação de pull usando a API REST. Sem essa solicitação, as referências de merge
do Git ficarão desatualizadas até a próxima vez que alguém visualizar a solicitação de pull.
Se você está usando métodos de sondagem que produzem referências de merge
obsoletas do Git, o GitHub recomenda usar as seguintes etapas para obter as últimas alterações do branch padrão:
- Receber o webhook do pull request.
- Chame
GET /repos/{owner}/{repo}/pulls/{pull_number}
para iniciar um trabalho em segundo plano para criar o candidato de commit de mesclagem. - Sonde seu repositório usando
GET /repos/{owner}/{repo}/pulls/{pull_number}
para ver se o atributomergeable
étrue
oufalse
. Use o Git diretamente ouGET /repos/{owner}/{repo}/git/refs/{ref}
para atualizações das referências demerge
do Git somente depois de executar as etapas anteriores.