Git hook เพื่อส่งอีเมลแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลง repo


101

ฉันจะกำหนดค่า Git hook ที่เหมาะสมเพื่อส่งอีเมลสรุปได้อย่างไรเมื่อใดก็ตามที่มีการพุชชุดการเปลี่ยนแปลงไปยังที่เก็บอัพสตรีม


สำหรับการอัปเดตเวอร์ชัน (ป้ายกำกับใหม่) สำหรับ git repo คุณสามารถใช้git-notifier.comเพื่อส่งการแจ้งเตือนทางอีเมล (ฟรี) หรือการแจ้งเตือนทาง SMS (ชำระเงิน)
Scholtz

คำตอบ:


94

อีกวิธีหนึ่งที่ทันสมัยกว่านี้คือการใช้git-multimailตามที่Chordsแนะนำด้านล่าง


นี่คือวิธีที่คุณทำได้ในปี 2009

คุณสามารถเพิ่มสิ่งนี้ลงในเบ็ดหลังการรับของคุณใน $ GITDIR / hooks หรือใช้สคริปต์ในไดเร็กทอรี Contrib ของซอร์ส(มีให้ที่นี่)


หากฉันอ้างอิงสคริปต์นั้นใน hooks ของฉันสคริปต์ที่อ้างอิงต้องอยู่บนโฮสต์ต้นน้ำหรือภายในเครื่องหรือไม่
หัวหน้า

4
โฮสต์ที่เรียกใช้งาน hook ดังนั้นในกรณีของการโพสต์การรับโฮสต์อัปสตรีม (ในขณะที่โพสต์คอมมิต hook จะต้องใช้สคริปต์บนโฮสต์ที่คุณกำลังรันการคอมมิต)
mwalling

2
อ่า แต่คุณยอมรับคำตอบได้และคุณทั้งคู่จะได้รับชื่อเสียงมากขึ้น!
Pat Notz

ส่วนที่ทำให้ฉันได้รับคือการตั้งค่ารายชื่อผู้รับ ในที่สุดฉันก็คิดได้ว่าคุณต้องใช้ git config: git config hooks.mailinglist "person1@example.com, person2@example.com"
ewalk

4
เป็นที่น่าสังเกตว่าลิงก์ในคำตอบนี้ไม่ได้อยู่ระหว่างการพัฒนาอีกต่อไป ให้ใช้มัลติเมลแทนซึ่งกล่าวถึงใน readme
คอร์ด

19

นี่คือวิธีแก้ปัญหาที่ง่ายที่สุดที่ฉันพบ:

1) ลงชื่อเข้าใช้บัญชี gitHub ของคุณบนgithub.com

2) ในแท็บหลักคลิกที่การตั้งค่า

3) จากการนำทางหลักให้เลือกService Hooks

4) จากตะขอที่มีให้เลือกอีเมล

5) กรอกที่อยู่อีเมลของคุณในฟิลด์ที่อยู่

6) เลือกช่องทำเครื่องหมายส่งจากผู้เขียน

7) เลือกช่องทำเครื่องหมายใช้งานอยู่

8) คลิกที่Update Settings

ไม่บังคับ: คุณสามารถคลิกที่Test Hookเพื่อทำการทดสอบตรวจสอบกล่องจดหมายของคุณว่าคุณควรได้รับอีเมล

นอกจากนี้ยังมีภาพที่สร้างขึ้นตามกระบวนการ:

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

และตอนนี้สำหรับรอบชิงชนะเลิศที่ยิ่งใหญ่ฉันมีคำตอบซึ่งผ่านการทดสอบและรับรองอยู่เคียงข้างฉัน

วิธีส่งอีเมลถึงสมาชิกในทีมพัฒนาทั้งหมดเมื่อ Service Hooks-> Email ของ gitHub อนุญาตให้มีผู้รับสูงสุด 2 คนเท่านั้น}

คำตอบคือการรวมกันของService Hook-> Email @ GitHub && Google groups

  1. เข้าสู่ระบบบัญชี Google ของคุณก่อน
  2. ไปที่Google Groupsและคลิกที่ด้านบนสุดที่สร้างกลุ่ม
  3. พิมพ์ชื่อกลุ่มที่อยู่อีเมลของกลุ่ม (จะคัดลอก / วางใน GitHub Service Hook-> ที่อยู่อีเมล) คำอธิบายกลุ่ม
  4. หลังจากนั้นกดปุ่มสร้างที่ด้านบนกลุ่มใหม่ของคุณควรถูกสร้างทันที
  5. หลังจากนั้นในเมนูทางด้านซ้ายกดเชิญสมาชิกและพิมพ์ที่อยู่อีเมลของเพื่อนในทีมของคุณ
  6. หลังจากนั้นกดส่งคำเชิญ (เมื่อสมาชิกของคุณตอบรับคำเชิญ) ตอนนี้พวกเขาเป็นสมาชิกของกลุ่มนี้อย่างเป็นทางการ
  7. ในเมนูบนคลิกซ้ายบนสมาชิกทั้งหมดและตรวจสอบคอลัมน์ที่ 4 เรียกว่าจัดส่งสมาชิกในทีมทุกคนควรมีตัวเลือก ทั้งหมดอีเมล์
  8. หลังจากนั้นฉันต้องการให้เครดิตนาย Clement Escoffierและโปรดปฏิบัติตามหลักเกณฑ์ของเขาที่ @ Clement Escoffier :: ส่ง Github ให้คำมั่นสัญญากับ Google Groupในการดำเนินการให้เสร็จสิ้น {ขอบคุณ Clement :)}
  9. หากลิงก์ไม่สามารถใช้งานได้ที่นี่จะเป็นลิงก์อื่นไปยังคู่มือ Clements เวอร์ชัน gDocs @ PDFของฉัน

19
นี่คือโซลูชัน github ไม่มีอะไรในคำถามที่บอกฉันว่าผู้ใช้กำลังใช้ github ดูเหมือนว่าจะเป็นคำตอบที่สมบูรณ์แบบสำหรับคำถามบน github
daramarak

3
บริการอีเมลนี้จะหยุดให้บริการหลังเดือนตุลาคม 2018 ดังนั้นคำตอบนี้จึงใช้ไม่ได้หลังจากนั้น developer.github.com/changes/…
Jeegar Patel

10

นี่เป็นวิธีการส่งอีเมลแจ้งเตือนไปยังผู้ใช้ทุกครั้งที่มีคนกดไปที่ที่เก็บ

การตั้งค่า Git Commit Email Notification

มันขึ้นอยู่กับสคริปต์ของ Andy Parkins ฉันเปลี่ยนเป็น SMTP ที่ใช้ในการส่งอีเมล แน่นอนว่าสามารถใช้ SMTP ของ gmail ได้ด้วย


5

ตัวแจ้งเตือนคอมไพล์ของRobin Sommerยังสร้างบทสรุปที่ดีมากในรูปแบบต่อไปนี้:

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 แต่สคริปต์การติดตั้งคอมไพล์เริ่มต้นไม่ได้! เพียงแค่แทนที่สคริปต์ chmod a + x แล้วก็ใช้งานได้! ยังคงต้องเข้าใจไวยากรณ์ของ showrev
HiQ CJ

ปัญหาที่คล้ายกันกับการแสดงความแตกต่างที่นี่: stackoverflow.com/questions/804601/…
HiQ CJ

1

ฉันจัดการเพื่อทำสิ่งนี้ แต่ต้องเลือกใช้สคริปต์ที่มีส่วนร่วมไม่ใช่สคริปต์ (perl) อื่น ๆ โดย Alexandre Julliard ดูเหมือนว่าน่าสนใจและกำหนดค่าได้มากกว่า แต่ด้วย postfix ฉันไม่มีคำสั่งเมลที่จะยอมรับ "-s"? นี่คือวิธีของฉัน:

http://pastie.textmate.org/695323

มันจะเป็นการดีที่จะแสดงข้อมูลเพิ่มเติมเช่นแพทช์เต็มลิงก์ gitweb และกราฟคอมมิตด้วยเช่นกัน แต่สคริปต์นี้ทำได้เฉพาะครั้งแรกเท่านั้น - ถ้าฉันเล่นกับ hooks แสดงว่าดูเหมือนว่า

ยังไงก็เชียร์และขอบคุณสำหรับคำแนะนำ!



0

ไม่ใช่คำตอบที่สมบูรณ์เนื่องจากเป็น Github โดยเฉพาะ แต่ถ้าคุณบังเอิญใช้ Github การกำหนดค่า "Service Hooks" นั้นง่ายมาก
สำหรับแต่ละที่เก็บที่คุณต้องการตรวจสอบให้ป้อนการตั้งค่า / Service Hooks
มีการผสานรวมที่พร้อมใช้งานมากมายเช่น Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello และ Email ....
เพียงแค่เลือกอีเมลและป้อนด้วยที่อยู่อีเมลกลุ่ม
เราใช้การแจ้งเตือนทางอีเมลเพื่อซิงค์นักพัฒนาของเรา


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. เมื่อตั้งค่าการขยายตัวมีคุณจะเห็นIntegrations คลิกที่มัน

มีการเปิดหน้าใหม่อีเมลเมื่อผลักดัน

  1. ค้นหาและเลือกส่งจาก committer
  2. นอกจากนี้ให้ป้อนผู้รับโดยคั่นด้วยเครื่องหมายจุลภาคซึ่งอยู่ที่ช่องสุดท้าย

นอกจากนี้ยังมีตัวเลือกสำหรับปิดการใช้งานรหัสที่แตกต่างซึ่งยกเว้นรหัสที่ละเอียดอ่อนที่อาจแตกต่างกันในเนื้อหาการแจ้งเตือน เป็นทางเลือก

รายละเอียดเพิ่มเติม: คลิกที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.