使用jgit clone远程代码

GitClone.java

import java.io.File;
import java.io.IOException;

import org.eclipse.jgit.api.CloneCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.ListBranchCommand.ListMode;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.InvalidRemoteException;
import org.eclipse.jgit.api.errors.TransportException;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.eclipse.jgit.transport.SshSessionFactory;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;

public class GitClone {
    private static final String REMOTE_URL = "https://github.com/***/GitTest.git";
    private static String login = "****@gmail.com";
    private static String password = "123456";

    public static Repository cloneRepository() throws IOException, InvalidRemoteException, TransportException, GitAPIException {

        // prepare a new folder for the cloned repository
        File localPath = new File("E:/temp/TestGitRepositorygithub");
        System.out.println(localPath);
        if (!localPath.exists() && !localPath.isDirectory()) {
            localPath.mkdir();
        }
        localPath.delete();

        // then clone .setBranchesToClone(Arrays.asList("refs/heads/master"))
        System.out.println("Cloning from " + REMOTE_URL + " to " + localPath);
        CloneCommand clone = Git.cloneRepository().setURI(REMOTE_URL).setDirectory(localPath);
        if (REMOTE_URL.contains("ssh")) {
            MySShSessionFactory myFactory = new MySShSessionFactory();
            myFactory.setSshKeyFilePath("C:/id_rsa");
            SshSessionFactory.setInstance(myFactory);
        }
        if (REMOTE_URL.toString().contains("http") || REMOTE_URL.toString().contains("https")) {
            UsernamePasswordCredentialsProvider user = new UsernamePasswordCredentialsProvider(login, password);
            clone.setCredentialsProvider(user);
        }

        Git repo1 = clone.call();

        for (Ref b : repo1.branchList().setListMode(ListMode.ALL).call())
            System.out.println("(standard): cloned branch " + b.getName());
        repo1.close();
        // now open the created repository
        FileRepositoryBuilder builder = new FileRepositoryBuilder();
        Repository repository = builder.setGitDir(new File(localPath + "/.git")).readEnvironment()
        // scan environment GIT_DIR
         // GIT_WORK_TREE
                // variables
                .findGitDir() // scan up the file system tree
                .build();
        return repository;
    }
}

登录发表评论 注册

blue_cliff

感谢大佬,解决了我的问题

请叫我不土

楼主你好 我把您的代码粘过去运行后为啥报org.eclipse.jgit.errors.NotSupportedException 呢

新建主题 记录代码

学员动态

  • k**7添加了笔记:n...
  • C**f回复了y**4在课程中的问题:看错误是pom文件的...
  • p**a添加了笔记:默认值是0L...
  • k**7添加了笔记:n...
  • 七向课程作业中提交了代码
  • h**1向课程作业中提交了代码
  • y**4在课程中提出了问题:Exception ...
  • p**a添加了笔记:String for...
  • p**a添加了笔记:两个字符串变量指向同...
  • k**7添加了笔记:n...
  • t**e向课程作业中提交了代码
  • p**a添加了笔记:如果要定义float...
  • 吴祖彦向课程作业中提交了代码
  • 天码君回复了我**…在课程中的问题:欢迎来到天码营学习,...
  • c**5向课程作业中提交了代码
  • 天码君回复了y**o在课程中的问题:欢迎来到天码营学习,...
  • l**7添加了笔记:把计算机当成美女,给...
  • c**k向课程作业中提交了代码
  • c**k向课程作业中提交了代码
  • t**1评论了:还有没有关于APP的...
  • p**a添加了笔记:前缀0b表示二进制,...
  • b**f评论了:大佬厉...
  • C**f回复了y**4在课程中的问题:这个是访问哪个URL...
  • p**a向课程作业中提交了代码
  • c**k向课程作业中提交了代码
  • y**4在课程中提出了问题:我感觉大致相同,因为...
  • p**a添加了笔记:boolean数据类...
  • C**f回复了2**9在课程中的问题:报什么错误了吗,我刚...
  • 1**3向课程作业中提交了代码
  • v**g添加了笔记:Java是一种大小写...
  • y**4在课程中提出了问题:我对属性标注了@Au...
  • y**4在课程中提出了问题:老师,我把repos...
  • c**7添加了笔记:注意即使自动映射,一...
  • c**7添加了笔记:使用resultMa...
  • k**7添加了笔记:n...
  • b**f评论了:感谢大佬,解决了我的...
  • p**a评论了:双精度浮点类变量 请...
  • v**g添加了笔记:Eclipse包含了...
  • v**g在课程中提出了问题:ERROR SEE ...
  • C**f回复了y**4在课程中的问题:这个和之前额问题是类...
  • p**a向课程作业中提交了代码
  • 天码君回复了h**1在课程中的问题:欢迎来到天码营学习,...
  • w**k在课程中提出了问题:点到实战任务就会一直...
  • p**a添加了笔记:每一个修改Strin...
  • c**e完成了课程的作业
  • p**a添加了笔记:int类型赋值给lo...
  • 2**9在课程中提出了问题:老师,QQ群 600...
  • 我**…向课程作业中提交了代码
  • 我**…向课程作业中提交了代码
  • C**f回复了y**4在课程中的问题:不需要拷贝,直接在那...
  • 我**…向课程作业中提交了代码
  • c**7添加了笔记:一对多 嵌套结果 &...
  • y**o向课程作业中提交了代码
  • p**a向课程作业中提交了代码
  • v**g在课程中提出了问题:里面的内容 SESS...
  • c**7添加了笔记:提示 Mybatis...
  • m**w评论了:你好,请问你们这个网...
  • y**4在课程中提出了问题:除了拷贝还有那种方式...
  • c**e完成了课程的作业
  • 1**8添加了笔记
  • c**k向课程作业中提交了代码
  • c**7添加了笔记:如果你使用数据库自动...
  • c**7添加了笔记:添加一个专门用于插入...
  • 2**9在课程中提出了问题:谢谢回复。应该是网络...
  • k**7添加了笔记:n...
  • v**g添加了笔记:James Gosl...
  • v**g添加了笔记:程序的文件名称必须和...
  • p**a向课程作业中提交了代码
  • c**e完成了课程的作业
  • y**4在课程中提出了问题:package co...
  • 天码君回复了w**w在课程中的问题:欢迎来到天码营学习,...
  • c**k向课程作业中提交了代码
  • t**e在课程作业中回复了老师:为什么提交作业一直提...
  • p**a向课程作业中提交了代码
  • y**4在课程中提出了问题:package co...
  • p**a向课程作业中提交了代码
  • p**a添加了笔记:char数据类型可以...
  • 七向课程作业中提交了代码
  • 2**9在课程中提出了问题:老师,请问JDK是装...
  • 我**…向课程作业中提交了代码
  • p**a添加了笔记:Java接口和Jav...
  • 我**…向课程作业中提交了代码
  • h**1向课程作业中提交了代码
  • c**e完成了课程的作业
  • p**a向课程作业中提交了代码
  • b**d向课程作业中提交了代码
  • v**g添加了笔记:Java编程语言是一...
  • 我**…向课程作业中提交了代码
  • p**a添加了笔记:boolean eq...
  • p**a添加了笔记:文档注释:在要注释的...
  • 七向课程作业中提交了代码
  • C**f回复了v**g在课程中的问题:JAVA的版本不对,...
  • v**g添加了笔记:Java编程语言是一...
  • 七向课程作业中提交了代码
  • p**a添加了笔记:engine = n...
  • C**f回复了y**4在课程中的问题:你不能通过main函...
  • 天码君回复了l**7在课程中的问题:欢迎来到天码营学习,...
  • Siyi评论了:交了费为啥就用不了实...
  • k**7添加了笔记:n...
  • C**f回复了2**9在课程中的问题:8u241...
反馈意见