Как вы прикрепляете новый запрос на перенос существующей проблемы на github?

Я не уверен, но у меня есть смутная память о создании запроса на github pull с "Issue 4" или что-то в заголовке, и он автоматически привязан к выпуску 4 в проекте, в который я его отправлял. Я попробовал это недавно, и это не сработало - вместо этого он создал новую проблему. Я не вижу таких параметров, как "Присоединить к выпуску" на странице запроса нового запроса, или "Открыть новый запрос на перенос для этой проблемы" на странице проблемы. Есть ли способ сделать это, чтобы помочь владельцам проектов сохранить свою страницу проблем и избежать дублирования?

Изменить. Чтобы уточнить, я знаю, что создание запроса на перенос всегда создает новую проблему. Я хотел бы вместо этого приложить запрос на перенос к существующей проблеме.

Ответ 1

Проект "hub" может сделать это:

https://github.com/defunkt/hub

В репозитории и ветке, из которых вы хотите отправить запрос на перенос:

$ hub pull-request -i 4

Это использует API GitHub и прикрепляет запрос на перенос текущей ветки к существующему номеру проблемы 4.


EDIT: Комментарий от @atomicules: Чтобы расширить ответ от @MichaelMior, полный пример:

$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE

Ответ 2

Добавление запроса на перенос к существующей проблеме восходящего потока легко предположить, что вы разветвлялись с использованием обычных средств github.

Просто сообщите об этом в своем сообщении о фиксации с помощью любого из поддерживаемых ключевых слов:

  • близко
  • закрывается
  • закрыт
  • фикс
  • исправления
  • фиксированный
  • Решимость
  • рассасывается
  • разрешить

Например: "this commit fixes # 116"

Текст, ссылающийся на проблему, не обязательно должен появляться в строке темы вашей фиксации.

Скопируйте свою фиксацию в репозиторий github, и запрос на добавление автоматически добавится к проблеме.

Примечание. Хотя это и не требуется, настоятельно рекомендуется совершить что-либо, что будет частью запроса на перенос, в отдельную ветвь, относящуюся к этой проблеме, поскольку будущая фиксация этой ветки будет добавлена ​​к запросу на pull ( автоматически github). Итак, если вы не создали отдельную ветвь, оставив ее на хозяине, а затем продолжаете развиваться, тогда все ваши несвязанные коммиты будут доступны для вашего запроса на тягу.

Ответ 3

Вы можете создать запрос Pull из существующей проблемы с API запроса Pull:

$ curl --user "smparkes" \
       --request POST \
       --data '{"issue": "15", "head": "smparkes:synchrony", "base": "master"}' \
       https://api.github.com/repos/technoweenie/faraday/pulls

Это создает запрос на перенос:

  • запросить technoweenie в проекте faraday (https://api.github.com/repos/ техновей/ faraday/pulls)
  • чтобы извлечь из ветки synchrony в smparkes 'fork ( "head": " smparkes: синхронизация" )
  • в ветку master в technoweenie fork ( "base": " master" )
  • и приложите запрос на pull для выпуска 15 ( "проблема": " 15" )
  • с автором запроса pull smparkes (--user " smparkes" )
  • вам будет предложено ввести пароль GitHub

Ответ 5

Этот другой ответ объясняет, как использовать cURL (curl), чтобы создать запрос Pull из проблемы через API GitHub. Heres, как это сделать, используя HTTPie (http), который производит более легкую для чтения и упрощенную команду

$ http --auth "<your-GitHub-username>" \
       POST \
       https://api.github.com/repos/<issue-repo-owner>/<issue-repo-name>/pulls \
       issue=<issue-number> head=<your-GitHub-username>:<your-fork-branch-name> base=<issue-repo-branch-name>

Затем введите ваш пароль GitHub при появлении запроса.

Объясненный пример

Вы вошли в GitHub с именем пользователя smparkes и пароль hunter2. Вы видели technoweenie s repo faraday, подумал о чем-то, что должно измениться, и сделал для него вопрос об этом репо, Проблема №15. Позже вы обнаружите, что никто другой не внес изменений, и у вас также есть время, чтобы сделать это самостоятельно. Вы fork faraday в свой аккаунт, затем напишите свои изменения и подтолкните их к своей вилке под веткой с именем синхронизация. Вы думаете, что technoweenie должен потянуть эти изменения в master ветвь своего репо. Это команда, которую вы пишете, чтобы преобразовать предыдущую проблему в запрос Pull для этой ситуации:

$ http --auth "smparkes" \
       POST \
       https://api.github.com/repos/technoweenie/faraday/pulls \
       issue=15 head=smparkes:synchrony base=master
http: password for [email protected]: hunter2

Теперь Проблема № 15 - это запрос Pull.

Ответ 6

если вы используете 2-factor-auth с github, вам нужно предоставить authtoken в качестве заголовка в запросе:

curl -u "<your_username>:<your_pw>" \
     --header 'X-GitHub-OTP: <your_authtoken>' \
     --request POST \
     --data '{"issue":"<issue_nr>", "head":"<your_username>:<your_forks_branchname>", "base":"<upstream_branch>"}' \
     https://api.github.com/repos/<upstream_user>/<upstream_repo>/pulls

Ответ 7

Вы также можете использовать Gub, чтобы отправить запросы на получение для своей проблемы.

Это также помогает вам использовать правильный стиль fork/pull-request.

Изменить: 10/5/2013

Чтобы получить Gub для подачи запроса на получение для проблемы № 123, вам необходимо запустить следующее:

$ gub start 123

Это создаст новую проблему с филиалом 123. Когда вы закончите работу над проблемой, выполните:

$ gub finish

Voila!

Примечание. Я автор Gub gem.

Ответ 8

Используя инструмент git-hub, вы можете сделать это с помощью

$> git hub pull attach 123

Это преобразует проблему № 123 в запрос на вывод № 123, тем самым поддерживая все обсуждения проблемы в одном месте.