Как получить электронную почту для толчков GitHub? - PullRequest
22 голосов
/ 18 ноября 2010

Кто-нибудь придумал хороший способ получать электронные письма, когда коммиты отправляются в репозиторий GitHub - который включает в себя изменение файлов, измененных?* не включает разность)

Мега бонусные баллы, если различия раскрашены с помощью встроенного CSS, который можно просмотреть в Gmail.

Ответы [ 4 ]

9 голосов
/ 25 января 2013

Я написал небольшой WebHook, который точно заполняет этот пробел: gitdub . Он использует git-notifier для отправки одного письма за коммит.

4 голосов
/ 18 ноября 2010

Вы правы, хук службы электронной почты GitHub не включает diff: в данный момент это запрос функции .

J-16 SDIZ также верно, git-hook-update-notify-email будет выполняться только локально, а не на стороне GitHub.

Это не значит, что указанный сценарий не может помочь: идея была бы

  • установить на вашем стороне голое репо, клонируя репозиторий GitHub
  • установка клона этого базового репо
  • есть задание cron (или задание Windows), извлекающее репозиторий GitHub каждые 10 минут
  • немедленно подтолкнуть к локальному безналичному репо

В местном репо без обнажения вы можете:

  • либо используйте ловушку предварительного получения (которую , как описано в книге Git , можно использовать для вычисления diff между old-rev и new-rev)
  • или используйте вышеупомянутый git-hook-update-notify-email

В обоих случаях это означает локальную настройку этого вида услуг, что не идеально.

2 голосов
/ 27 сентября 2012

Способ сделать это, добавив скрипт ловушки уведомлений, который отправляет данные в вашу систему, с каждым коммитом, который был перенесен в github.

Например: полезная нагрузка состоит из всех примененных коммитов, каждый из которых имеет идентификатор:

{
  :before     => before,

  :after      => after,

  :ref        => ref,

  :commits    => [{

    :id        => commit.id, <--- here
[...]

Второй шаг - заставить ваш скрипт вызывать github, используя github API, который выбирает каждый коммит, включенный в полезную нагрузку. Ответ содержит различия для каждого файла, которые затем вы можете отправить разработчикам по электронной почте.

Например: http://developer.github.com/v3/repos/commits/#get-a-single-commit

GET /repos/:owner/:repo/commits/:sha

: sha - это идентификатор коммита, для которого вы получаете код, и ответ выглядит так:

[...]

 "files": [

    {
      "filename": "file1.txt",
      "additions": 10,
      "deletions": 2,
      "changes": 12,
      "status": "modified",
      "raw_url": "https://github.com/octocat/Hello-World/raw/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "blob_url": "https://github.com/octocat/Hello-World/blob/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "patch": "@@ -29,7 +29,7 @@\n....." <---- HERE
    } 
[...]

Надеюсь, это поможет. Пожалуйста, спросите, если вам нужно больше информации о том, как это сделать.

2 голосов
/ 27 сентября 2012

Может не быть идеальным ответом для вас, но если вы настроите gitolite на своем собственном сервере, вы можете настроить git-commit-notifer , получить красивые цветные сообщения электронной почты и неограниченное количество учетных записей git, поскольку у вас есть сервер. Я делаю это, и я никогда не оглядывался назад.

У вас нет сервера? Вы можете получить микро-Amazon EC2 экземпляр по очень низкой цене (15 долларов в месяц). У нас до 12 разработчиков и 10 git-репозиториев, и все это прекрасно работает на микроэкземплярах.

...