2010-07-23 23 views
6

Tôi có một móc trước cam kết cho SVN chạy chương trình kiểm tra lỗi và hủy bỏ cam kết trong trường hợp có vấn đề. stderr được chuyển hướng đến người dùng bắt đầu cam kết trong trường hợp có vấn đề. Nhưng tôi muốn gửi đầu ra của người dùng từ chương trình kiểm tra lỗi ngay cả khi không tìm thấy vấn đề nào, để người dùng được thông báo rằng trình kiểm tra lỗi đã chạy và không thấy vấn đề gì. Làm thế nào để làm điều đó với SVN trước cam kết móc?Làm thế nào để gửi stdout cho người dùng khi chạy SVN pre-commit hook

Trả lời

7

Móc Subversion ăn STDOUT của chúng. Khi kịch bản được chạy, không có STDOUT. Bạn thậm chí không thể có kịch bản trước cam kết gửi STDOUT đến một quá trình khác.

Tuy nhiên bên trong móc trước cam kết, STDOUT vẫn tồn tại và vẫn có thể được chuyển hướng. Ví dụ, hook của tôi bao gồm một kịch bản shell bao gồm một số dòng tiện ích dòng lệnh Unix. Mỗi tiện ích dòng lệnh có một STDIN và một STDOUT, và tôi có thể ống từ một đến khác. Tuy nhiên, khi kịch bản lệnh đó kết thúc thực thi, không có STDOUT.

Điều khác là không có cách nào để giao tiếp STDOUT thông qua mô hình móc. Subversion không cung cấp bất kỳ loại liên kết truyền thông nào. Có một liên kết cho STDERR, nhưng chỉ khi bản thân móc thất bại. Đây là một móc trước khi cam kết, tôi nghi ngờ bạn cố ý muốn thất bại móc này chỉ để cung cấp cho người dùng báo cáo.

Những việc bạn có thể làm là sử dụng các phương thức thông báo khác. Một số người đã đề xuất email. Bạn có thể chạy tập lệnh hậu cam kết để tạo báo cáo và gửi email báo cáo đó dựa trên địa chỉ email của người dùng. Tôi sẽ không làm điều này như là một kích hoạt trước cam kết bởi vì bạn không muốn giao dịch thất bại vì báo cáo không hoạt động.

Một số người đã đề xuất rằng bạn có thể ánh xạ người dùng đã thực hiện cam kết bằng địa chỉ email và gửi email cho người dùng. Tôi sẽ không làm điều này vì người dùng sẽ đơn giản bỏ qua email. Họ đã nhận được hàng chục nếu không phải hàng trăm email từ các quy trình khác nhau cảnh báo họ về điều này hoặc điều đó.

Điều tôi khuyên bạn nên sử dụng một sản phẩm như Hudson để thực hiện các bản dựng liên tục và có báo cáo này do Hudson tạo ra và được đăng trên trang xây dựng mà Hudson tạo ra. Bằng cách này, nhà phát triển có thể quay lại và kiểm tra báo cáo. Trong thực tế, Hudson đã có các plugin khác nhau kiểm tra lỗi và tạo ra tất cả các loại báo cáo và đồ thị đẹp mắt (thường làm việc với findbugs hoặc các dự án khác như thế).

Một trong những plugin thú vị hơn là trò chơi giải thưởng điểm để xây dựng thành công, sửa lỗi và cảnh báo, v.v. Nó trình bày bảng dẫn đầu, vì vậy nhà phát triển có thể so sánh điểm số của họ với các nhà phát triển khác. Tôi không bao giờ sử dụng nó, nhưng một số người trong nhóm người sử dụng Hudson nói rằng các nhà phát triển có được rất cạnh tranh về điểm số của họ.

0

Bạn phải ánh xạ tên người dùng đến địa chỉ email bằng cách nào đó. Sau đó, bạn có thể thu thập đầu ra trong một tập tin và gửi nó đến người nhận.

0

Trong trường hợp của tôi, tôi đã viết một ứng dụng biểu mẫu C# Windows đơn giản để hiển thị tiến trình của móc.

Các vấn đề liên quan