2011-12-17 9 views
7

मैं जेजीआईटी के साथ गिट रिपोजिटरी क्लोन करने की कोशिश कर रहा हूं और मुझे असमर्थित क्रेडेंशियलइटम के साथ समस्या है।जेजीआईटी क्लोन रिपोजिटरी

मेरे कोड:

FileRepositoryBuilder builder = new FileRepositoryBuilder(); 
Repository repository = builder.setGitDir(PATH).readEnvironment().findGitDir().build(); 

Git git = new Git(repository);    
CloneCommand clone = git.cloneRepository(); 
clone.setBare(false); 
clone.setCloneAllBranches(true); 
clone.setDirectory(PATH).setURI(url); 
UsernamePasswordCredentialsProvider user = new UsernamePasswordCredentialsProvider(login, password);     
clone.setCredentialsProvider(user); 
clone.call(); 

यह हो जाएगा अपवाद:

org.eclipse.jgit.errors.UnsupportedCredentialItem: ssh://[email protected]:22: Passphrase for C:\Users\Marek\.ssh\id_rsa at 
org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider.get(UsernamePasswordCredentialsProvider.java:110).... 

लेकिन अगर मैं .ssh में फ़ाइल known_hosts हटाना \ यह अलग अपवाद हो जाएगा

org.eclipse.jgit.errors.UnsupportedCredentialItem: ssh://[email protected]:22: The authenticity of host 'github.com' can't be established. 
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. 
Are you sure you want to continue connecting? 
at org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider.get(UsernamePasswordCredentialsProvider.java:110).... 

है वहाँ उस प्रश्न को "हां" टाइप करने या बस इसे छोड़ने की कोई संभावना है?

धन्यवाद!

उत्तर

3

मुझे लगता है आप GitHub मदद की जांच करना चाहते हैं:

http://help.github.com/win-set-up-git/

विशेष रूप से SSH कुंजियों को पैदा करने (ssh-keygen -t rsa -C "[email protected]") के बारे में हिस्सा। अपने पर्यावरण के लिए आलेख पढ़ें, और आप समझेंगे कि बेहतर कॉन्फ़िगरेशन कैसे प्राप्त करें।

4

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

2

मुझे एक ही समस्या थी। कारण आरएसए निजी कुंजी के लिए पासफ्रेज सेट था। जब मैं इस कुंजी के लिए पासफ्रेज हटा देता हूं तो उसने CredentialsProvider के बिना काम करना शुरू किया।

UsernamePasswordCredentialsProvider शायद पासफ्रेज़ का समर्थन नहीं करते हैं। आपसे पासफ़्रेज़ सेट करना चाहते हैं, तो आप निर्धारित कर सकते हैं, जिसके आप स्वामी CredentialProvider है, जो यह उदाहरण के लिए समर्थन करेंगे,:

CloneCommand clone = Git.cloneRepository() 
    .setURI("...") 
    .setCredentialsProvider(new CredentialsProvider() { 

     @Override 
     public boolean supports(CredentialItem... items) { 
      return true; 
     } 

     @Override 
     public boolean isInteractive() { 
      return true; 
     } 

     @Override 
     public boolean get(URIish uri, CredentialItem... items) 
       throws UnsupportedCredentialItem { 

      for (CredentialItem item : items) { 
        if (item instanceof CredentialItem.StringType) { 
         ((CredentialItem.StringType) item). 
          setValue(new String("YOUR_PASSPHRASE")); 
         continue; 
        } 
       } 
       return true; 
      } 
     }); 

clone.call(); 

यह मेरे लिए काम करता है;)

3

यह कर देगा (@michals की तरह, केवल कम कोड) यदि एसएसएच

public void gitClone() throws GitAPIException { 
    final File localPath = new File("./TestRepo"); 
    Git.cloneRepository() 
     .setURI(REMOTE_URL) 
     .setDirectory(localPath) 
     .setCredentialsProvider(new UsernamePasswordCredentialsProvider("***", "***")) 
     .call(); 
} 
के साथ उपयोगकर्ता नाम/पासवर्ड का उपयोग करना
संबंधित मुद्दे