2016-08-18 65 views
0

我使用此代码从Guthub获取所有提交。我只想从今天起获得提交。从今天获取所有提交

public void listCommits(String user_name, String password) throws IOException 
    { 
     GitHubClient client = new GitHubClient(); 
     client.setCredentials(user_name, password); 

     RepositoryService service = new RepositoryService(client); 

     List<Repository> repositories = service.getRepositories(); 

     for (int i = 0; i < repositories.size(); i++) 
     { 
      Repository get = repositories.get(i); 
      System.out.println("Repository Name: " + get.getName()); 

      CommitService commitService = new CommitService(client); 
      for (RepositoryCommit commit : commitService.getCommits(get)) 
      { 
       System.out.println("Repository commit: " + commit.getCommit().getMessage()); 
       System.out.println("Repository commit date : " + commit.getCommit().getCommitter().getDate()); 
      } 
     } 
    } 

有没有什么办法只从今天开始提交?

回答

3

总是很高兴知道你在使用哪个库。 Github的API有“自”和“至”参数: https://developer.github.com/v3/repos/commits/

而且这些参数都在Kohsuke的库可供选择: https://github.com/kohsuke/github-api/blob/master/src/main/java/org/kohsuke/github/GHCommitQueryBuilder.java

使用“自”和“至”参数将节省您的请求不需要数据并向服务器提出太多请求。

图书馆也可在Maven的中央:

<dependency> 
     <groupId>org.kohsuke</groupId> 
     <artifactId>github-api</artifactId> 
     <version>1.77</version> 
    </dependency> 

这里是为我工作的示例代码:

Properties props = new Properties(); 
    props.setProperty("login", "[email protected]"); 
    props.setProperty("password", "YourGithubPassword"); 

    GitHub gitHub = GitHubBuilder.fromProperties(props).build(); 

    GHRepository repository = gitHub.getRepository("your/repo"); 

    Calendar cal = Calendar.getInstance(); 
    cal.set(2014, 0, 4); 
    Date since = cal.getTime(); 
    cal.set(2014, 0, 14); 
    Date until = cal.getTime(); 

    GHCommitQueryBuilder queryBuilder = repository.queryCommits().since(since).until(until); 
    PagedIterable<GHCommit> commits = queryBuilder.list(); 
    Iterator<GHCommit> iterator = commits.iterator(); 

    while (iterator.hasNext()) { 
     GHCommit commit = iterator.next(); 
     System.out.println("Commit: " + commit.getSHA1() + ", info: " + commit.getCommitShortInfo().getMessage() + ", author: " + commit.getAuthor()); 
    } 
+0

看起来我不能过滤的结果呢?或者我错了? –

+0

我没有从egit-github库中找到“since”和“until”参数,但Kohsuke拥有它们:https://github.com/kohsuke/github-api/blob/master/src/main/java/org /kohsuke/github/GHCommitQueryBuilder.java –

+0

你能举一些例子说明我可以如何与Kohsuke做到这一点? –

相关问题