2012-10-18 32 views
6

Trong một kịch bản bash tôi làm mộtbắt một git hậu nhận lỗi trong một kịch bản

git push 

và tôi kiểm tra trạng thái thoát của nó.

Trên máy chủ từ xa có móc sau nhận được một số điều. Nếu xảy ra lỗi, hook sau khi nhận sẽ thoát với giá trị khác 0.

Tuy nhiên khi lỗi móc sau khi nhận, lỗi git push sẽ thoát bình thường. Trừ khi tôi đặc biệt kiểm tra đầu ra cho các chuỗi lỗi cụ thể (mà tôi không) kịch bản của tôi nghĩ rằng mọi thứ đã ổn.

Có cách nào dễ dàng để tôi xác định xem móc sau đã nhận không thành công?

+0

Điều gì về việc kiểm tra * đầu ra * của lệnh 'git push' thay vì chỉ trạng thái thoát của nó? Có lẽ lỗi móc được phát hiện ở đâu đó trong đầu ra được định dạng là: '

-> ()'. Chỉ cần suy nghĩ thật to ... –

+0

Đó là những gì tôi thực sự muốn tránh. Nhưng nếu tôi không thể làm cho thoát git với một lỗi khi nhận được lỗi, sau đó tôi đoán đó là những gì tôi sẽ phải làm. – Jistanidiot

Trả lời

3

Vì vậy, câu trả lời là không có cách nào để dễ dàng kiểm tra xem móc sau đã nhận không thành công hay không. Điều tốt nhất bạn có thể làm là kiểm tra kịch bản của bạn cho đầu ra từ xa và đảm bảo hook đã nhận sau của bạn lặp lại thông báo lỗi mà bạn đang tìm kiếm.

Trong trường hợp của tôi, móc nhận trước sẽ không hoạt động vì tôi đang đẩy đến một bản sao lưu dự phòng khác và cam kết mới phải được chấp nhận trước khi nó có thể được đẩy.

Về cơ bản các hậu nhận móc nên làm một cái gì đó như:

some-command-that-might-fail 

RC=$? 

if [ $RC -eq 0 ]; then 
echo -e "\nERROR: some-command-that-might-fail FAILED!!!!!!!! PANIC!!!!!!\n" 
fi 

Sau đó kịch bản làm việc đẩy mạnh nên grep đầu ra cho FAILED hoặc ERROR hoặc hoảng sợ và báo cáo lỗi sau nhận được.

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