使用Jgit以编程方式检索我的Github帐户下的所有存储库

时间:2016-07-24 08:11:10

标签: java github jgit

我对JGit客户端有一些挑战。我将它嵌入Java App&我想在Github上的帐户下获取所有存储库并显示它们。另外,我可以使用JGit直接在Github上创建一个存储库。像创建远程存储库一样?

我已经完成了这个link,但这对我来说似乎很通用。提前致谢

2 个答案:

答案 0 :(得分:1)

List user repositories API可以从任何语言(包括Java)调用,与JGit无关。

GET /users/:username/repos

进行这些调用的Java库示例为“GitHub API for Java ”及其java.org.kohsuke.github.GHPerson.java#listRepositories()方法

new PagedIterator<GHRepository>(
   root.retrieve().asIterator("/users/" + login + "/repos?per_page=" + pageSize, 
                              GHRepository[].class, pageSize))

获得这些用户回购的网址后,您可以创建其中的JGit回购。

答案 1 :(得分:1)

我也执行相同的要求以获取特定用户的存储库列表 试试这个,您将获得该用户的所有存储库 //这里的名称表示GitHub帐户的用户名

public Collection<AuthMsg> getRepos(String name) {

    String url = "https://api.github.com/users/"+name+"/repos";

    String data = getJSON(url);
    System.out.println(data);

    Type collectionType = new TypeToken<Collection<AuthMsg>>(){}.getType();
    Collection<AuthMsg> enums = new Gson().fromJson(data, collectionType);

    return enums;

}

// getJson方法

public String getJSON(String url) {
    HttpURLConnection c = null;
    try {
        URL u = new URL(url);
        c = (HttpURLConnection) u.openConnection();
        c.setRequestMethod("GET");
        c.setRequestProperty("Content-length", "0");
        c.setUseCaches(false);
        c.setAllowUserInteraction(false);
        c.connect();
        int status = c.getResponseCode();

        switch (status) {                                      
            case 200:
            case 201:
                BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
                StringBuilder sb = new StringBuilder();
                String line;
                while ((line = br.readLine()) != null) {
                    sb.append(line+"\n");
                }
                br.close();
                return sb.toString();
        }

    } catch (MalformedURLException ex) {
        Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
    } finally {
       if (c != null) {
          try {
              c.disconnect();
          } catch (Exception ex) {
             Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
          }
       }
    }
    return null;
}

// AuthMsg类

public class AuthMsg {
//"name" which is in json what we get from url
@SerializedName("name")
private String repository;

/**
 * @return the repository
 */
public String getRepository() {
    return repository;
}

/**
 * @param repository the repository to set
 */
public void setRepository(String repository) {
    this.repository = repository;
}

}