2009-02-01 8 views
19

Tôi muốn thiết lập cam kết email trên một dự án tôi làm việc trên, như mô tả ở đây:
http://producingoss.com/en/vc.html#commit-emailsCách dễ nhất/tốt nhất để thiết lập các email cam kết SVN?

Đó là, sử dụng một bài cam kết nối để gửi một email đến một danh sách chứa tiêu đề cam kết/log và các thay đổi khác.

Cách dễ nhất trên máy Linux để thiết lập điều này là gì?

Trả lời

18

Khi tạo kho lưu trữ mới một móc mẫu sau cam kết được cung cấp trong hooks/post-commit.tmpl. Nó chứa một dòng trông nhiều hơn hoặc ít hơn như thế này:

/usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" [email protected] 

Chỉ cần thay thế các email với địa chỉ mà bạn muốn gửi thông báo tới, đổi tên kịch bản để hooks/post-commit (loại bỏ phần mở rộng tmpl) và làm cho nó thực thi (chmod a+x).

Khi bạn chạy tập lệnh commit-email.pl mà không có bất kỳ đối số nào, bạn sẽ thấy màn hình sử dụng với các tùy chọn bổ sung cho phép ví dụ sửa đổi dòng tiêu đề hoặc địa chỉ Từ.

Xin lưu ý rằng trường hợp của Debian tập lệnh commit-email.pl nằm trong gói subversion-tools tùy chọn.

+0

Vâng, điều này chắc chắn đủ điều kiện là "dễ nhất". Cảm ơn! –

+0

Tốt để nghe tôi có thể giúp :) –

10

Chúng tôi sử dụng svnmailer cho việc này. Chúng tôi sẽ liên kết các tập lệnh móc post-commit riêng cho kho lưu trữ của chúng tôi với một tập lệnh duy nhất, mà lần lượt gọi svnmailer. Cấu hình khá thẳng về phía trước và với cấu hình ví dụ simple.conf bạn có thể thiết lập và chạy trong vài phút. Lưu ý rằng nó được viết bằng Python, vì vậy đó là điều kiện tiên quyết để cài đặt.

toàn bộ post-commit kịch bản móc chỉ là một vài dòng (lưu ý rằng bạn có thể làm những thứ khác trong bạn móc sau cam kết, nhưng chúng tôi hiện không) của chúng tôi:

#!/bin/sh 

CONFIG="/usr/local/svnmailer/default.conf" 
MAILER="/usr/bin/svn-mailer" 

# These are passed in by subversion 
REPOS="$1" 
REV="$2" 

"${MAILER}" --commit \ 
      --config "${CONFIG}" \ 
      --repository "${REPOS}" \ 
      --revision "${REV}" \ 
      --background 
+0

Điều này có vẻ tuyệt vời, nhờ –

+0

Bạn được chào đón. Xin lỗi, đó là câu trả lời sai. –

+0

Nếu tôi có thể chấp nhận cả hai, tôi sẽ có. Ngay sau khi tôi tìm thấy commit-email.pl quá hạn chế, tôi đang chạy thẳng đến svnmailer. Cảm ơn một lần nữa! –

33

Mặc dù câu hỏi này là một chút cũ, chỉ cần nghĩ rằng tôi sẽ để lại ý kiến ​​của tôi đối với những người đến đây từ Google:

Tôi đã xem xét các giải pháp đề cập ở đây. commit-email.pl là cả hai dễ dàng hơn và tốt hơn làm việc cho tôi. Tuy nhiên, tôi tìm thấy cả hai giải pháp thiếu định dạng thích hợp.

Do đó, gói svnnotify dường như tạo ra các email có định dạng và màu đủ tốt cho tôi.

Trên hệ thống Debian/Ubuntu bạn có thể cài đặt nó bằng cách gõ:

apt-get install libsvn-notify-perl 

Sau đó, nếu bạn đang gonna gửi email cho tài khoản Gmail, do hỗ trợ CSS lẻ trong Gmail, tôi sẽ khuyên áp dụng các bản vá found here, có nghĩa là:

  • Tải HTML.pmColorDiff.pm
  • Replace with họ /usr/share/perl5/SVN/Notify/HTML.pm/usr/share/perl5/SVN/Notify/HTML/ColorDiff.pm, resp ectively.

Và cuối cùng, thiết lập các post-commit móc kịch bản theo cách thông thường:

# email notifications for commits 
/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" \ 
    --to [email protected] \ 
    --from [email protected] \ 
    --with-diff \ 
    --subject-cx \ 
    --subject-prefix 'Your Project Name: ' \ 
    --handler HTML::ColorDiff \ 
    --css-inline 
    2>&1 & 

exit 0 
+1

Tôi muốn tôi bỏ phiếu lạnh này lên hai lần :-) Bạn nhận được thư rất đẹp theo cách này, ngón tay cái lên! – Brimstedt

+0

+1 cho --css-inline Điều đó sẽ đi vào SVN chính Thông báo –

+0

+1 định dạng email đẹp. Email rất đẹp mà bạn không thể chờ đợi để cam kết! – dawez

-1

Kiểm tra svn-mod-email gói mô tả here. svn-mod-email là một công cụ mạnh mẽ để quản lý thông báo email SVN được phân phối dưới dạng bản lưu trữ Debian. Dễ dàng cài đặt, cấu hình và sử dụng.

+0

Liên kết đã chết !! nhưng không chắc tại sao một người nào đó lại bỏ phiếu cho câu trả lời này? – hriziya

+0

Liên kết đang hoạt động trở lại. Cảm ơn vì đã cho tôi biết. – Guardian