2011-03-22 18 views
12

में प्रतिबद्ध संदेश प्राप्त करें मैं गिट प्रतिबद्ध से पहले प्रतिबद्ध संदेश जांचना चाहता हूं। मैं ऐसा करने के लिए प्री-प्रतिबद्ध हुक का उपयोग करता हूं, लेकिन .git/pre-commit स्क्रिप्ट में प्रतिबद्ध संदेश प्राप्त करने का तरीका नहीं मिला। मैं इसे कैसे प्राप्त कर सकता हूं?गिट हुक

उत्तर

18

प्री-प्रतिबद्ध हुक में, प्रतिबद्ध संदेश अभी तक नहीं बनाया गया है। आप शायद इसके बजाय prepare-commit-msg या commit-msg हुक का उपयोग करना चाहते हैं। ऑर्डर पर nice section in Pro Git है जिसमें इन हुक चलाए जाते हैं, और आप आमतौर पर उनके साथ क्या कर सकते हैं।

+1

कृपया ध्यान दें कि ये क्लाइंट साइड स्क्रिप्ट हैं, सर्वर साइड स्क्रिप्ट के लिए, किसी को 'प्री-प्राप्त'' का उपयोग करने की आवश्यकता हो सकती है। –

0

आप pre-receive हुक (सर्वर पक्ष के लिए) में निम्न कार्य कर सकते हैं, और यह संशोधन जानकारी प्रदर्शित करेगा।

old, new, branch = sys.stdin.read().split() 
proc = subprocess.Popen(["git", "rev-list", "--oneline","--first-parent" , "%s..%s" %(old, new)], stdout=subprocess.PIPE) 
commitMessage=str(proc.stdout.readlines()[0]) 
+4

दिलचस्प लग रहा है। लेकिन किसी भी भाषा के बारे में कोई जानकारी के बिना या कुछ और, यह बहुत उपयोगी नहीं है। – conradkdotcom

+1

यह पायथन में है। – ArekBulski

3

मैंने इसे commit-msg हुक में कार्यान्वित किया। documentation देखें।

commit-msg 
This hook is invoked by git commit, and can be bypassed with the --no-verify option. 
It takes a single parameter, the name of the file that holds the proposed commit log message. 
Exiting with a non-zero status causes the git commit to abort. 

my_git_project/.git/hooks के तहत, मैं इस फ़ाइल commit.msg जोड़ा (इस नाम हो गया है)। मैंने इस फ़ाइल के अंदर निम्न बैश सामग्री को जोड़ा जो सत्यापन करता था।

#!/usr/bin/env bash 
INPUT_FILE=$1 
START_LINE=`head -n1 $INPUT_FILE` 
PATTERN="^(MYPROJ)-[[:digit:]]+: " 
if ! [[ "$START_LINE" =~ $PATTERN ]]; then 
    echo "Bad commit message, see example: MYPROJ-123: commit message" 
    exit 1 
fi 
संबंधित मुद्दे