2011-12-08 17 views
10

मैं बैश में एक पोस्ट-स्क्रिप्ट स्क्रिप्ट लिख रहा हूं, और मैं क्लाइंट को संदेश भेजना चाहता हूं जो प्रतिबद्धता कर रहा है। हालांकिएसवीएन पोस्ट-प्रतिबद्ध हुक क्लाइंट को वापस संदेश भेज रहा है

echo my message >&2 

इसे ग्राहक को वापस नहीं बना रहा है। क्या पोस्ट-प्रतिबद्ध हुक के साथ संदेश वापस भेजना भी संभव है?

उत्तर

5

Condering एक post-commit hook करता है:

कुछ भी है कि हुक stderr करने के लिए मुद्रित वापस ग्राहक के लिए मार्शल किया जाएगा, यह आसान हुक विफलताओं के निदान के लिए बना रही है।

आप देख सकते हैं कि यह एक सरल बोली मुद्दा नहीं है:

echo "my message" >&2 

आप उन hook examples कि >&2 के लिए किसी भी echo उद्धरण शामिल हैं में देख सकते हैं।

bash chapter on redirection में उद्धरण के साथ उदाहरण भी शामिल हैं।

हालांकि, his answer में pmod विवरण के रूप में, कि stderr संदेश नहीं दिखाई जाएगी जब तक कि स्क्रिप्ट के निकास स्थिति 0 से अलग है, के रूप में में "subversion post-commit hook: print an error message that the user can see?"

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

जैसा कि pmod नीचे बताता है, stderr स्क्रीन केवल क्लाइंट को मुद्रित की जाती है यदि यह (या कोई भी) हुक एक nonzero वापसी मान देता है। शायद यह मामला @ कैमेलब्लूज़ का सामना करना पड़ा था। – physicsmichael

+0

यह उत्तर गलत है। पीएमओडी का यह अधिकार है कि स्क्रिप्ट को एक गैर 0 मान वापस करना होगा। – Catskul

11

हुक एसटीडीईआरआर केवल तभी दिखाएगा जब यह विफल हो जाता है (और जैसा कि आप अब कर सकते हैं, हुक STDOUT प्रदर्शित नहीं करता है)। इस प्रकार, आपको उपयोगकर्ता को "मेरा संदेश" पास करने के लिए अपनी स्क्रिप्ट से गैर-शून्य कोड वापस करना होगा (इको के बाद बाहर निकलें 1)। बाद प्रतिबद्ध हुक एक अशून्य बाहर निकलें स्थिति देता है तो

, प्रतिबद्ध के बाद से यह पहले से ही पूरा कर लिया है निरस्त नहीं किया जाएगा:

एक नज़र here लो। हालांकि, कुछ भी जो स्टडर को मुद्रित हुक क्लाइंट को वापस कर दिया जाएगा, हुक विफलताओं का निदान करना आसान बनाता है।

4

मैं एक ही समस्या थी सचित्र, अपाचे और mod_svn के साथ। यह पता चला कि marshalling विफल रहता है जब पाठ marshalled &, < या > वर्णों में निहित है। &amp;, &lt; और &gt; के साथ उन्हें प्रतिस्थापित करने के बाद पाठ प्राप्त हुआ।

+0

धन्यवाद! यह वही है जो हम mod_svn के साथ सामना कर रहे थे। कभी यह पता नहीं लगा होगा ... –