2012-06-22 10 views
11

मैं स्थानीय गिट भंडार पर काम कर रहा हूं और मुझे अपने स्थानीय गिट को मौजूदा svn भंडार में धक्का देना है। मेरा गिट भंडार शुद्ध स्थानीय गिट भंडार है, यह git svn clone का उपयोग कर init था।svn में स्थानीय गिट भंडार कैसे आयात करें?

मैं इस स्थानीय गिट रेपो को svn में कैसे आयात कर सकता हूं?

अधिमानतः मैं गिट इतिहास को एसवीएन में आयात करना चाहता हूं।

https://svnrepohost 
      /branches 
      /tags 
      /trunk 
        /projectA 
        /projectB 
        /newProject 

मैं क्या जरूरत है यह, ऊपर https://svnrepohost/trunk/newProject में मेरी Git भंडार आयात करने के लिए है यह सोचते हैं newProject फ़ोल्डर रिक्त है:

वर्तमान में SVN भंडार संरचना के रूप में है।

+0

दूरस्थ सबवर्सन भंडार पहले से ही मौजूद है, या आप अपने स्थानीय Git से एक नया सबवर्सन भंडार बनाने के लिए कोशिश कर रहे हैं भंडार? –

+0

रिमोट सबवर्जन रिपोजिटरी पहले से मौजूद है। –

+0

तो आप इसे सबवर्जन रिपोजिटरी में कैसे जाना चाहते हैं? एक नई शाखा? ट्रंक ओवरराइटिंग? इतिहास के बारे में क्या: क्या आप सबवर्सन शाखा में गिट रेपो का पूरा इतिहास चाहते हैं, या बस इस समय कैसा दिखता है? –

उत्तर

23

मैं अंत में निम्न चरणों के इस समस्या का समाधान है: उदाहरण के http://svnrepo/svn/trunk/newProject

  • के लिए

    1. सेटअप SVN करने के लिए आयात करने के लिए में उपयुक्त प्रोजेक्ट फ़ोल्डर, एक नया Git-SVN भंडार बनाएं

      Git SVN क्लोन http://svnrepo/svn/trunk/newProject

    2. Git रेपो कि हम नई Git-svn रेपो

      Git दूरस्थ जोड़ने मूल के बारे में दूरस्थ आयात करना चाहते हैं जोड़े ../original-git-repo

    3. मूल-Git-रेपो

      Git पुल मूल से सभी डेटा खींचो गुरु

    4. SVN के खिलाफ स्थानीय भंडार rebase

      Git SVN rebase

    5. SVN में परिवर्तन प्रतिबद्ध

      Git SVN dcommit

    6. स्वच्छ ऊपर रिमोट

      Git दूरस्थ मूल को नष्ट

  • +1

    अच्छा काम करता है हालांकि मुझे लगता है कि चरण 7 गिट रिमोट निकालना मूल होना चाहिए। – roryWoods

    +0

    पॉइंट 2 हमेशा उस पथ में एक नया प्रोजेक्ट फ़ोल्डर बनाता है जिसे मैं 'गीट svn' चला रहा हूं। आइटम 3 में आपका मतलब क्या है '../' क्या आपका गिट रिपोजिटरी आपके वर्तमान पथ से एक फ़ोल्डर ऊपर है? आइटम 3 चलाने से पहले क्या आपने अपने svn भंडार में 'सीडी' किया था? और मुझे त्रुटि मिल रही है 'चरण 5 – AaA

    +0

    पर काम कर रहे पेड़ इतिहास से अपस्ट्रीम एसवीएन जानकारी निर्धारित करने में असमर्थ' काफी काम किया! हालांकि, मुझे चरण 4 के रूप में 'गिट पुल - एलो-असंबद्ध-इतिहास मूल मास्टर' करना था, अन्यथा गिट असंबंधित इतिहास को विलय करने से इनकार कर रहा था। मेरे एसवीएन भंडार में प्रारंभिक प्रतिबद्धता थी, शायद यही कारण था। – rindPHI

    0

    आप SubGit का उपयोग कर सकते हैं।

    $ svnadmin create repo.svn 
    $ subgit configure repo.svn                                        
    
    ...                                           
    
          CONFIGURATION SUCCESSFUL                                             
    
          Adjust '/tmp/repo.svn/conf/subgit.conf' file                                        
          and then run                                                
           subgit install "repo.svn"                                            
          to complete SubGit installation. 
    $ nano repo.svn/conf/subgit.conf #edit to set git.default.repository=path/to/your/bare/git/repository 
    $ subgit install repo.svn 
    

    मैं भी अपना Git भंडार के एक नंगे क्लोन बनाने के लिए आप की सिफारिश करेंगे और अपने मूल भंडार के बजाय यह करने के लिए पथ (git.default.repository में) निर्दिष्ट करने के लिए। अर्थात।

    $ git clone --bare path/to/your/original/repository path/to/your/bare/git/repository 
    

    के बाद "स्थापित subgit" कमान खजाने (repo.svn और repo.git) निरंतर तुल्यकालन (से शुरू हो रहा होगा Git [है कि आपके नंगे भंडार करने के लिए जोर दे रहा पर शुरू होता है] और पूर्व में हुक पूर्व प्राप्त एसवीएन में कमेटी)। तुल्यकालन को रोकने के लिए आप सबसे आसान तरीका है यह करने के लिए चला सकते हैं

    $ subgit uninstall repo.svn 
    
    +0

    मैंने सबगिट वेबसाइट पर एक त्वरित नज़र डाली, क्या आप जानते हैं कि मौजूदा svn भंडार के साथ सबगिट का उपयोग कैसे करें और यह मानते हुए कि हमारे पास svn भंडार में व्यवस्थापक पहुंच नहीं है? –

    +0

    इसमें सबगिट इंस्टॉल करने के लिए किसी को svn या git रिपॉजिटरी में व्यवस्थापक पहुंच प्राप्त करनी होगी। – vadishev

    1

    सिर्फ svn import को Git निर्देशिका है। हालांकि, यह आपको अपना गिट प्रतिबद्ध इतिहास खो देगा।

    सबसे पहले, सुनिश्चित करें कि .git निर्देशिका को सबवर्सन कॉन्फ़िगरेशन फ़ाइल में global-ignores सेट करके आयात नहीं किया जाएगा। अपने ~/.subversion/config फ़ाइल (कि C:\Users\username\.subversion\config विंडोज पर की तरह कुछ में हो जाएगा) खोलें, खंड [miscellany] शुरू कर पाते हैं, और नीचे के रूप में पढ़ने के नीचे सीधे एक पंक्ति जोड़ें:

    global-ignores = .git 
    

    (अगर आप पहले से global-ignores = के साथ एक पंक्ति है तो सिर्फ इतना है कि पंक्ति के अंत तक .git जोड़ने के सामने एक # नहीं है,)

    इसके बाद, नीचे चलाएँ:।

    svn import <path-to-local-git-repository> https://svnrepohost/trunk/newProject 
    

    यही चाहिए ग स्थानीय गिट भंडार की सामग्री को सर्वर पर बिल्कुल ठीक करें जहां आप इसे चाहते हैं।

    +0

    मेरा मानना ​​है कि यदि यह समाधान सभी प्रतिबद्धता इतिहास को खोने जा रहा है तो यह गिट की स्थानीय प्रति डाउनलोड करने के बराबर है, उन फ़ाइलों को svn स्थानीय प्रतिलिपि में कॉपी करना और svn प्रतिबद्ध करना। मैं प्रतिबद्धता का इतिहास भी रखना चाहता हूं (प्रत्येक संस्करण में फाइलों में परिवर्तन) जो बहुत महत्वपूर्ण है – AaA

    0
    • Git SVN क्लोन http://svnrepo/svn/trunk/newProject
    • Git दूरस्थ जोड़ने मूल ../original-git-repo
    • गिट fetch उत्पत्ति
    • गिट चेकआउट -बी lmaster rem OTES/मूल/मास्टर
    • Git rebase मास्टर
    • Git SVN rebase
    • Git SVN dcommit
    संबंधित मुद्दे