2011-12-08 33 views

Trả lời

5

Condering một post-commit hook làm:

bất cứ điều gì mà móc in để stderr sẽ được marshalled lại cho khách hàng, làm cho nó dễ dàng hơn để chẩn đoán thất bại móc.

bạn có thể kiểm tra nếu đây không phải là một vấn đề đơn giản quote:

echo "my message" >&2 

Bạn có thể thấy trong những hook examples rằng bất kỳ echo->&2 bao gồm dấu ngoặc kép.

bash chapter on redirection cũng bao gồm các ví dụ có dấu ngoặc kép.

Tuy nhiên, như pmod chi tiết trong his answer, rằng thông điệp stderr sẽ không được hiển thị trừ khi trạng thái thoát của kịch bản khác với 0, như minh họa trong "subversion post-commit hook: print an error message that the user can see?"

#!/bin/bash 
echo "test" >&2 
exit 1 
+0

Như pmod nói dưới đây, màn hình stderr chỉ được in cho khách hàng nếu hook (hoặc bất kỳ) nào trả về giá trị trả về không phải là không. Đó có lẽ là vấn đề @CamelBlues gặp phải. – physicsmichael

+0

Câu trả lời này là sai. Pmod có quyền rằng tập lệnh phải trả về giá trị không 0. – Catskul

11

Móc sẽ hiển thị STDERR chỉ khi nó không thành công (và như bạn có thể bây giờ, móc không hiển thị STDOUT). Vì vậy, bạn phải trả lại mã khác 0 từ tập lệnh của bạn để chuyển "thông điệp của tôi" cho người dùng (chỉ cần thêm thoát 1 sau khi echo).

Hãy xem here:

Nếu sau cam kết nối trả về một trạng thái thoát khác không, cam kết sẽ không được hủy bỏ vì nó đã hoàn thành. Tuy nhiên, bất cứ điều gì mà móc được in để stderr sẽ được marshalled lại cho khách hàng, làm cho nó dễ dàng hơn để chẩn đoán thất bại móc.

4

tôi đã cùng một vấn đề, với Apache và mod_svn. Nó bật ra rằng marshalling không khi văn bản được marshalled chứa &, < hoặc > ký tự. Sau khi thay thế chúng bằng các văn bản &amp;, &lt;&gt; văn bản đã trải qua.

+0

Cảm ơn! Đây chính xác là những gì chúng tôi đang phải đối mặt với mod_svn. Không bao giờ tìm ra được ... –

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