Visão Geral
Isso basicamente permite que você reimplemente uma série de funcionalidades do Git sobre nossa API, 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.
Funções da API do Banco de Dados do Git retornará um 409 Conflict
se o repositório do Git estiver vazio ou indisponível. Um repositório indisponível normalmente significa que o GitHub Enterprise Server está no processo de criação do repositório. Para um repositório vazio, você pode usar o ponto de extremidade "Criar ou atualizar o conteúdo do arquivo" para criar conteúdo e inicializar o repositório para que você possa usar a API de banco de dados do Git. Entre em contato com o administrador do site se esse status de resposta persistir.
Para obter mais informações sobre a base de dados de objetos do Git, leia o capítulo Internos do Git no livro Pro do Git.
Como exemplo, se você quisesse fazer commit de uma alteração em um arquivo no seu repositório, você:
- 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. Ao entender o modelo e ele oferece muitas coisas que você poderia fazer potencialmente com a API.
Verificar a mesclabilidade de pull requests
Aviso!Não dependa do uso do Git diretamente ou de GET /repos/{owner}/{repo}/git/refs/{ref}
para atualizações para fazer merge
de refs do Git, pois este conteúdo fica desatualizado sem aviso prévio.
Uma API consumível precisa solicitar explicitamente que um pull request crie um commit de merge de teste. Um commit de merge de teste é criado quando você visualiza o pull request na interface do usuário e o botão "Merge" é exibido, ou quando obtém, cria, ou edita um pull request usando a API REST. Sem esta solicitação, as referências de merge
do Git ficarão desatualizadas até a próxima vez que alguém visualizar o pull request.
Se você está usando métodos de sondagem que produzem refs do Git de merge
obsoletos, o GitHub recomenda usar as etapas a seguir 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 do commit do merge. - Faça a sondam do seu repositório usando
GET /repos/{owner}/{repo}/pulls/{pull_number}
para ver se o atributomesclável
éverdadeiro
oufalso
. Você pode usar o Git diretamente ouGET /repos/{owner}/{repo}/git/refs/{ref}
para atualizações para fazermerge
das refs do Git apenas após executar as etapas anteriores.