2011-12-17 15 views
7

Git deposunu JGit ile kopyalamaya çalışıyorum ve UnsupportedCredentialItem ile ilgili bir sorunum var.JGit clone deposu

Kodum

:

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(); 

O oluşacak İstisna: Farklı İstisna meydana gelecektir \ ı .ssh dosya known_hosts silerseniz

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).... 

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).... 

Ama mı var Bu soruya "evet" yazmanız veya sadece atlamanız mümkün mü?

Teşekkür ederiz!

cevap

3

Sana github yardım görmek istemesi varsayalım: (ssh-keygen -t rsa -C "[email protected]") ssh anahtarları oluşturma hakkında

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

Özellikle parçası. Ortamınız için makaleyi okuyun ve nasıl daha iyi bir yapılandırma yapılacağını anlayacaksınız.

4

Kullanıcı adı ve şifre ile giriş yaparsanız, https'ye ihtiyacınız var demektir. Ssh için github ile kayıttaki ile eşleşen bir genel anahtara ihtiyacınız olacaktır.

2

Aynı problem vardı. Nedeni, özel anahtar için ayarlanmış bir parola. Bu anahtar için parola kaldırıldığında, CredentialsProvider olmadan çalışmaya başladı. Muhtemelen parolaları desteklemiyor olabilirsiniz. Eğer parola kümesine sahip isterseniz, örneğin, bunu destekleyecek olan, sen CredentialProvider sahibi tanımlayabiliriz:

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(); 

Bana uyar;)

3

Bu @michals gibi (ve bunu yapacağız kullanıcı adı/parola ile ssh kullaniyorsaniz sif