【问题标题】:Get all commits from today获取今天的所有提交
【发布时间】:2016-08-18 22:20:20
【问题描述】:

我使用此代码从 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());
            }
        }
    }

有没有办法只从今天开始获取提交?

【问题讨论】:

    标签: java github github-api


    【解决方案1】:

    总是很高兴知道您正在使用哪个库。 Github API 有 "since" 和 "until" 参数: https://developer.github.com/v3/repos/commits/

    在 Kohsuke 的库中也提供了这些参数: https://github.com/kohsuke/github-api/blob/master/src/main/java/org/kohsuke/github/GHCommitQueryBuilder.java

    使用“since”和“until”参数可以避免请求不需要的数据和向服务器发出过多请求。

    该库也可在 Maven Central 中使用:

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

    这是对我有用的示例代码:

        Properties props = new Properties();
        props.setProperty("login", "somebody@somewhere.com");
        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());
        }
    

    【讨论】:

    • 看起来我无法过滤结果?还是我错了?
    • 我没有从 egit-github 库中找到“since”和“until”参数,但 Kohsuke 有它们:github.com/kohsuke/github-api/blob/master/src/main/java/org/…
    • 你能给我举个例子,我可以用 Kohsuke 做到这一点吗?
    • 一个额外的问题:你能实现在这个用户名中列出每个 repo 中的所有提交吗?可能您需要为存储库实现循环。
    • 您必须为每个存储库执行此操作。该 API 还具有查找每个用户的所有存储库的功能。祝你好运! :)
    猜你喜欢
    • 1970-01-01
    • 2017-02-18
    • 2020-09-28
    • 2011-07-04
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多