2011-08-25 17 views
16

में खींच नहीं है जब मैं अपने भंडार से एकGit-SVN लाने नवीनतम संस्करण

git svn fetch

निष्पादित, यह कुछ भी वापस आती है और अपडेट नहीं होता, भले ही SVN के तहत नए प्रतिबद्ध हैं ।

[root]# svn log -l 1 http://example.com/trunk/client-resources/resource-pa 
    r12958 | ing | 2011-08-22 18:29:57 -0500 (Mon, 22 Aug 2011) | 1 line 
    SRGENERAL-1468 adding more arrays for pa 
[root]# git-svn fetch 
[root]# git log -1 
    commit be19ae4c7d1a3c3da6dd90389aebd6d76792cc71 
    Author: sltin <[email protected]> 
    Date: Wed Jun 22 14:30:53 2011 +0000 

    Fixing the classpath. 

    git-svn-id: http://example.com/trunk/client-resources/[email protected] 44b83e5a-25ef-0310-8dbe-ee0aa4f92a64 

संस्करण अंतरों पर ध्यान दें। SVN लॉग 12958 सूचीबद्ध करता है और Git लॉग 12406.

मैं 12,406 करने के लिए एक रीसेट कर सकते हैं के रूप में नवीनतम SVN संस्करण सूचीबद्ध करता है और फिर एक नया लाने:

[root]# git svn reset 12406 
    r12406 = be19ae4c7d1a3c3da6dd90389aebd6d76792cc71 (refs/remotes/git-svn) 
[root]# git svn fetch 
     M  src/test/java/csl/resource/ioc/AbstractResourceIocTest.java 
    r12977 = 1b21f560b0354b28fe1a272d7723b1e6fa90a99c (refs/remotes/git-svn) 
     M  src/test/java/csl/resource/ioc/AbstractResourceIocTest.java 
    r12978 = bf22ea0151a364eb1ca1af37a7a907d5b5cc7420 (refs/remotes/git-svn) 
     M  src/test/java/csl/resource/ioc/AbstractResourceIocTest.java 
    r12987 = ce922c2eae07f6c12dbbd4175a9c61055b563ee3 (refs/remotes/git-svn) 

और जब मैं लॉग संस्करणों की जांच, वे अपरिवर्तित हैं।

मैं svn से नवीनतम संस्करणों को खींचने के लिए git-svn कैसे प्राप्त करूं?

संपादित करें:

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

git reset --soft refs/remotes/git-svn 
+1

Git भंडार मैं एक नंगे भंडार है कि केवल कभी से (कोई dcommits) पढ़ा जाएगा में करने के लिए डेटा खींच रहा है, तो यह भी एक रिबेस अनुमति नहीं दी जाएगी। – Starkii

+0

इसके अतिरिक्त, "git svn log -1" सही संस्करण देता है, लेकिन "गिट लॉग -1" नहीं है और अद्यतन संस्करण रेपो में नहीं है। – Starkii

+0

स्टार्की: आपको 'गिट-एसवीएन' और' गिट 'के बीच अंतर करना होगा। 'गिट लॉग' वर्तमान गिट प्रतिबद्धता ('HEAD') से प्रदर्शित होता है, 'गीट svn log' svn मेटाडेटा के माध्यम से प्राप्त जानकारी का उपयोग करता है और इसके लिए लॉग प्रदर्शित करता है - HEAD - svn commits से आवश्यक रूप से पहुंच योग्य नहीं है। – knittl

उत्तर

6

मुझे जवाब मिला, svn डेटा को एक निष्क्रिय थ्रेड में लोड किया गया है जो सामान्यतः विलय किया जाएगा सक्रिय शाखा में, जो एक नंगे भंडार में मौजूद नहीं है। मैंने रीसेट करने की कोशिश की, लेकिन उसे भी एक सक्रिय शाखा की जरूरत है। अंतिम जवाब था:

git reset --soft refs/remotes/git-svn 
+0

बेवकूफ सवाल, लेकिन क्या आप इसे गीट svn fetch के बाद करते हैं, या इससे पहले? –

4

मुझे विश्वास है कि आप git svn rebase चाहते हैं। यह git pull से अलग है, लेकिन इसके समान दोनों में दो चरण शामिल हैं (रिमोट से प्राप्त करें और फिर रीबेस या मर्ज करें)।

तुम भी केवल पहले से ही प्राप्त किए गए प्रतिबद्ध rebase कर सकते हैं:

git svn rebase --local 

आप स्थानीय प्रतिबद्ध है कि SVN में अभी तक नहीं हैं, तो, Git-SVN नवीनतम SVN करता है की चोटी पर ही पुन: होगा (rebase) उन्हें।

23

git svn fetch केवल आपके स्थानीय ऑब्जेक्ट डेटाबेस में नए संशोधन की प्रतिलिपि बनाता है, git fetch जैसे बहुत अधिक - दोनों केवल ऑब्जेक्ट डेटाबेस सिंक्रनाइज़ करते हैं। यह आपकी शाखा और कामकाजी प्रति अपडेट नहीं करेगा। अपनी शाखा में नए प्राप्त किए गए परिवर्तन प्राप्त करने के लिए, git svn rebase का उपयोग करें; यह नवीनतम svn संशोधन के शीर्ष पर आपके सभी स्थानीय परिवर्तनों को फिर से लागू करेगा।

git svn rebase कोई स्थानीय काम नहीं होने पर तेजी से आगे बढ़ेगा, इसलिए इसे इतिहास के साथ गड़बड़ नहीं करना चाहिए। वैकल्पिक रूप से आप git merge --ff-only git-svn इस्तेमाल कर सकते हैं तेजी से आगे करने के लिए हाल ही में SVN संशोधन करने के लिए (और गर्भपात जब यह तेजी से forwardable नहीं है, एक प्रत्यक्ष वंशज नहीं यानी)

आप केवल git svn reset का उपयोग करना चाहिए जब नदी के ऊपर SVN इतिहास बदल गया है (svndump/svnadmin) और आपको नए कामों को फिर से लाने की जरूरत है, लेकिन यह लगभग कभी नहीं होना चाहिए (अन्यथा व्यवस्थापक को दोष दें!)

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