मैं उपयोगकर्ता को चेतावनी देना चाहता हूं कि उनका प्रतिबद्ध संदेश दिशानिर्देशों के एक निश्चित समूह का पालन नहीं करता है, और फिर उन्हें अपने प्रतिबद्ध संदेश को संपादित करने, चेतावनी को अनदेखा करने या प्रतिबद्धता को रद्द करने का विकल्प देता है। समस्या यह है कि मुझे लगता है कि मुझे stdin तक पहुंच नहीं है।मैं उपयोगकर्ता को प्रतिबद्ध-संदेश हुक के भीतर से कैसे संकेत दूं?
function verify_info {
if [ -z "$(grep '$2:.*[a-zA-Z]' $1)" ]
then
echo >&2 $2 information should not be omitted
local_editor=`git config --get core.editor`
if [ -z "${local_editor}" ]
then
local_editor=${EDITOR}
fi
echo "Do you want to"
select CHOICE in "edit the commit message" "ignore this warning" "cancel the commit"; do
case ${CHOICE} in
i*) echo "Warning ignored"
;;
e*) ${local_editor} $1
verify_info "$1" $2
;;
*) echo "CHOICE = ${CHOICE}"
exit 1
;;
esac
done
fi
}
verify_info "$1" "Scope"
if [ $# -ne 0 ];
then
exit $#
fi
verify_info "$1" "Affects"
if [ $# -ne 0 ];
then
exit $#
fi
exit 0
यहाँ उत्पादन जब मैं खाली स्कोप जानकारी छोड़ दें:
नीचे मेरी प्रतिबद्ध-msg फ़ाइल है
Scope information should not be omitted
Do you want to:
1) edit the commit message 3) cancel the commit
2) ignore this warning
#?
संदेश सही है, लेकिन यह वास्तव में नहीं रुकती इनपुट के लिए। मैंने सरल "पढ़ने" कमांड का उपयोग करने का भी प्रयास किया है, और यह एक ही समस्या है। ऐसा लगता है कि समस्या यह है कि इस बिंदु पर गिट के पास स्टडीन का नियंत्रण होता है और यह अपना इनपुट प्रदान कर रहा है। मैं यह कैसे तय करुं?
अद्यतन: ऐसा लगता है कि यह this question का डुप्लिकेट हो सकता है जो दुर्भाग्य से लगता है कि मैं भाग्य से बाहर हूं।
जब आपके पास एक्स सर्वर तक पहुंच है तो आप एक आलेखीय संवाद उपकरण से बच सकते हैं। बदसूरत-लेकिन-काम – Rudi
त्रुटि संदेश के बजाय आप केवल एक सूचनात्मक त्रुटि संदेश प्रदान कर सकते हैं - जिसमें चेतावनी को अनदेखा करने के लिए आवश्यक कमांड को प्रतिबिंबित करना शामिल है। – bstpierre
@btspierre, यही वह दृष्टिकोण है जिसे मैंने उठाया। जॉन फेमिनेला की सलाह पर, मैंने चेतावनी को ओवरराइड करने के लिए पर्यावरण चर के उपयोग की अनुमति दी, और जब भी खराब स्थिति का सामना किया जाता है तो चेतावनी को प्रतिबिंबित करें। –