Самое развитое расширение magit/github для emacs для запросов на вытягивание.

Меня особенно интересуют пул-реквесты, редактирование проблем и привязка их к коммитам, а также другие вещи, которые мне обычно приходится использовать hub в командной строке для. Тем не менее, я начал использовать magit, и мне очень нравятся сочетания клавиш и общий интерфейс — я бы хотел остаться в emacs и для этой части, вместо того, чтобы держать открытой дополнительную оболочку для запросов на вытягивание, проблем и т. д.

Пакеты, которые могут добавить большую часть функциональности github в magit, которые я смог найти:

Может ли кто-нибудь, связанный с этими проектами, порекомендовать, как их сравнить и что лучше всего подходит для интеграции запросов на включение в среду magit?


person Mittenchops    schedule 02.06.2014    source источник
comment
Вы можете создавать пользовательские функции, которые используют call-process и set-process-sentinel, и за кулисами выполнять оболочку, чтобы вы никогда не чувствовали, что покидаете текущий буфер - библиотеки, о которых вы упомянули, в любом случае обрушиваются. Если нужная вам функция не существует, просто создайте ее, как несвязанную функцию по следующей ссылке (которая отправляет в несколько репозиториев): stackoverflow.com/a/23178396/2112489   -  person lawlist    schedule 02.06.2014
comment
Редакторы всегда закрывают вопросы, запрашивающие рекомендации, но я хочу привести ответ, который я получил здесь снова, как прекрасный пример того, почему запрос рекомендаций по программному обеспечению может быть замечательным и полностью соответствовать целям SO, если все сделано правильно. Разработчик пакета предложил отличное сравнение опций и их истории --- это /именно/ то, что мне было нужно и почему это фантастически полезно!   -  person Mittenchops    schedule 04.06.2014


Ответы (2)


Со временем я реализую такие вещи в Magit (я сопровождаю), но сначала мне нужно выпустить релиз.

Старая устаревшая информация: К сожалению, в настоящее время также нет сторонних расширений, которые могли бы выполнять эту роль. magithub уже давно сломан. magit-gh-pulls (автор Yann, мой предшественник на посту сопровождающего Magit) также не синхронизировался с изменениями в Magit. Я пытался исправить это некоторое время назад, но сдался, когда стало ясно, что это приведет к полной перезаписи . gh.el также написано Yann и используется magit-gh-pulls. Я внес свой вклад в него в прошлом, но в конце концов перестал его использовать, потому что (а) он использует url.el, и это оказалось очень ненадежным (б) это слишком сложно.

Поэтому я боюсь, что в настоящее время нет пакета, который делает то, что вы хотите. Если вы хотите написать его самостоятельно, я рекомендую вам использовать request.el, а затем реализовывать только те части API Github, которые вам действительно нужны, чтобы избежать чрезмерной разработки.

Изменить: по состоянию на октябрь 2015 г. magit-gh-pulls снова поддерживается, но больше не является официальным расширением. Лично я им не пользуюсь, так как считаю, что должно быть больше или меньше. В настоящее время я использую «меньше» в форме magit-branch-pull-request из библиотеки magit-rockstar. Несмотря на то, что я поддерживаю эту библиотеку, я не считаю ее официальным расширением — она предоставляется как есть. Эта функция очень проста, вы даете ей номер выпуска, и она создает для вас ветку, вот и все.

Редактирование в сентябре 2016 г.: я написал ghub.el и glab.el вместо gh.el. В основном они предназначены для моего личного использования и предоставляют очень мало, в основном они дают вам такие функции, как ghub-get (resource &optional params data noerror), затем вам нужно просмотреть соответствующую документацию по API, чтобы выяснить, что resource, params и data вы должны использовать. Также обработка ошибок не очень хороша, и в настоящее время используется url.el. Я намереваюсь в конечном итоге улучшить оба, используя libcurl через некоторое время после выпуска Emacs с поддержкой ffi.

Редактировать в январе 2020 г. Более года назад у меня выпущен forge.

Forge позволяет вам работать с кузницами Git, такими как Github и Gitlab, с комфортом Magit и остальной части Emacs.

person tarsius    schedule 02.06.2014
comment
Какие еще мысли по этому поводу спустя почти год? Я только что увидел, что у атома есть плагин для красивой поддержки просмотра комментариев запроса на вытягивание github, встроенных в редактор, что было бы красиво в magit или какой-то интеграции magit + github (плагин atom для справки github.com/philschatz/atom-pull-requests), не знаю, где они лучше всего подходят. - person wonderfulthunk; 09.08.2016
comment
Я надеюсь, что наш вклад в magit kickstarter даст толчок к этому. - person Micah Elliott; 20.09.2017
comment
Обязательно будет! - person tarsius; 21.09.2017

Вы можете получить простую «ручную» поддержку Github, установив magit-git-executable на "hub". Затем вы можете использовать все hub команды и функции через magit-git-command (привязанные к : в буферах Magit). По крайней мере, это позволяет вам взаимодействовать с Github через Emacs/Magit.

Хотя обратите внимание, что на момент написания этой статьи это не будет работать, потому что релизная версия hub не распознает опцию --literal-pathspecs, которую использует Magit (см. здесь). Так что до следующего релиза вам нужно установить хаб из самого последнего источника: https://github.com/github/hub#source

person Ryan C. Thompson    schedule 26.10.2015
comment
У меня это работает локально (замена magit-git-executable на "hub"), и оно нормально работает с концентратором версии 2.2.3. У него есть неприятный побочный эффект, заключающийся в том, что каждая операция magit замедляется как минимум на порядок, если не больше. - person wonderfulthunk; 09.08.2016
comment
Действительно, установка magit-git-executable на "hub" сильно замедляет работу. Я нашел золотую середину в настройке magit, чтобы заменить git на концентратор только при интерактивном выполнении команды через magit-git-command: github.com/DarwinAwardWinner/dotemacs/blob/master/ - person Ryan C. Thompson; 10.08.2016