2013-02-22 42 views
7

मेरा क्लाइंट गिट संस्करण 1.7.0.4 है।गिट जोड़ें format.signoff का उपयोग कर साइन-ऑफ-लाइन लाइन

मैं संदेश भेजते समय प्रतिबद्ध लॉग संदेश के अंत में कमिश्नर के लिए स्वचालित रूप से "साइन-ऑफ-बाय" लाइन जोड़ना चाहता हूं।

  1. जब मैं git config --global format.signoff true निर्धारित करते हैं, और git commit -m "modify something" चलाने के लिए, मैं नहीं "साइन-इन किए ऑफ द्वारा" git log में देखते हैं।
  2. यदि मैं git commit -m -s "modify something" का उपयोग करता हूं, तो "साइन-ऑफ-बाय" git log में दिखाया गया है।

क्या कोई मदद कर सकता है?

+0

क्या कोई जानता है? – Venus

उत्तर

4

गिट 2.14.x/2.15 के लिए अद्यतन: जैसा कि मैंने "Git - Detect if commit is signed off programmatically" में उल्लेख किया है, आप Signed-off-By लाइन के लिए एक प्रतिबद्ध संदेश ट्रेलर पार्स करने में सक्षम होंगे।

"git interpret-trailers" एक "--parse" और कुछ अन्य विकल्प सिखाया गया है यह आसान स्क्रिप्ट एक लॉग प्रतिबद्ध संदेश से मौजूदा ट्रेलर लाइनों आकर्षित करने के लिए के लिए बनाने के लिए।

stefanct देखें 'commit-msg client-side hook जो git interpret-trailers का प्रयोग करेंगे के लिए रों answer


मूल जवाब (2013)

format.signoffabout patch है (सचित्र के रूप में, उदाहरण के लिए, in this patch):

format.signoff 

एक बूलियन मान के लिए सक्षम करने देता है -s/- format-patch डिफ़ॉल्ट रूप से

इसका git commit -s पर कोई असर नहीं पड़ता है।

दूसरे शब्दों में, आप signoff के लिए हर प्रतिबद्ध नहीं है, लेकिन दूसरों को, ("git: submitting patches" के रूप में) का उपयोग करने के लिए जब आप उन्हें पैच के रूप में प्रकाशित कर रहे हैं तो आप उन पर हस्ताक्षर करना चाहिए।

Signed-of-by के सटीक संकेत के लिए, "What is the Sign Off feature in Git for?" देखें।

7

आप एक परियोजना में डिफ़ॉल्ट रूप से signoff एक फ़ाइल बनाने के द्वारा (कहते हैं कि "~/MyProject/Git-टेम्पलेट") कर सकते हैं कि कुछ रिक्त लाइनों और साइन-ऑफ़-पाठ इस तरह शामिल हैं:

Signed-off-by: Your Name <[email protected]> 

फिर गिट को एक प्रतिबद्ध टेम्पलेट के रूप में उपयोग करने के लिए कॉन्फ़िगर करें। उदाहरण के लिए:

git config commit.template ~/MYPROJECT/git-template 

सुनिश्चित करें कि आपके परियोजना दस्तावेजों कहीं क्या साइन-ऑफ़-द्वारा परियोजना के लिए साधन बनाओ। यहां कुछ पाठ दिया गया है जिसे आप अपने योगदान में कॉपी कर सकते हैं।एमडी फ़ाइल:

सभी योगदान (पुल अनुरोध सहित) डेवलपर सर्टिफिकेट ऑफ ऑरिजन (डीसीओ) संस्करण 1.1 से सहमत होना चाहिए। यह वही है जिसे लिनक्स कर्नेल डेवलपर्स द्वारा बनाया और उपयोग किया गया है और http://developercertificate.org/ पर पोस्ट किया गया है। यह एक डेवलपर का प्रमाणीकरण है कि उसे का अधिकार प्रोजेक्ट में शामिल करने के लिए पैच सबमिट करने का अधिकार है। बस एक योगदान सबमिट करने से इस समझौते का तात्पर्य है, हालांकि, कृपया प्रत्येक पैच में "साइन-ऑफ-बाय" टैग शामिल करें (यह टैग यह पुष्टि करने का एक पारंपरिक तरीका है कि आप डीसीओ से सहमत हैं)।

3

अब किसी भी प्रतिबद्धता को स्वचालित रूप से साइन-ऑफ करने का एक आसान तरीका है जो हुक और git-interpret-trailers कमांड का उपयोग कर पहले ही हस्ताक्षरित नहीं है। आने वाले संस्करण 2.15 में गिट कमांड को मौजूदा साइन-ऑफ के लिए परीक्षण करने की अनुमति देता है (इससे कोई फर्क नहीं पड़ता कि उसका मूल्य/लेखक क्या है) और यदि अभी तक नहीं है तो अपना जोड़ें। अक्टूबर 2017 तक आवश्यक कोड किसी भी गिट रिलीज में अभी तक नहीं है (लेकिन इसकी master शाखा में)!

.git/hooks/prepare-commit-msg या .git/hooks/commit-msg के रूप में निम्न सहेजें (मतभेदों के लिए here देखें) और इसे निष्पादन योग्य बनाएं।

#!/bin/sh 

NAME=$(git config user.name) 
EMAIL=$(git config user.email) 

if [ -z "$NAME" ]; then 
    echo "empty git config user.name" 
    exit 1 
fi 

if [ -z "$EMAIL" ]; then 
    echo "empty git config user.email" 
    exit 1 
fi 

git interpret-trailers --if-exists doNothing --trailer \ 
    "Signed-off-by: $NAME <$EMAIL>" \ 
    --in-place "$1" 
+0

अच्छी तरह से किया गया। +1। मैं अधिक दृश्यता के लिए अपने उत्तर का संदर्भ देता हूं, और संदर्भ https://stackoverflow.com/a/41361273/6309 जहां मैंने 'गिट व्याख्या-ट्रेलरों 'का उल्लेख किया है। – VonC