2012-12-19 17 views
9

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

मैं नीचे दिए गए कोड का उपयोग करता हूं, जो एसवीएन भंडार में एक फ़ोल्डर जोड़ता है। लेकिन इसने /Users/test/svnAddDirCheck फ़ोल्डर में .svn फ़ोल्डर नहीं बनाया।

मैं चाहता हूं कि फाइलों को चेक-इन किया जाए और मैं भविष्य में कुछ बदली गई फाइलें भी करना चाहता हूं। स्रोत कोड की जांच किए बिना, मैं यह कैसे कर सकता हूं? क्या मैं इन फ़ाइलों को एसवीएन में जोड़ सकता हूं और साथ ही मैं किसी भी बदली गई फाइलों को सीधे कर सकता हूं? यदि आप भविष्य में परिवर्तन के लिए प्रतिबद्ध करने आप कॉपी आप एक चेक बाहर करने की ज़रूरत स्थानीय फ़ोल्डर एक काम प्रतिलिपि बनाने के लिए, और एक काम कर प्राप्त करने की आवश्यकता चाहते

@Test 
public void importWholeDir() throws Exception { 
    try { 
     DAVRepositoryFactory.setup(); 
     SVNRepositoryFactoryImpl.setup(); 
     FSRepositoryFactory.setup(); 

     String svnUrl = "https://abc.com/svn/repos/projects/test/CREATE2"; 
     File dir = new File("/Users/test/svnAddDirCheck"); 
     SVNURL url = SVNURL.parseURIDecoded(svnUrl); 
     String userName = "XXXXXXX"; 
     String userPassword = "XXXXXXXXX"; 

     importDirectoryContentToSubversion(svnUrl, dir.getPath(), userName, userPassword, "directory and file added"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public static SVNCommitInfo importDirectoryContentToSubversion(final String repositoryURL, final String subVersionedDirectory, final String userName, final String hashedPassword, final String commitMessage) throws SVNException { 
    final SVNClientManager cm = SVNClientManager.newInstance(new DefaultSVNOptions(), userName, hashedPassword); 
    return cm.getCommitClient().doImport(new File(subVersionedDirectory), SVNURL.parseURIEncoded(repositoryURL), "<import> " + commitMessage, null, false, true, SVNDepth.fromRecurse(true)); 
} 
+2

तो, आपने अपाचे सबवर्जन रिपोजिटरी में एक निर्देशिका आयात की है। यह स्थानीय निर्देशिका को एक कार्यशील प्रतिलिपि नहीं बनायेगा, इसलिए आपके लिए एकमात्र विकल्प 'svn import' नई फाइलों को करना है। ** आप एक कामकाजी प्रतिलिपि क्यों नहीं देखना चाहते हैं? ** कार्य क्या है? – bahrep

+0

मैं एक एप्लीकेशन विकसित कर रहा हूं, जिसमें उपयोगकर्ता एप्लिकेशन बना सकता है। और मैंने अपने ऐप से अपने प्रोजेक्ट को चेक-इन करने का विकल्प प्रदान किया।मैंने उपर्युक्त कोड का उपयोग किया, जो प्रोजेक्ट को रिपोजिटरी में जोड़ता है, लेकिन यह चेक-इन फ़ोल्डर के लिए संस्करण नियंत्रण नहीं बना रहा है। – Muthu

+4

आप इस निर्देशिका पर "चेकआउट" को कॉल कर सकते हैं, यह मौजूदा फ़ाइलों को ओवरराइट नहीं करेगा। –

उत्तर

0

यह, जिस तरह से SVN काम करता है।

एक वैकल्पिक मैं कभी कभी का उपयोग

  • सीधे एक खाली फ़ोल्डर बनाने के भंडार में,
  • बाहर की जाँच है कि स्थानीय फ़ोल्डर पर फ़ोल्डर
  • (यह अपने .svn फ़ोल्डर के साथ काम कर रहे प्रतिलिपि बनाने) है तो जोड़ने और करने से मौजूदा फ़ाइलों
1

मैं SVNKit संभालने वास्तव में भंडार के एक SVN ऐड कर रहा है और नहीं काम कर प्रतिलिपि? क्या वो सही है?

यदि ऐसा है, तो आप फ़ाइलों को एक भंडार में नहीं जोड़ सकते हैं जब तक कि आपके पास उस फ़ोल्डर में नहीं है जिसमें फाइलें चेक आउट होंगी।

इसके अलावा आप एसवीएन का किस संस्करण का उपयोग कर रहे हैं? 1.7 अब आपकी कार्यशील प्रतिलिपि के प्रत्येक फ़ोल्डर में एक .svn फ़ोल्डर नहीं रखता है, केवल रूट फ़ोल्डर में।

अनिवार्य रूप से आप क्या करना चाहते हैं, छद्म कोड है:

  1. चेक बाहर निर्देशिका है जहाँ आप फ़ोल्डरों/फ़ाइलें जोड़ना चाहते हैं। यदि यह एक फ़ोल्डर है जिसमें अन्य फ़ोल्डर फाइलें हैं, तो आप इसे गहराई से गहराई से देख सकते हैं ताकि आपको उस फ़ोल्डर में चेक की जा सकने वाली कोई अन्य फाइल/फ़ोल्डर्स न मिले।

  2. अपना नया फ़ोल्डर/फाइल बनाएं।

  3. कार्यशील प्रतिलिपि में फ़ाइलों को "जोड़ने" के लिए svn किट का उपयोग करें।

  4. कार्यशील प्रति "प्रतिबद्ध" करने के लिए svn किट का उपयोग करें जो फ़ोल्डर/फ़ाइलों को भंडार में जोड़ देगा।

बेशक, चरण 1 केवल तभी किया जाना चाहिए यदि आपने इसे पहले से नहीं किया है। आपको उसी चरण का पालन करना चाहिए जो आप मैन्युअल रूप से करेंगे। मेरा सुझाव है कि आप बुनियादी उपयोग पर एसवीएन दस्तावेज की समीक्षा करें। एक बार जब आप svn.exe के साथ क्या करना चाहते हैं तो इसे svnkit API का उपयोग करके डुप्लिकेट करना काफी आसान होना चाहिए।