Git hook để gửi thông báo qua email về các thay đổi trong repo


101

Làm cách nào để định cấu hình móc Git thích hợp để gửi email tóm tắt bất cứ khi nào một tập hợp các thay đổi được đẩy lên kho lưu trữ ngược dòng?


Để cập nhật phiên bản (nhãn mới) cho bất kỳ git repo nào, bạn có thể sử dụng git-notifier.com để gửi thông báo qua Email (miễn phí) hoặc thông báo SMS (Có trả phí)
Scholtz

Câu trả lời:


94

Một cách khác hiện đại hơn để thực hiện việc này là sử dụng git-multimail , theo gợi ý của Chords bên dưới.


Đây là cách bạn đã làm vào năm 2009.

Bạn có thể thêm thứ gì đó như thế này vào hook post-nhận của mình trong $ GITDIR / hooks hoặc sử dụng tập lệnh trong thư mục đóng góp của nguồn (Có sẵn tại đây)


Nếu tôi tham chiếu tập lệnh đó trong hook của mình, thì tập lệnh được tham chiếu có phải nằm trên máy chủ lưu trữ ngược dòng hoặc cục bộ không?
Đầu

4
Máy chủ đang thực thi hook, vì vậy trong trường hợp hậu nhận, máy chủ ngược dòng (trong khi hook post-commit sẽ cần tập lệnh trên máy chủ mà bạn đang chạy commit).
mwalling

2
Ahhh, nhưng bạn có thể chấp nhận câu trả lời và cả hai bạn sẽ nhận được nhiều danh tiếng hơn!
Pat Notz

Phần khiến tôi nhận được là thiết lập danh sách người nhận. Cuối cùng tôi đã phát hiện ra rằng bạn cần sử dụng git config: git config hooks.mailinglist "person1@example.com, person2@example.com"
ewalk

4
Cần lưu ý rằng liên kết trong câu trả lời này không còn được phát triển tích cực. Thay vào đó, hãy sử dụng multimail , được đề cập trong readme.
âm

19

Đây là giải pháp đơn giản nhất mà tôi đã tìm thấy:

1) Đăng nhập vào tài khoản gitHub của bạn trên github.com

2) Trong tab chính, nhấp vào Cài đặt

3) Từ điều hướng chính, chọn Service Hooks

4) Từ các Hook có sẵn, chọn Email

5) Điền địa chỉ email của bạn vào trường Địa chỉ

6) Chọn hộp kiểm Gửi từ Tác giả

7) Chọn hộp kiểm Hoạt động

8) Nhấp vào Cập nhật Cài đặt

Tùy chọn: Bạn có thể nhấp vào Test Hook để thử nghiệm, kiểm tra hộp thư đến của bạn mà bạn sẽ nhận được email.

Ngoài ra có những hình ảnh được thực hiện theo quy trình:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Và bây giờ cho trận chung kết lớn, tôi có câu trả lời đã được kiểm tra và phê duyệt ở bên cạnh tôi.

Cách gửi email tới TẤT CẢ các thành viên trong nhóm phát triển, khi Service Hooks-> Email của gitHub chỉ cho phép tối đa 2 người nhận} .

Câu trả lời là sự kết hợp của Service Hook-> Email @ GitHub && các nhóm Google

  1. Lần đầu tiên đăng nhập vào tài khoản google của bạn
  2. Đi tới Google Groups và ở trên cùng, nhấp vào Tạo nhóm
  3. Nhập Tên nhóm, Địa chỉ email nhóm (sẽ sao chép / dán vào GitHub Service Hook-> Địa chỉ Email), Mô tả nhóm
  4. Sau đó nhấn nút Tạo ở trên cùng, nhóm mới của bạn sẽ được tạo ngay bây giờ
  5. Sau đó, trong menu bên trái, nhấn Mời thành viên và nhập địa chỉ email của các thành viên trong nhóm của bạn
  6. Sau lần nhấn đó Gửi lời mời (khi các thành viên của bạn chấp nhận lời mời), họ hiện là thành viên chính thức của nhóm này
  7. Trong menu bên trái, nhấp vào Tất cả thành viên và kiểm tra cột thứ 4 có tên là Giao hàng , mọi thành viên trong nhóm nên có tùy chọn Tất cả email .
  8. Sau đó, tôi muốn ghi công ông Clement Escoffier và vui lòng làm theo các nguyên tắc của ông @ Clement Escoffier :: Gửi Github cam kết với Nhóm Google về cách hoàn thành việc này. {Cảm ơn Clement :)}
  9. Nếu liên kết không khả dụng thì đây là một liên kết khác đến hướng dẫn Clements phiên bản gDocs @ PDF của tôi

19
Đây là một giải pháp github. Không có gì trong câu hỏi cho tôi biết rằng người dùng đang sử dụng github. Có vẻ như nó là một câu trả lời hoàn hảo cho một câu hỏi trên github.
daramarak

3
Dịch vụ email này sẽ ngừng hoạt động sau tháng 10 năm 2018. Vì vậy, câu trả lời này không hợp lệ sau thời điểm đó. developer.github.com/changes/…
Jeegar Patel

10

Đây là cách của tôi để gửi thông báo qua email cho người dùng mỗi khi ai đó đẩy vào kho lưu trữ.

Thiết lập thông báo qua email cam kết Git

Nó dựa trên kịch bản của Andy Parkins. Tôi thay đổi nó thành SMTP đã sử dụng để gửi email. Tất nhiên, SMTP của gmail cũng có thể được sử dụng.


5

Trình thông báo git-thông báo của Robin Sommer cũng tạo ra các bản tóm tắt rất hay ở định dạng sau:

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

thiết lập hooks.showrev không tạo ra sự khác biệt rõ ràng? : - /

Conf mẫu:

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

À, hóa ra phiên bản git.kernel.org tôn trọng hooks.showrev, nhưng tập lệnh cài đặt git mặc định thì không! Chỉ cần thay thế tập lệnh, chmod a + x và sau đó nó hoạt động! Tuy nhiên cần phải hiểu showrev cú pháp mặc dù
hiQ CJ

Vấn đề tương tự với hiện diffs đây: stackoverflow.com/questions/804601/...
hiQ CJ

1

Tôi đã làm được điều này, nhưng phải chọn sử dụng tập lệnh đóng góp, không phải tập lệnh (perl) khác của Alexandre Julliard. Nó có vẻ đẹp hơn và dễ cấu hình hơn, nhưng với postfix, tôi không có lệnh mail nào chấp nhận "-s"? Đây là cách của tôi:

http://pastie.textmate.org/695323

Sẽ rất tuyệt nếu hiển thị thêm một số thông tin, chẳng hạn như bản vá đầy đủ, liên kết gitweb và biểu đồ cam kết, nhưng tập lệnh này chỉ có thể làm được điều đầu tiên - nếu tôi sử dụng hooks.showrev thì có vẻ như vậy.

Dù sao, cổ vũ và cảm ơn vì những gợi ý!



0

Không phải là một câu trả lời đầy đủ chính xác vì nó dành riêng cho Github, nhưng nếu bạn tình cờ sử dụng Github, bạn sẽ rất dễ dàng định cấu hình "Service Hooks".
Đối với mỗi kho lưu trữ bạn muốn theo dõi, hãy nhập Cài đặt / Móc dịch vụ.
Có rất nhiều tích hợp có sẵn, chẳng hạn như Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello và Email ....
Chỉ cần chọn email và cung cấp nó bằng một địa chỉ email nhóm.
Chúng tôi sử dụng thông báo qua email để đồng bộ hóa các nhà phát triển của chúng tôi.


0

Nếu bạn sử dụng GitLab, bạn có thể sử dụng dịch vụ dự án 'Email-on-push' cho việc này, nó có thể được tìm thấy trong các dịch vụ trong cài đặt dự án.


0

Bạn có thể sử dụng cam kết trước:

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

Tải về:

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

Kiểm tra:

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

0

Trong GitLab dưới kho lưu trữ của bạn:

  1. Nhấp vào Cài đặt.
  2. Khi cài đặt mở rộng ở đó, bạn sẽ thấy Tích hợp . Nhấn vào nó.

Có mở ra một trang mới email về đẩy

  1. Định vị và chọn Gửi từ người cam kết .
  2. Ngoài ra, hãy nhập Người nhận bằng dấu phẩy được phân tách ở trường cuối cùng.

Ngoài ra, có một tùy chọn cho Disable code diffs loại trừ mã nhạy cảm có thể khác trong nội dung thông báo. Nó là tùy chọn.

Để biết thêm chi tiết: Bấm vào đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.