/ / Posso obter os dados diff para um arquivo entre dois commit através da API GH? - ruby, github, github-api, octokit

Posso obter os dados do diff para um arquivo entre dois commits através da API do GH? - rubi, github, github-api, octokit

Eu sei como obter o commit de um arquivo por meio da API, junto com o SHA e todas essas coisas legais.

Mas, suponha que eu só queira o diff de um arquivo em 1 commit ou o diff do mesmo arquivo entre dois commits.

Por exemplo, em este commit, digamos que eu queria apenas o , :counter_sql no activerecord/lib/active_record/associations.rb.

Como obtenho esses dados diff por meio da API?

Estou usando o Octokit.rb.

Editar 1

Parece que isso é possível por esta postagem do blog, mas não sei ao certo como fazê-lo com o Octokit.

Editar 2

Então, eu estou entendendo isso aos poucos.

Para obter os dados diff entre dois commits, posso comparar dois commits como este.

Então, supondo que eu tenha os dois SHAs para ambos os commit em duas variáveis a e b, Eu faria algo assim:

client = Octokit::Client.new(access_token: ENV["MY_ACCESS_TOKEN"])
comparison = client.compare("rails/rails", a, b, path: "activerecord/lib/active_record/associations.rb")

Esse problema é que isso resulta em uma diferença entre os dois commits, o que inclui alterações em muitos outros arquivos e muitas informações que eu não quero.

Tudo o que eu quero é o diff deste arquivo específico nesses dois commits.

Ainda não descobri como fazer isso.

Pensamentos?

Respostas:

2 para resposta № 1

Não, não é possível.

Você pode usar a API Compare para obter a diferença entre duas confirmações, que incluirão todos os arquivos, e não apenas o arquivo em que você está interessado, como observou. Portanto, é necessário fazer uma filtragem.

Outra abordagem pode ser obter o conteúdo deo arquivo na confirmação X e, em seguida, na confirmação Y e, em seguida, calcule a diferença entre essas duas versões de arquivos no final (não há API do GitHub para diferenciar em geral). Você pode usar a API de conteúdo para buscar as versões brutas de arquivos.

https://developer.github.com/v3/repos/contents/#get-contents