गिट एक वितरित संस्करण नियंत्रण प्रणाली है, इसलिए आपको ध्यान से परिभाषित करना होगा कि "पुश डेट" से आपका क्या मतलब है। उदाहरण के लिए, मान लीजिए कि उपयोगकर्ता A, उपयोगकर्ता B के रिपॉजिटरी में कुछ पुश करता है। कुछ बिंदु बाद में, उपयोगकर्ता बी उन लोगों को एक तीसरे रिपॉजिटरी में भेजता है। आप किस तारीख में रुचि रखते हैं?
मैं अनुमान लगा रहा हूं कि आपके पास एक साझा भंडार है और चाहते हैं कि उस साझा भंडार के उपयोगकर्ता यह निर्धारित करने में सक्षम हों कि जब कुछ भंडार में प्रकाशित हुआ था। यदि यह सच है, तो आपको उस जानकारी को साझा भंडार में इकट्ठा करना होगा।
बुरी ख़बरें
दुर्भाग्य से, प्रतिबद्ध संदेशों के लिए तारीख को जोड़ने का कोई तरीका नहीं है। यह सभी प्रकार की समस्याओं के कारण कमिट आईडी (जो कि सामग्री का SHA1 हैश है) को बदल देगा।
अच्छी खबर
सौभाग्य से, Git में नोट्स नामक एक (अपेक्षाकृत नई) सुविधा है । यह सुविधा आपको मनमाने ढंग से पाठ भेजने के लिए अनुमति देती है, जो git log
प्रदर्शित कर सकता है। नोट्स संपादित और दूसरों के साथ साझा किए जा सकते हैं।
आप नोटों की सुविधा का उपयोग कर सकते हैं "यह प्रतिबद्ध [तारीख] को प्राप्त हुआ था" संदेश प्रत्येक प्रतिबद्ध को संदेश के रूप में इसे साझा भंडार द्वारा प्राप्त किया गया है।
git help notes
विवरण के लिए देखें।
तारीख कैसे दर्ज करें
यहाँ मेरा सुझाव है:
post-receive
प्रत्येक अद्यतन संदर्भ के लिए प्रत्येक नए पहुंच योग्य चलने के लिए अपने साझा भंडार पर हुक को संशोधित करें ।
प्रत्येक कमिट के लिए, "रिपॉजिटरी_र्ल" के "[उपयोगकर्ता] जैसे कुछ को जोड़ दें, इस कमेंट को [डेट] पर [रीफ] को कमिट के नोट में जोड़ दिया।
आप refs/notes/received-on
डिफ़ॉल्ट के बजाय इस उद्देश्य (जैसे ) को समर्पित नोट्स रेफरी का उपयोग करना चाह सकते हैं refs/notes/commits
। यह अन्य उद्देश्यों के लिए बनाए गए नोटों के साथ संघर्ष को रोक देगा।
receive
अपने नोट्स संदर्भों से अपडेट को अस्वीकार करने के लिए अपने हुक को संशोधित करें (उपयोगकर्ताओं को गलती से या जानबूझकर नोटों के साथ खिलवाड़ करने के लिए रखें)।
सभी उपयोगकर्ताओं को उनके काम करने वाले पेड़ के अंदर से निम्न कमांड चलाने के लिए कहें:
# Fetch all notes from the shared repository.
# Assumes the shared repository remote is named 'origin'.
git config --add remote.origin.fetch '+refs/notes/*:refs/remote-notes/origin/*'
# Show all notes from the shared repository when running 'git log'
git config --add notes.displayRef 'refs/remote-notes/origin/*'
यह कदम आवश्यक है क्योंकि Git डिफ़ॉल्ट रूप से अपस्ट्रीम रिपॉजिटरी में गैर-शाखा, गैर-टैग संदर्भों को अनदेखा करता है।
उपरोक्त मानता है कि संदर्भ केवल उन्नत हैं, कभी हटाए नहीं गए या बल-अद्यतन नहीं किए गए हैं। आप शायद post-receive
इन मामलों को संभालने के लिए हुक को "[तारीख] को हटा दिया गया" नोट्स भी जोड़ना चाहते हैं ।
git reflog --date=local origin/master
(नोटorigin/
) करना था । अन्यथा केवल कमिट, चेकआउट और पुल सूची में थे (जो उपयोगी है, भी)। वास्तव में, मुझे @ जोनाथनडे के जवाब से सूचित किया गया था ।