2012-04-17 18 views
9

मुझे सीवीएस में संग्रहीत एक परियोजना विरासत में मिली। पिछले डेवलपर के पास अपनी कार्यशील निर्देशिका में भारी असंगत परिवर्तन हैं, जिनमें फाइलों का एक टन निकालने सहित, मैं निरीक्षण करना चाहता हूं। यहां मेरी योजना है:क्या मैं सिर्फ दूसरी निर्देशिका में जा सकता हूं?

  1. सीवीएस चेकआउट the_project।
  2. the remote cvs/local git workflow का पालन करें, the_project की प्राचीन स्थिति के साथ एक गिट रेपो शुरू करना।
  3. अन्य कामकाजी निर्देशिका में नया .git कॉपी करें।
  4. प्रेस्टो! सभी निष्कासन/परिवर्तन अस्थिर मतभेद के रूप में दिखाई देते हैं।

यह शुरू में ऐसा लगता है कि यह काम करेगा। मुझे किसी भी बड़ी समस्या के बारे में चिंता करनी चाहिए?

+1

मेरा मानना ​​है कि यह गिट काम करने वाली प्रतिलिपि और सीवीएस भंडार से फ़ाइलों को चिपकाने से सभी फ़ाइलों को हटाने जैसा ही है। यह काम करना चाहिए और आपको किए गए सभी बदलाव दिखाएंगे। – Tadeck

उत्तर

4

मैं हर समय कुछ ऐसा करता हूं। मैं एक बड़ी एसवीएन परियोजना से कई रिलीज और एकाधिक शाखाओं को ट्रैक करने के लिए जीआईटी का उपयोग करता हूं। इस परियोजना में ~ src 'की उपनिर्देशिका में ~ 200 एसवीएन मॉड्यूल हैं। जब मैंने जीआईटी रिपोजिटरी शुरू की, तो मैंने प्रोजेक्ट के v9.4.4 की जांच की, एक 'गिट इनिट' जोड़ा। गिटिनोर और .gitattributes, 'गिट एड-ए' और 'गिट प्रतिबद्ध-एम' v9.4.4 'किया। तब मैं स्थानांतरित कर दिया। परियोजना से बाहर निकला और प्रतीकात्मक लिंक बनाया। जब v9.4.5 रिलीज आया, तो मैंने इसे चेक आउट किया, अब साझा की गई .git निर्देशिका के लिए एक प्रतीकात्मक लिंक जोड़ा, .gitignore और .gitattributes जोड़े, 'git add -A' और 'git commit -m' v9 किया। 4.5 '। इस बिंदु पर, मेरे पास एक जीआईटी भंडार है जो प्रतीकात्मक रूप से दो निर्देशिकाओं से जुड़ा हुआ है।

इस सेटअप के साथ आप कोई भी गिट ऑपरेशन कर सकते हैं जो कार्य निर्देशिका को स्पर्श नहीं करता है। तो, मेरे आवेदन के लिए, 'गिट diff v9.4.4..v9.4.5' महान काम करता है। निस्संदेह आप गिट ऑपरेशंस भी कर सकते हैं जो इंडेक्स और कामकाजी निर्देशिका को स्पर्श करते हैं लेकिन फिर आपको सावधान रहना होगा कि उस रिपोजिटरी में आपके द्वारा बैठे रिलीज के लिए सही प्रतिबद्धता है।

मैंने भी उपयोग किया है यह कई शाखाओं के लिए। उस स्थिति में को बिना कार्य निर्देशिका को स्पर्श करने के लिए 'गिट प्रतीकात्मक-रेफ हेड रेफ/हेड/ए-शाखा' का उपयोग करना महत्वपूर्ण है। तो जब मेरे प्रोजेक्ट संस्करण एस 3 के साथ आया, तो मैंने एक 'गिट शाखा एस 3 v9.4.4' किया, मेरे .git प्रतीकात्मक लिंक बनाया, 'गिट प्रतीकात्मक-रेफ हेड रेफ/हेड/एस 3' किया और इसे 'एड' के साथ किया और 'करते हैं।'

+0

आपके ठोस अनुभव का वर्णन करने के लिए धन्यवाद। – chreekat

0

हाँ, यह काम करेगा। आप निश्चित रूप से विपरीत भी कर सकते हैं - .git को छोड़कर सबकुछ हटाएं और कहीं और से फ़ाइलों में पेस्ट करें।

2

यह किसी समस्या के साथ काम नहीं करना चाहिए, लेकिन आप ऐसा करने के बाद डेटाबेस में ऑब्जेक्ट की कनेक्टिविटी और वैधता को सत्यापित करने के लिए git fsck --full चलाने का प्रयास करना चाह सकते हैं। तुलनात्मक रूप से, स्टैक ओवरफ़्लो प्रश्न "Can I copy a Git working copy onto another machine?" भी देखें। यह थोड़ा अलग परिदृश्य है, लेकिन अपेक्षाकृत तुलनीय है।

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

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