2016-08-18 1 views
0

Ich benutze diesen Code, um alle Commits von Guthub zu erhalten. Ich möchte die Commits erst ab heute bekommen.Erhalten Sie alle Commits von heute

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

Gibt es eine Möglichkeit, die Commits nur von heute zu bekommen?

Antwort

3

Immer gut zu wissen, welche Bibliothek Sie verwenden. Github API hat „da“ und „bis“ Parameter: https://developer.github.com/v3/repos/commits/

Auch diese Argumente in der Kohsuke Bibliothek zur Verfügung stehen: https://github.com/kohsuke/github-api/blob/master/src/main/java/org/kohsuke/github/GHCommitQueryBuilder.java

Mit „da“ und „bis“ Parameter werden Sie von anfordernden nicht benötigte speichern Daten und zu viele Anfragen an den Server.

Die Bibliothek ist auch in Maven central:

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

Hier ist der Beispielcode, der für mich gearbeitet:

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

Sieht aus wie ich das Ergebnis nicht filtern können? Oder ich liege falsch? –

+0

Ich habe die Parameter "seit" und "bis" nicht aus der Egit-GitHub-Bibliothek gefunden, aber Kohsuke hat sie: https://github.com/kohsuke/github-api/blob/master/src/main/java/org /kohsuke/github/GHCommitQueryBuilder.java –

+0

Können Sie mir ein Beispiel geben, wie ich das mit Kohsuke machen kann? –

Verwandte Themen