खोज…


परिचय

कई अन्य संस्करण नियंत्रण प्रणालियों की तरह, Git के पास कुछ महत्वपूर्ण कार्य होने पर कस्टम स्क्रिप्ट को बंद करने का एक तरीका है। इन हुक के दो समूह हैं: क्लाइंट-साइड और सर्वर-साइड। क्लाइंट-साइड हुक को संचालन और मर्जिंग जैसे ऑपरेशन द्वारा ट्रिगर किया जाता है, जबकि सर्वर-साइड हुक नेटवर्क संचालन पर चलते हैं जैसे कि पुश किए गए कमिट प्राप्त करना। आप सभी प्रकार के कारणों के लिए इन हुक का उपयोग कर सकते हैं।

हुक लगाना

हुक सभी Git निर्देशिका के hooks उप निर्देशिका में संग्रहीत हैं। अधिकांश परियोजनाओं में, यह .git/hooks

एक हुक स्क्रिप्ट को सक्षम करने के लिए, अपने .git निर्देशिका के hooks में एक फ़ाइल डालें जो उचित रूप से (बिना किसी एक्सटेंशन के) नाम की है और निष्पादन योग्य है।

प्री-पुश हुक दें

प्री-पुश स्क्रिप्ट को git push द्वारा बुलाया जाता है क्योंकि यह रिमोट स्टेटस की जाँच करता है, लेकिन इससे पहले कि किसी चीज़ को पुश किया गया हो। यदि यह स्क्रिप्ट गैर-शून्य स्थिति से बाहर निकलती है, तो कुछ भी धक्का नहीं दिया जाएगा।

इस हुक को निम्नलिखित मानकों के साथ कहा जाता है:

 $1 -- Name of the remote to which the push is being done (Ex: origin)
 $2 -- URL to which the push is being done (Ex: https://<host>:<port>/<username>/<project_name>.git)

जिन कमिटों को धकेला जा रहा है उनके बारे में जानकारी फॉर्म में मानक इनपुट को लाइनों के रूप में दी जाती है:

<local_ref> <local_sha1> <remote_ref> <remote_sha1>

नमूना मान:

local_ref = refs/heads/master
local_sha1 = 68a07ee4f6af8271dc40caae6cc23f283122ed11
remote_ref = refs/heads/master
remote_sha1 = efd4d512f34b11e3cf5c12433bbedd4b1532716f

उदाहरण के नीचे पहले से धक्का स्क्रिप्ट डिफ़ॉल्ट पूर्व push.sample जो स्वत: जब एक नया भंडार के साथ आरंभ नहीं हो जाता बनाए जाने के बाद लिया गया था git init

# This sample shows how to prevent push of commits where the log message starts
# with "WIP" (work in progress).

remote="$1"
url="$2"

z40=0000000000000000000000000000000000000000

while read local_ref local_sha remote_ref remote_sha
do
    if [ "$local_sha" = $z40 ]
    then
        # Handle delete
        :
    else
        if [ "$remote_sha" = $z40 ]
        then
            # New branch, examine all commits
            range="$local_sha"
        else
            # Update to existing branch, examine new commits
            range="$remote_sha..$local_sha"
        fi

        # Check for WIP commit
        commit=`git rev-list -n 1 --grep '^WIP' "$range"`
        if [ -n "$commit" ]
        then
            echo >&2 "Found WIP commit in $local_ref, not pushing"
            exit 1
        fi
    fi
done

exit 0


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow