2011-05-26 18 views
6

जैसा कि आप जानते हैं कि डिफ़ॉल्ट रूप से, गिट नए नंगे भंडारों के लिए रीफ्लॉग अपडेट सक्षम नहीं करता है। समस्या यह है कि, मेरे पास एक लंबा इतिहास भंडार है लेकिन यह ध्वज "logAllRefUpdates" को सेट करने से पहले बनाया गया था, और अब मैं उस एप्लिकेशन को अन्य एप्लिकेशन के लिए काम करना चाहता हूं।किसी मौजूदा नंगे भंडार में रीफ्लॉग जानकारी कैसे बनाएं

मैं मौजूदा भंडार में किए गए न्यूनतम परिवर्तनों के साथ इसे कैसे प्राप्त कर सकता हूं। एक बहुत ही सरल समाधान एक नई प्रतिबद्धता को दबा रहा है जिसे मैं नहीं चाहता (!) :-)

उत्तर

2

रेफ्लॉग अपेक्षाकृत सरल फ़ाइल प्रारूप है। यहाँ एक उदाहरण है:

] cat .git/logs/HEAD|sed 's/\t/<TAB>/' 
0000000000000000000000000000000000000000 5cfe4256d98af22a570c78c5e3048391a90f5f98 Joe User <[email protected]> 1306427954 -0400<TAB>clone: from git://git.kernel.org/pub/scm/git/git.git 

आप मैन्युअल रूप से एक ही प्रारूप का पालन करते हुए उचित reflogs निर्माण कर सकते हैं:

previous-ref-or-zero new-ref User Name <[email protected]> unix-timestamp timezone\tmessage 

बस प्रत्येक रेफरी के लिए इनमें से किसी एक पैदा करते हैं। आप शायद उचित प्रारूप स्ट्रिंग के साथ git for-each-ref के साथ सीधे ऐसा कर सकते हैं (धन्यवाद, क्रिस!)

+0

दुर्भाग्यवश, मैंने अभी कोशिश की है और यह काम नहीं करता है। आप core.logallrefupdates को डिफ़ॉल्ट (अक्षम) पर सेट करके, फिर एक नंगे रेपो बनाने और फिर logallrefupdate को सक्षम करने की कोशिश कर सकते हैं, और ... – instcode

+0

एक नए दृष्टिकोण के साथ अपडेट किया गया – bdonlan

+1

रेफरी पर पुनरावृत्त कार्यक्रमों को 'प्रत्येक के लिए' गिट का उपयोग करना चाहिए 'ढीले और पैक किए गए रेफरी दोनों से निपटने के बजाय "। –

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