2010-10-06 20 views
14

हमारे पास एक "केंद्रीय" रेपो है जिसे हम अपने विकास सर्वर पर तैनात करने के लिए उपयोग करते हैं। मुझे पता है कि git log मुझे प्रतिबद्धता और दिनांक/समय दिखाएगा, लेकिन मैं देखना चाहता हूं कि रिपो द्वारा कब/प्राप्त किया गया था। इसे करने का कोई तरीका?मैं गिट रेपो के इतिहास को कैसे प्राप्त करूं?

+0

मुझे किसी भी बिल्टिन व्यवहार के बारे में पता नहीं है, लेकिन आप शायद पोस्ट-प्राप्त हुक के साथ लॉगर को हैक कर सकते हैं। – Daenyth

उत्तर

20

गिट का reflogs आपके निर्दिष्ट डेटा (दिनांक और नई युक्ति प्रतिबद्धता) रिकॉर्ड करेगा।

यदि आपका केंद्रीय भंडार बेकार है, तो इसके रीफ्लॉग संभवतः सक्षम नहीं हैं (वे नंगे भंडार बनाते समय डिफ़ॉल्ट रूप से सक्षम नहीं होते हैं)। इस तरह से उन्हें सक्षम करें:

git config core.logAllRefUpdates true 

तुम भी reflogs (git-config(1) देख सकते हैं और "reflog" के लिए खोज) से संबंधित अन्य विन्यास विकल्पों की समीक्षा पर विचार करना चाहिए: gc.reflogexpire, gc.reflogexpireunreachable

तुम भी receive.denyDeletes सक्षम कर सकते हैं (के बाद से एक reflog जब इसकी शाखा हटा दी जाती है हटा दी जाती है)। यदि आप केवल कुछ शाखाओं पर रिफ्लॉग को संरक्षित करने के लिए चिंतित हैं तो आप हुक प्राप्त करने या अपडेट हुक के साथ अपनी पूर्व-शाखा "अस्वीकार करें" को लागू कर सकते हैं (githooks(5) देखें)।

एक बार जब आप अपने आप के साथ सामग्री की समीक्षा कर सकते हैं reflogs सक्षम किया है, या तो
git reflog show branch-name या
git log -g branch-name (या तो अन्य Git लॉग विकल्पों के साथ जोड़ा जा सकता है)।

इसमें अभी भी ऐसी अन्य जानकारी शामिल नहीं होगी जो आप चाहें (जैसे नई टिप *) को दबा रहा था, लेकिन इससे मदद मिल सकती है।
* समस्या यह है कि प्रमाणीकरण प्रणाली (एसएसएच, एसएसएच + गिटोलाइट, HTTP, HTTP + git-http-backend, आदि) आमतौर पर इस जानकारी को उस स्तर तक नहीं पारित करती है जो नई रीफ्लॉग प्रविष्टि रिकॉर्ड करती है; मुझे याद है कि कुछ संगठन (जेनेटू?) कुछ ऐसी खोज कर रहे थे जो इस जानकारी को रिकॉर्ड करने में मदद करेगा (क्योंकि वे गिट में माइग्रेट करने पर विचार कर रहे थे), लेकिन मुझे विवरण याद नहीं है)।

+2

बिल्कुल सही। इसमें जोड़ने के लिए, केवल 'गिट लॉग-जी शाखा-नाम' चलाने पर यह केवल उस परिवर्तन के बाद परिवर्तनों की संख्या देता है (इसलिए नवीनतम 0 है, पिछला 1 है, आदि), लेकिन 'git log -g चला रहा है - तिथि = स्थानीय शाखा-नाम 'इसके बजाय एक तिथि देगी। धन्यवाद! –

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