Git hook untuk mengirim notifikasi email tentang perubahan repo


101

Bagaimana cara mengonfigurasi Git hook yang sesuai untuk mengirim email ringkasan setiap kali sekumpulan perubahan didorong ke repositori upstream?


Untuk pembaruan versi (label baru) untuk repo git apa pun, Anda dapat menggunakan git-notifier.com untuk mengirim pemberitahuan Email (gratis) atau pemberitahuan SMS (Berbayar)
Scholtz

Jawaban:


94

Cara lain yang lebih modern untuk melakukan ini adalah dengan git-multimail , seperti yang disarankan oleh Chords di bawah ini.


Beginilah cara Anda melakukannya di tahun 2009.

Anda dapat menambahkan sesuatu seperti ini ke hook pasca-terima Anda di $ GITDIR / hooks, atau menggunakan skrip di direktori contrib source (Tersedia di sini)


Jika saya mereferensikan skrip itu di hook saya, apakah skrip yang direferensikan harus berada di host hulu atau secara lokal?
Pergi

4
Host yang mengeksekusi hook, jadi dalam kasus post-accept, host upstream (sedangkan hook post-commit akan membutuhkan skrip pada host tempat Anda menjalankan commit).
mwalling

2
Ahhh, tapi kamu bisa menerima jawabannya dan kamu berdua akan mendapatkan reputasi yang lebih baik!
Pat Notz

Bagian yang mendorong saya adalah menyetel daftar penerima. Akhirnya saya menemukan bahwa Anda perlu menggunakan git config: git config hooks.mailinglist "person1@example.com, person2@example.com"
ewalk

4
Perlu dicatat bahwa tautan dalam jawaban ini tidak lagi dalam pengembangan aktif. Sebagai gantinya, gunakan multimail , yang disebutkan di readme.
Chords

19

Inilah solusi paling sederhana yang saya temukan:

1) Masuk ke akun gitHub Anda di github.com

2) Di tab utama, klik Pengaturan

3) Dari navigasi utama pilih Service Hooks

4) Dari Hooks yang Tersedia pilih Email

5) Isi alamat email Anda di kolom Address

6) Centang kotak Kirim dari Penulis

7) Centang kotak Aktif

8) Klik Pengaturan Pembaruan

Opsional: Anda dapat mengklik Test Hook untuk pengujian, periksa kotak masuk Anda, Anda akan menerima email.

Juga ada gambar yang dibuat menurut prosesnya:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Dan sekarang untuk grand final saya punya jawaban yang diuji dan disetujui di pihak saya.

Cara mengirim email ke SEMUA anggota tim pengembangan, ketika Service Hooks-> Email gitHub hanya mengizinkan maksimal 2 penerima} .

Jawabannya adalah kombinasi grup Service Hook-> Email @ GitHub && Google

  1. Pertama login ke akun google Anda
  2. Buka Google Grup dan di bagian atas klik Buat Grup
  3. Ketik Nama Grup, Alamat email grup (akan disalin / tempel ke GitHub Service Hook-> Alamat Email), Deskripsi grup
  4. Setelah itu tekan tombol Buat di bagian atas, grup baru Anda harus dibuat sekarang
  5. Setelah itu di menu sebelah kiri tekan Undang anggota dan ketik alamat email rekan satu tim Anda
  6. Setelah itu tekan Kirim undangan (ketika anggota Anda menerima undangan) mereka sekarang secara resmi menjadi anggota grup ini
  7. Di menu sebelah kiri, klik Semua Anggota dan centang kolom ke-4 yang disebut Pengiriman , setiap anggota tim harus memiliki opsi Semua Email .
  8. Setelah itu saya ingin memberi penghargaan kepada Tn. Clement Escoffier dan mohon ikuti panduannya @ Clement Escoffier :: Kirim komitmen Github ke Google Grup tentang cara menyelesaikannya. {Terima kasih Clement :)}
  9. Jika tautan tidak tersedia, berikut adalah tautan lain ke panduan Clements versi gDocs @ PDF saya

19
Ini adalah solusi github. Tidak ada dalam pertanyaan yang memberi tahu saya bahwa pengguna menggunakan github. Sepertinya itu adalah jawaban yang sempurna untuk pertanyaan tentang github.
daramarak

3
Layanan email ini akan dihentikan setelah Oktober 2018. Jadi jawaban ini tidak berlaku setelah itu. developer.github.com/changes/…
Jeegar Patel

10

Ini adalah cara saya mengirim notifikasi email ke pengguna setiap kali seseorang mendorong ke repositori.

Menyiapkan Pemberitahuan Email Git Commit

Ini didasarkan pada skrip Andy Parkins. Saya mengubahnya menjadi SMTP bekas untuk mengirim email. Tentu saja, SMTP gmail juga dapat digunakan.


5

Robin Sommer 's git-pemberitahu menghasilkan juga ringkasan sangat bagus dalam format berikut:

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

pengaturan hooks.showrev tidak membuat perbedaan yang bisa dibedakan? : - /

Contoh 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] "

Ah, ternyata versi git.kernel.org menghormati hooks.showrev, tetapi skrip instalasi git default tidak! Baru saja mengganti skrip, chmod a + x dan kemudian berfungsi! Masih perlu memahami sintaks showrev
HiQ CJ

Masalah serupa dengan menampilkan perbedaan di sini: stackoverflow.com/questions/804601/…
HiQ CJ

1

Saya berhasil melakukan ini, tetapi harus memilih untuk menggunakan script contrib, bukan script (perl) lainnya oleh Alexandre Julliard. Tampaknya lebih bagus dan lebih dapat dikonfigurasi, tetapi dengan postfix saya tidak memiliki perintah mail yang akan menerima "-s"? Inilah cara saya:

http://pastie.textmate.org/695323

Akan menyenangkan untuk menampilkan beberapa info lagi, seperti patch lengkap, tautan gitweb dan grafik komit juga, tetapi skrip ini hanya dapat melakukan yang pertama - jika saya bermain-main dengan hooks.showrev sepertinya.

Pokoknya, selamat dan terima kasih atas sarannya!



0

Bukan jawaban lengkap karena ini khusus Github, tetapi jika Anda kebetulan menggunakan Github, sangat mudah untuk mengkonfigurasi "Service Hooks".
Untuk setiap repositori yang ingin Anda pantau, masuk ke Settings / Service Hooks.
Ada banyak integrasi yang tersedia, seperti Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello, dan Email ....
Cukup pilih email dan beri makan dengan alamat email grup.
Kami menggunakan pemberitahuan email untuk menyinkronkan pengembang kami.


0

Jika Anda menggunakan GitLab, Anda dapat menggunakan layanan proyek 'Email-on-push' untuk ini, ini dapat ditemukan di bawah layanan dalam pengaturan proyek.


0

Anda dapat menggunakan pra-komitmen:

#!/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

Install:

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

Uji:

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

0

Di GitLab di bawah repositori Anda:

  1. Klik Pengaturan.
  2. Saat pengaturan meluas di sana, Anda akan melihat Integrasi . Klik di atasnya.

Ada membuka halaman baru Email di push

  1. Cari dan pilih Kirim dari pelaku .
  2. Juga, masukkan Penerima dengan dipisahkan koma yang terletak di bidang terakhir.

Juga ada opsi untuk Disable code diffs yang mengecualikan perbedaan kode sensitif di badan notifikasi. Ini opsional.

Untuk lebih jelasnya: Klik Di Sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.