2017-03-09 5 views
0

hereにあるgithub Search APIを呼び出して、特定のコミットに関する詳細を受け取ることは可能ですが、今私はhereに見つけることができるgithub java API (org.eclipse.egit.github.*)を使用して同じ応答を取得する必要があります。 hereにあるバージョン2.1.5のドキュメントによれば、コミットハッシュのみを提供することによってコミット情報を取得する方法はありません。CommitService classそれらに達するための回避策はありますか?事前に感謝しますgithub java API(org.eclipse.egit.github。*)を使用して特定のコミットハッシュを検索する方法

答えて

1

方法を使用することができます。もう1つの引数、コミットが検索されるリポジトリを入力してください。例えば、

GitHubClient client = new GitHubClient(server).setCredentials(login, token); 
RepositoryService repoService = new RepositoryService(client); 

// If you know which repository to search (you know the owner and repo name) 
Repository repository = repoService.getRepository(owner, repoName); 

CommitService commitService = new CommitService(client) 
Commit commit1 = commitService.getCommit(repository, sha).getCommit(); 
System.out.println("Author: " + commit1.getAuthor().getName()); 
System.out.println("Message: " + commit1.getMessage()); 
System.out.println("URL: " + commit1.getUrl()); 

それとも、あなたがわからない場合、RepositoryService.getRepositories()メソッドから返された各リポジトリ経由だけでループがリポジトリ検索することがあります。たとえば、

List<Repository> repositories = repoService.getRepositories(); 
Commit commit2 = null; 
for (Repository repo : repositories) { 
    try { 
     commit2 = commitService.getCommit(repo, sha).getCommit(); 
     System.out.println("Repo: " + repo.getName()); 
     System.out.println("Author: " + commit2.getAuthor().getName()); 
     System.out.println("Message: " + commit2.getMessage()); 
     System.out.println("URL: " + commit2.getUrl()); 
     break; 
    } catch (RequestException re) { 
     if (re.getMessage().endsWith("Not Found (404)")) { 
      continue; 
     } else { 
      throw re; 
     } 
    } 
} 
関連する問題