Skip to main content

Utilisation des commentaires

À l’aide de l’API REST, vous pouvez accéder et gérer des commentaires dans vos demandes de tirage, problèmes ou commits.

Pour toutes les demandes de tirage, GitHub fournit trois types de commentaires : les commentaires sur la demande de tirage dans son ensemble, les commentaires sur une ligne spécifique de la demande de tirage et les commentaires sur un commit spécifique de la demande de tirage.

Chacun de ces types passe par une partie différente de l’API GitHub. Dans ce guide, nous allons voir comment accéder à chacun d’eux et comment les manipuler. Pour chaque exemple, nous allons utiliser cet exemple de demande de tirage effectuée sur le dépôt « octocat ». Comme toujours, vous trouverez des exemples dans notre dépôt platform-samples.

Commentaires sur les demandes de tirage

Pour accéder aux commentaires d’une demande de tirage, vous allez utiliser les points de terminaison pour gérer les problèmes. Au premier abord, cela peut sembler contre-intuitif. Toutefois, une fois que vous comprenez qu’une demande de tirage n’est qu’un problème de code, il paraît logique d’utiliser ces points de terminaison pour créer des commentaires à propos d’une demande de tirage.

Nous allons montrer comment récupérer les commentaires d’une demande de tirage en créant un script Ruby avec Octokit.rb. Vous souhaiterez également créer un personal access token.

Le code suivant doit vous aider à accéder aux commentaires d’une demande de tirage avec 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

Ici, nous appelons spécifiquement l’API pour obtenir les commentaires (issue_comments), en fournissant le nom du référentiel (octocat/Spoon-Knife) et l’ID de la demande de tirage qui nous intéresse (1176). Après cela, il s’agit simplement d’itérer dans les commentaires pour récupérer les informations sur chacun d’eux.

Commentaires sur une ligne d’une demande de tirage

Dans la vue différentielle, vous pouvez commencer une discussion à propos d’un aspect particulier d’une modification apportée à la demande de tirage. Ces commentaires se font sur les lignes d’un fichier modifié. L’URL du point de terminaison de cette discussion provient du point de terminaison pour gérer les révisions de demande de tirage.

Le code suivant récupère tous les commentaires de demande de tirage effectués sur les fichiers, à partir d’un seul numéro de demande de tirage :

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

Vous remarquerez qu’il est très similaire à l’exemple ci-dessus. La différence entre cette vue et le commentaire de demande de tirage est le focus de la conversation. Les commentaires concernant une demande de tirage doivent être réservés aux discussions ou aux idées sur la direction globale du code. Les commentaires faits dans le cadre d’une révision de demande de tirage doivent concerner uniquement la façon dont une modification a été implémentée dans un fichier.

Commit Comments

Le dernier type de commentaires concerne les commits. Pour cette raison, ils utilisent le point de terminaison pour gérer les commentaires de validation.

Pour récupérer les commentaires concernant un commit, vous devez utiliser le SHA1 du commit. En d’autres termes, vous n’utiliserez aucun identificateur lié à la demande de tirage. Voici un exemple :

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

Notez que cet appel d’API récupérera aussi bien les commentaires concernant une seule ligne que les commentaires concernant l’intégralité d’un commit.