Para cualquier solicitud de incorporación de cambios, GitHub Enterprise Cloud proporciona tres tipos de vistas de comentarios: comentarios en la solicitud de incorporación de cambios en su conjunto, comentarios en una línea específica dentro de la solicitud de incorporación de cambios y comentarios sobre una confirmación concreta dentro de la solicitud de incorporación de cambios.
Cada uno de estos tipos de comentarios pasan por una porción diferente de la API de GitHub. En esta guía exploraremos cómo puedes acceder y manipular cada uno de ellos. Para cada ejemplo, se usará esta solicitud de incorporación de cambios de ejemplo realizada en el repositorio "octocat". Como siempre, los ejemplos se pueden encontrar en nuestro repositorio platform-samples.
Comentarios de las Solicitudes de Extracción
Para acceder a los comentarios de una solicitud de incorporación de cambios, usarás los puntos de conexión para administrar incidencias. Esto puede parecer contraintuitivo al principio. Pero una vez que comprendas que una solicitud de incorporación de cambios es solo una incidencia con código, tiene sentido usar estos puntos de conexión para crear comentarios en una solicitud de incorporación de cambios.
Se mostrará la captura de comentarios de solicitud de incorporación de cambios mediante la creación de un script de Ruby con Octokit.rb. También querrás crear un personal access token.
El código siguiente debería ayudarle a empezar a acceder a los comentarios de una solicitud de incorporación de cambios con Octokit.rb:
require 'octokit'
# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below
client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']
client.issue_comments("octocat/Spoon-Knife", 1176).each do |comment|
username = comment[:user][:login]
post_date = comment[:created_at]
content = comment[:body]
puts "#{username} made a comment on #{post_date}. It says:\n'#{content}'\n"
end
Aquí se llama específicamente a la API para obtener los comentarios (issue_comments
) y se proporcionan el nombre del repositorio (octocat/Spoon-Knife
) y el identificador de la solicitud de incorporación de cambios que nos interesa (1176
). Después, solo es cuestión de iterar por los comentarios para capturar la información sobre cada uno.
Comentarios en una línea de una solicitud de extracción
Dentro de la vista de diferencias, puede iniciar un debate sobre un aspecto específico de un cambio concreto que se haya realizado dentro de la solicitud de incorporación de cambios. Estos comentarios aparecen en las líneas individuales dentro de un archivo que ha cambiado. La dirección URL del punto de conexión en cuestión proviene del punto de conexión para administrar revisiones de solicitudes de incorporación de cambios.
El código siguiente obtiene todos los comentarios de la solicitud de extracción que se hayan hecho en los archivos, si se le da un número particular de solicitud de extracción:
require 'octokit'
# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below
client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']
client.pull_request_comments("octocat/Spoon-Knife", 1176).each do |comment|
username = comment[:user][:login]
post_date = comment[:created_at]
content = comment[:body]
path = comment[:path]
position = comment[:position]
puts "#{username} made a comment on #{post_date} for the file called #{path}, on line #{position}. It says:\n'#{content}'\n"
end
Te darás cuenta de que es increíblemente similar al ejemplo anterior. La diferencia entre esta vista y el comentario de la solicitud de extracción es el enfoque de la conversación. Un comentario realizado en una solicitud de incorporación de cambios se debe reservar para debatir ideas sobre el enfoque general del código. Un comentario realizado como parte de una revisión de una solicitud de incorporación de cambios deberá tratar específicamente la forma en la que se ha implementado un cambio concreto dentro de un archivo.
Comentarios de las confirmaciones
El último tipo de comentarios suceden específicamente en confirmaciones individuales. Es por este momento que usan el punto de conexión para administrar los comentarios de confirmación.
Para recuperar los comentarios en una confirmación, necesitarás utilizar el SHA1 de ésta. Es decir, no utilizarás ningún identificador relacionado con la Solicitud de Extracción. Este es un ejemplo:
require 'octokit'
# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below
client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']
client.commit_comments("octocat/Spoon-Knife", "cbc28e7c8caee26febc8c013b0adfb97a4edd96e").each do |comment|
username = comment[:user][:login]
post_date = comment[:created_at]
content = comment[:body]
puts "#{username} made a comment on #{post_date}. It says:\n'#{content}'\n"
end
Tenga en cuenta que esta llamada API recuperará comentarios de una sola línea, así como los realizados en toda la confirmación.