2009-07-01 7 views
5

मैं git-commit मानक इनपुट के लिए प्रतीक्षा करने का एक तरीका ढूंढ रहा हूं। मैं PHP में इस कोडिंग कर रहा हूँ, के रूप में अपने bash कौशल गैर existant हैं, इसलिए मैं एक नियमितएक गिट प्री-प्रतिबद्ध हुक (PHP के साथ) एसटीडीआईएन से पढ़ें

<?php 
$input = trim(fgets(STDIN)); 
fscanf(STDIN, "%d\n", $line); 
?> 

कर thougth चाल करना होगा, और इंतजार जब तक मैं में सामान लिखना जारी रखने के लिए, लेकिन यह बस आगे चला जाता है और वैसे भी मेरी PHP स्क्रिप्ट निष्पादित जारी है।

इसके पीछे विचार यह है कि जब मैं रिलीज टैग करता हूं, तो गिट HEAD को परीक्षण वेबसर्वर पर धक्का देगी, दो ट्वीट्स भेजें, और मुझे चेंजलॉग में रिलीज के बारे में कुछ विवरणों में लिखने दें।

जबकि मैं एक फ़ाइल में लेखन प्राप्त कर सकता हूं (exec('mate -w') का उपयोग करके), मैं इसे तब तक लटकना चाहता हूं जब तक कि मैं सर्वर पर त्वरित परीक्षण नहीं करता। अगर मुझे कोई त्रुटि दिखाई दे तो मुझे रोलबैक करने में मदद मिलेगी (आलसी, मुझे पता है)।

किसी भी मदद के लिए धन्यवाद!

+2

'कार्यकारी

उत्तर

3

अधिकांश गिट हुक या तो स्टडीन के लिए कुछ विशेष खिलाया जाता है, या टर्मिनल से अलग stdin है। वे सभी गैर-संवादात्मक रूप से चलाने के लिए डिज़ाइन किए गए हैं, इसलिए मुझे विश्वास नहीं है कि एक हुक जो आप करना चाहते हैं उसके लिए उपयुक्त है। आप निश्चित रूप से /dev/tty से बात कर सकते हैं लेकिन मुझे नहीं लगता कि यह एक बहुत अच्छा विचार है।

मुझे यह भी विश्वास नहीं है कि 'प्री-प्रतिबद्ध' हुक आपके काम के लिए उपयुक्त है, निश्चित रूप से आपके द्वारा किए गए हर प्रतिबद्धता को किसी प्रकार का रिहाई नहीं होगी? परीक्षण वेबसर्वर मशीन पर 'पोस्ट-प्राप्त' हुक अधिक उपयुक्त लगता है।

+0

हां, असल में मैंने पाया कि मैं इन उद्देश्यों के लिए .git/config फ़ाइल पर कुछ चर रखने से बेहतर होगा, और सर्वर इन संबंधित कार्यों को कर रहा है। यह गिट की तुलना में वर्कफ़्लो के मेरे विचार की एक समस्या थी, यह पता चला है। धन्यवाद! – Roberto

1

मुझे अपने पोस्ट-मर्ज हुक (PHP में लिखे गए) में उपयोगकर्ता इनपुट की आवश्यकता है।

मैं कोड के इस टुकड़े के साथ इसे हल: trim(exec('exec < /dev/tty && read input && echo $input'))

मत पूछो, यह काम करता है;)

संबंधित मुद्दे