저장소 변경에 대한 이메일 알림을 보내는 Git 후크


101

일련의 변경 사항이 업스트림 저장소로 푸시 될 때마다 요약 이메일을 보내도록 적절한 Git 후크를 구성하려면 어떻게해야합니까?


어떤 자식에 대한 버전 업데이트 (새 레이블)을 위해 사용할 수있는 REPO git-notifier.com을 이메일 알림 (무료) 또는 SMS 알림을 보내도록 (유료)
SCHOLTZ

답변:


94

이 작업을 수행하는 또 다른 현대적인 방법은 아래 Chords에서 제안한 것처럼 git-multimail 을 사용하는 것 입니다.


이것이 2009 년에 당신이 한 방법입니다.

당신은 같은 것을 추가 할 수 있습니다 $ GITDIR / 훅 훅 - 수신 후 당신에게, 또는 소스의 contrib 디렉토리에있는 스크립트를 사용하여 (여기서 가능)


내 후크에서 해당 스크립트를 참조하는 경우 참조 된 스크립트가 업스트림 호스트에 있어야합니까, 아니면 로컬에 있어야합니까?
헤드는

4
후크를 실행하는 호스트이므로 수신 후의 경우 업스트림 호스트 (커밋 후 후크에는 커밋을 실행중인 호스트의 스크립트가 필요함).
mwalling

2
아,하지만 당신은 대답을 받아 들일 수 있고 둘 다 더 많은 명성을 얻을 것입니다!
Pat Notz

나를 얻은 부분은 수신자 목록을 설정하는 것이 었습니다. 나는 마침내 git config를 사용해야한다는 것을 알아 냈다 : git config hooks.mailinglist "person1@example.com, person2@example.com"
ewalk

4
이 답변의 링크가 더 이상 활발하게 개발되고 있지 않다는 점은 주목할 가치가 있습니다. 대신 readme에 언급 된 multimail을 사용 하십시오.
Chords

19

내가 찾은 가장 간단한 해결책은 다음과 같습니다.

1) github.com에서 gitHub 계정에 로그인합니다.

2) 기본 탭에서 설정을 클릭하십시오.

3) 기본 탐색에서 서비스 후크를 선택하십시오.

4) 사용 가능한 후크에서 이메일 선택

5) 필드에 이메일 주소를 입력 주소

6) 작성자로부터 보내기 확인란을 선택합니다.

7) 체크 박스 활성화

8) 업데이트 설정을 클릭하십시오

선택 사항 : 테스트를 위해 테스트 후크 를 클릭하고 이메일을 받아야하는받은 편지함을 확인할 수 있습니다.

또한 프로세스에 따라 만들어진 이미지가 있습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력

그리고 이제 결승전을 위해 제 측에서 테스트되고 승인 된 답을 얻었습니다.

gitHub의 Service Hooks-> Email이 최대 2 명의 수신자 만 허용 할 때 모든 개발 팀원에게 이메일을 보내는 방법} .

대답은 Service Hook-> Email @ GitHub && Google 그룹의 조합입니다.

  1. Google 계정에 처음 로그인
  2. Google 그룹스로 이동 하여 상단에서 그룹 만들기를 클릭합니다.
  3. 그룹 이름, 그룹 이메일 주소 (GitHub 서비스 후크-> 이메일 주소에 복사 / 붙여 넣기), 그룹 설명을 입력합니다.
  4. 상단의 만들기 버튼을 클릭하면 이제 새 그룹이 생성됩니다.
  5. 그 후 왼쪽 메뉴에서 구성원 초대를 누르고 팀 동료의 이메일 주소를 입력하십시오.
  6. 그 히트 후 보내기 초대 (당신의 회원이 초대를 수락 할 때) 그들은 지금이 그룹의 정식 회원입니다
  7. 왼쪽 메뉴에서 모든 구성원을 클릭하고 배달 이라는 네 번째 열 을 선택하면 모든 팀 구성원이 모든 이메일 옵션을 가지고 있어야합니다 .
  8. 그 후 저는 Mr. Clement Escoffier에게 감사를 표 하고 그의 가이드 라인을 따르십시오 @ Clement Escoffier :: Send Github는이 를 완료하는 방법에 대해 Google 그룹커밋 합니다. {클레멘트 감사합니다 :)}
  9. 여기에서 링크를 사용할 수 없게되면 내 gDocs @ PDF 버전의 Clements 가이드에 대한 또 다른 링크가 있습니다.

19
이것은 github 솔루션입니다. 질문의 어떤 것도 사용자가 github를 사용하고 있다는 것을 알려주지 않습니다. 그래도 github에 대한 질문에 대한 완벽한 대답 인 것 같습니다.
daramarak 2014

3
이 이메일 서비스는 2018 년 10 월 이후에 중단 될 예정입니다. 따라서 해당 시점 이후에는이 답변이 유효하지 않습니다. developer.github.com/changes/...
Jeegar 파텔에게

10

이것은 저장소로 푸시 할 때마다 사용자에게 이메일 알림을 보내는 방법입니다.

Git 커밋 이메일 알림 설정

Andy Parkins의 스크립트를 기반으로합니다. 이메일을 보내는 데 사용되는 SMTP로 변경합니다. 물론 Gmail의 SMTP도 사용할 수 있습니다.


5

Robin Sommergit-notifier 는 다음 형식으로 매우 멋진 요약도 생성합니다.

Subject: [git/git-notifier] master: Adding www target to Makefile. (7dc1f95)

Repository : ssh://<removed>/git-notifier

On branch  : master

>---------------------------------------------------------------

commit 7dc1f95c97275618d5bde1aaf6760cd7ff6a6ef7
Author: Robin Sommer <robin@icir.org>
Date:   Sun Dec 19 20:21:38 2010 -0800

    Adding www target to Makefile.

>---------------------------------------------------------------

 Makefile |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index e184c66..9c9951b 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,8 @@ VERSION   = 0.1

 DISTFILES = git-notifier README COPYING

+WWW = $(HOME)/www/git-notifier
+
 all:

 dist:
@@ -13,3 +15,7 @@ dist:
    cp $(DISTFILES) git-notifier-$(VERSION)
    tar czvf git-notifier-$(VERSION).tgz git-notifier-$(VERSION)
    rm -rf git-notifier-$(VERSION)
+
+www: dist
+   rst2html.py README >$(WWW)/index.html
+   cp git-notifier-$(VERSION).tgz $(WWW)

4

hooks.showrev를 설정해도 구별 할 수있는 차이가 없습니까? :-/

샘플 conf :

# less users/cj.git/config 
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
[hooks]
        mailinglist = cj@yoga.ee
        showrev = "git show -C %s; echo"
        emailprefix = "[sabu gitosis server] "

아, git.kernel.org 버전은 hooks.showrev를 존중했지만 기본 git 설치 스크립트는 그렇지 않았습니다! 방금 스크립트 chmod a + x를 교체하면 작동합니다! 그래도 showrev 구문을 이해해야합니다
HiQ CJ

diff를 표시하는 유사한 문제 : stackoverflow.com/questions/804601/…
HiQ CJ

1

나는 이것을 할 수 있었지만 Alexandre Julliard의 다른 (perl) 스크립트가 아닌 contrib 스크립트를 사용하도록 선택해야했습니다. 더 멋지고 구성 가능한 것처럼 보이지만 접미사를 사용하면 "-s"를 허용하는 메일 명령이 없었습니까? 내 방법은 다음과 같습니다.

http://pastie.textmate.org/695323

전체 패치, gitweb 링크 및 커밋 그래프와 같은 더 많은 정보를 표시하는 것도 좋지만이 스크립트는 첫 번째 작업 만 수행 할 수 있습니다.

어쨌든 건배와 제안에 감사드립니다!



0

Github 전용이므로 정확한 답은 아니지만 Github를 사용하는 경우 "서비스 후크"를 구성하는 것은 매우 쉽습니다.
모니터링하려는 각 저장소에 대해 설정 / 서비스 후크를 입력합니다.
Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello 및 이메일과 같은 사용 가능한 통합 기능이 많이 있습니다 ....
간단히 이메일을 선택하고 그룹 이메일 주소로 피드하십시오.
이메일 알림을 사용하여 개발자를 동기화합니다.


0

GitLab을 사용하는 경우이를 위해 'Email-on-push'프로젝트 서비스를 사용할 수 있습니다. 프로젝트 설정의 서비스에서 찾을 수 있습니다.


0

사전 커밋을 사용할 수 있습니다.

#!/usr/bin/env ruby

require 'mail'

Mail.defaults do
  delivery_method :smtp,
    address: 'smtp.gmail.com',
    port: 587,
    user_name: '...',
    password: '...',
    authentication: 'plain',
    enable_starttls_auto: true
end

changes=`git diff --cached --unified=0 Gemfile Bowerfile`

unless changes.empty?
  Mail.deliver do
    from     '...'
    to       '...'
    subject  '[PROJECT] Plese confirm team can use libraries'
    body     changes
  end
end

설치:

cd project
cp pre-commit .git/hooks
chmod +x .git/hooks/pre-commit
gem install mail

테스트:

echo "# some change" >> Gemfile && git commit -m 'some change' Gemfile

0

에서 GitLab 저장소 미만 :

  1. 설정을 클릭하십시오.
  2. 설정이 확장되면 통합 이 표시 됩니다. 그것을 클릭하십시오.

푸시시 새 페이지가 열립니다.

  1. 커미터 에서 보내기 를 찾아 선택 합니다.
  2. 또한 마지막 필드에 쉼표로 구분 된 수신자 를 입력합니다 .

또한 알림 본문에서 민감한 코드 차이를 제외하는 코드 차이 비활성화 옵션이 있습니다. 선택 사항입니다.

자세한 내용은 여기를 클릭하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.