2011-09-03 13 views
20

मैं अगर परिवर्तन के बारे में मैं प्रतिबद्ध करने के लिए कर रहा हूँ एक निश्चित स्ट्रिंग (जैसे कि, @todo या @hack) होते हैं † रोका जा करने के लिए जब एक git रेपो में ‡ मंचन करना चाहते हैं।Git स्ट्रिंग स्रोत (या अंतर) में प्रकट होता है, तो करने से पहले चेतावनी दी है

क्या कोई मुझे दिखा सकता है कि इसे कैसे प्राप्त किया जाए?

† या चेतावनी दी।
‡ या जब काम करते हैं।

उत्तर

27

एक साधारण हुक पूर्व प्रतिबद्ध यदि स्ट्रिंग '@todo' जोड़ा जा रहा है की तरह लग रहे हो सकता है की जाँच करता है कि:

#!/bin/sh 

. git-sh-setup # for die 
git-diff-index -p -M --cached HEAD -- | grep '^+' | 
grep @todo && die Blocking commit because string @todo detected in patch 

इस .git/hooks/pre-commit की सामग्री है और निष्पादन योग्य है, तो किसी भी पैच कि कहते हैं स्ट्रिंग @todo अस्वीकार कर दिया जाएगा। तरीका यह है हाँ, क्लाइंट साइड हुक कर रहे हैं:

+0

बहुत अच्छा। मैंने अभी तक यह कोशिश नहीं की है, लेकिन ऐसा लगता है कि मैं वही चाहता हूं। प्रश्न: क्या एक कस्टम ध्वज मौजूद होने तक 'मरना' संभव है? इस तरह के समान इस्तेमाल किया जाएगा: 'git commit -m "msg" --ignore-todo' –

+1

मुझे नहीं लगता कि हुक कमांड लाइन तर्क तक पहुंच है, लेकिन आप (बोर्न शैल में) कर सकते हैं' IGNORE_TODO = yes git प्रतिबद्ध -एम संदेश 'और $ IGNORE_TODO = yes अगर हुक के भीतर जांचें। –

+3

आप सभी हुक को दबाने के लिए भी जोड़ सकते हैं –

4

आपके पास pre-commit हुक हो सकता है जो स्ट्रिंग और ब्लॉक (चेतावनी) को देखता है।

नमूना प्री-प्रतिबद्ध हुक (नीचे .git/hooks) के तहत आपको प्रारंभ करना चाहिए।

+0

+1। –

1

zsh प्री-कमांड निष्पादन हुक प्रदान करता है जो किसी प्रकार की स्क्रिप्ट को चलाने की अनुमति दे सकता है जो आपकी प्रतिबद्धता पूछताछ करेगा, @ to-do या @ hack के लिए grep-ing, और वास्तविक प्रतिबद्ध करने से पहले आपको चेतावनी देगा। यह पोस्टिंग (http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/) वास्तव में zsh में एक फैंसी गिट प्रॉम्प्ट बनाने के बारे में है, लेकिन प्री-कमांड निष्पादन हुक का उपयोग करने के बारे में बात करता है।

4

यह करने के लिए एक अधिक सामान्य और पूरी तरह से समाधान के लिए, Git Confirm पर एक नज़र डालें:

Asciinema Git Confirm demo

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