2013-06-07 4 views
6

मैंने हाल ही में svn से गिट करने के लिए एक भंडार माइग्रेट किया। जब मैं लॉग को देखता हूं, तो एसवीएन से सभी काम 50/72 प्रारूप में ठीक से स्वरूपित नहीं होते हैं। क्या कोई तरीका है कि मैं हर प्रतिबद्ध संदेश के माध्यम से जा सकता हूं और इसे संपादित कर सकता हूं ताकि यह गिट प्रारूप के अनुरूप हो?स्वरूपण संदेश

+8

इसके बारे में चिंता न करें। बस नए प्रतिबद्ध संदेशों के लिए आगे बढ़ें और इसे ठीक से करें। स्रोत नियंत्रण आपके वर्कफ़्लो का समर्थन करना चाहिए, इसे कठिन नहीं बनाते। हां, प्रतिबद्ध संदेश सही रूप से स्वरूपित नहीं हैं। लेकिन क्या वास्तव में इतनी बड़ी समस्या है? – Abizern

+4

बस _having_ प्रतिबद्ध संदेशों से आप वक्र से आगे हैं। "Svn से माइग्रेट किए गए संदेश" के साथ केवल एक विशाल प्रतिबद्धता को देखना आम बात है – gcbenison

+2

[उन लोगों के लिए जो नहीं जानते कि "50/72 प्रारूप" क्या है (http://stackoverflow.com/q/2290016/1324345) – alroc

उत्तर

8

आप एक टिप्पणी में कहा:

भंडार एक सप्ताह पहले से अधिक चले गए और पहले से ही किया गया था पर यह Git में की गई करता है।

इस प्रकार, सबसे अच्छा विकल्प बस इसके साथ रहना और अब से सही प्रतिबद्ध संदेश बनाना जारी रखना है।

उन सभी विधियों जो उन पुराने कामों में प्रतिबद्ध संदेशों को बदल देंगे बदलते हैं और अलग-अलग आईडी के साथ पूरी तरह से नई वस्तुएं बनाते हैं। जैसा कि पहले से ही काम कर रहे सभी लोगों की रिपोजिटरी टूट जाएगी, उन्हें रिपोजिटरी की नई, पुनर्लेखित स्थिति में मैन्युअल रूप से रीसेट करने की आवश्यकता होगी।

यह एक पुराने सिस्टम से माइग्रेट किए गए एक गैर-परिपूर्ण प्रतिबद्ध संदेश के साथ काम करने के मामूली मामले के लिए आवश्यक से अधिक काम (और भ्रम!) में समाप्त होता है। मुझे लगता है कि कुछ पुराने इतिहास होने के पहले दिन से पहले यह बिल्कुल ठीक है, जो वर्तमान मानकों में पूरी तरह से फिट नहीं है। यदि आप बाद में अपने कोड स्वरूपण नियमों को बदलने का निर्णय लेते हैं तो आप सभी कामों को फिर से लिख नहीं पाएंगे।

+0

आपके पास एक बिंदु है। मैं अकेले इतिहास छोड़ दूंगा। – EnactSchmenact

1

एक विकल्प गिट में आयात करने से पहले svn में अपने काम को संपादित करना है। svnadmin dump का उपयोग करें, संग्रह के मानव-संपादन योग्य संस्करण को उत्पन्न करें, वहां प्रतिबद्ध संदेश संपादित करें (यदि यह मैं था, तो मैं इसे करने के लिए एक पायथन लिपि लिखूंगा), और फिर svnadmin load

+0

भंडार एक हफ्ते पहले माइग्रेट किया गया था और गिट में पहले से ही इस पर काम करता है। क्या मुझे रिपो को फिर से माइग्रेट करना होगा और फिर उन्हें किसी भी तरह मर्ज करना होगा? – EnactSchmenact

+0

सबवर्जन डंपफाइल "मानव संपादन योग्य" नहीं हैं। प्रत्येक संशोधन में चेकसम IIRC होता है और यदि आप कच्ची फ़ाइल को संपादित करने का प्रयास करते हैं, तो आप फ़ाइल को तोड़ने को समाप्त कर देंगे। 'svnadmin setlog' एक भंडार में लॉग संदेशों को बदलने के लिए उपयोग करने के लिए उपयुक्त उपकरण है (कोई डंपफाइल आवश्यक नहीं है)। – alroc

+0

सेटलॉग के बारे में अच्छा बिंदु। वैसे भी यह मूक है। –

2

के साथ रिपोजिटरी का पुनर्निर्माण करें git filter-branch की आवश्यकता है। यह man page बहुत स्पष्ट है।

--msg-filter विकल्प का उपयोग करें जो एक शेल कमांड की अपेक्षा करता है जो stdin पर मूल संदेश प्राप्त करेगा और stdout पर संशोधित संदेश आउटपुट करना चाहिए। एक स्क्रिप्ट बनाना जो आपके संदेश प्रारूप को ठीक करेगा एक अलग प्रश्न =) है।

यदि आप उन्हें हाथ से ठीक करने जा रहे थे, तो बस git rebase -i --root करें, reword पर कार्रवाई सेट करें। यह पूरे प्रतिबद्धता इतिहास के माध्यम से आपके पाठ संपादक को प्रत्येक प्रतिबद्धता के लिए खोलने और आपको प्रतिबद्ध संदेश बदलने की अनुमति देगा।

+0

ऐ; इस बारे में सोचना चाहिए था। इसे करने का यही तरीका है। –

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