{"meta":{"title":"Работа с комментариями","intro":"С помощью REST API можно получить доступ к комментариям в запросах на вытягивание, проблемах или фиксациях и управлять ими.","product":"REST API","breadcrumbs":[{"href":"/ru/enterprise-server@3.21/rest","title":"REST API"},{"href":"/ru/enterprise-server@3.21/rest/guides","title":"Guides"},{"href":"/ru/enterprise-server@3.21/rest/guides/working-with-comments","title":"Работа с комментариями"}],"documentType":"article"},"body":"# Работа с комментариями\n\nС помощью REST API можно получить доступ к комментариям в запросах на вытягивание, проблемах или фиксациях и управлять ими.\n\nДля любого запроса GitHub на вытягивание предоставляет три типа представлений комментариев: [комментарии по запросу на вытягивание](https://github.com/octocat/Spoon-Knife/pull/1176#issuecomment-24114792) в целом, [комментарии к определенной строке](https://github.com/octocat/Spoon-Knife/pull/1176#discussion_r6252889) в запросе на вытягивание и [комментарии по определенной фиксации](https://github.com/octocat/Spoon-Knife/commit/cbc28e7c8caee26febc8c013b0adfb97a4edd96e#commitcomment-4049848) в запросе на вытягивание.\n\nКаждый из этих типов комментариев проходит через другую часть GitHub API.\nВ этом руководстве мы рассмотрим, как получить доступ к каждому из них и управлять ими. Для каждого примера мы будем использовать [этот пример запроса на вытягивание](https://github.com/octocat/Spoon-Knife/pull/1176) в репозитории octocat. Как всегда, примеры можно найти в [нашем репозитории примеров для платформы](https://github.com/github/platform-samples/tree/master/api/ruby/working-with-comments).\n\n## Комментарий к запросу на вытягивание\n\nЧтобы получить доступ к комментариям к запросу на вытягивание, вы будете использовать [конечные точки для управления проблемами](/ru/enterprise-server@3.21/rest/issues/comments).\nНа первый взгляд это может показаться нелогичным. Но как только вы понимаете, что запрос на вытягивание является просто проблемой с кодом, рекомендуется использовать эти конечные точки для создания комментариев по запросу на вытягивание.\n\nМы продемонстрируем получение комментариев к запросу на вытягивание путем создания скрипта Ruby с помощью [Octokit.rb](https://github.com/octokit/octokit.rb). Вы также хотите создать [personal access token](/ru/enterprise-server@3.21/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\nСледующий код поможет получить доступ к комментариям из запроса на вытягивание с помощью Octokit.rb:\n\n```ruby\nrequire 'octokit'\n\n# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!\n# Instead, set and test environment variables, like below\nclient = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']\n\nclient.issue_comments(\"octocat/Spoon-Knife\", 1176).each do |comment|\n  username = comment[:user][:login]\n  post_date = comment[:created_at]\n  content = comment[:body]\n\n  puts \"#{username} made a comment on #{post_date}. It says:\\n'#{content}'\\n\"\nend\n```\n\nЗдесь мы специально вызываем API, чтобы получить комментарии (), указав имя репозитория (`issue_comments`), и идентификатор запроса на вытягивание, который мы заинтересованы (`octocat/Spoon-Knife``1176`). После этого мы просто проходим по комментариями, чтобы получить информацию о каждом из них.\n\n## Комментарии к строке запроса на вытягивание\n\nВ представлении различий можно начать обсуждение определенного аспекта отдельного изменения, внесенного в запрос на вытягивание. Эти комментарии находятся в отдельных строках в измененном файле. URL-адрес конечной точки для этого обсуждения поступает из [конечной точки для управления проверка запроса на вытягивание](/ru/enterprise-server@3.21/rest/pulls/comments).\n\nВ следующем коде извлекаются все комментарии к запросу на вытягивание, сделанные для файлов, с учетом номера одного запроса на вытягивание:\n\n```ruby\nrequire 'octokit'\n\n# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!\n# Instead, set and test environment variables, like below\nclient = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']\n\nclient.pull_request_comments(\"octocat/Spoon-Knife\", 1176).each do |comment|\n  username = comment[:user][:login]\n  post_date = comment[:created_at]\n  content = comment[:body]\n  path = comment[:path]\n  position = comment[:position]\n\n  puts \"#{username} made a comment on #{post_date} for the file called #{path}, on line #{position}. It says:\\n'#{content}'\\n\"\nend\n```\n\nВы заметите, что это очень похоже на приведенный выше пример. Различия между этим представлением и комментарием к запросу на вытягивание кроются в направлении беседы.\nКомментарий, сделанный в запросе на вытягивание, должен относиться к общему направлению кода. Комментарий, сделанный в рамках проверки запроса на вытягивание, должен касаться реализации конкретного изменения в файле.\n\n## Комментарии к фиксации\n\nПоследний тип комментариев относится к отдельным фиксациям. По этой причине они используют конечную точку для управления комментариями[ фиксации](/ru/enterprise-server@3.21/rest/commits#get-a-commit-comment).\n\nЧтобы получить комментарии к фиксации, необходимо использовать SHA1 фиксации.\nДругими словами, вы не будете использовать идентификатор, связанный с запросом на вытягивание. Приведем пример:\n\n```ruby\nrequire 'octokit'\n\n# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!\n# Instead, set and test environment variables, like below\nclient = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']\n\nclient.commit_comments(\"octocat/Spoon-Knife\", \"cbc28e7c8caee26febc8c013b0adfb97a4edd96e\").each do |comment|\n  username = comment[:user][:login]\n  post_date = comment[:created_at]\n  content = comment[:body]\n\n  puts \"#{username} made a comment on #{post_date}. It says:\\n'#{content}'\\n\"\nend\n```\n\nОбратите внимание, что этот вызов API извлечет комментарии к одной строке, а также комментарии для всей фиксации."}