2014-07-01 17 views
5

Jak mogę uzyskać wszystkie gałęzie w repozytorium z JGit? Weźmy example repository. Jak widać, ma 5 gałęzi.
Here Znalazłem ten przykład:Uzyskiwanie wszystkich oddziałów za pomocą JGit

int c = 0; 
List<Ref> call = new Git(repository).branchList().call(); 
for (Ref ref : call) { 
    System.out.println("Branch: " + ref + " " + ref.getName() + " " 
      + ref.getObjectId().getName()); 
    c++; 
} 
System.out.println("Number of branches: " + c); 

Ale mam to:

Branch: Ref[refs/heads/master=d766675da9e6bf72f09f320a92b48fa529ffefdc] refs/heads/master d766675da9e6bf72f09f320a92b48fa529ffefdc 
Number of branches: 1 
Branch: master 

Odpowiedz

9

Jeśli jest zdalne oddziały że brakuje, trzeba ustawić ListMode z ListBranchCommand do ALL lub REMOTE. Domyślna funkcja ListMode (null) zwraca tylko lokalne gałęzie.

new Git(repository).branchList().setListMode(ListMode.ALL).call(); 
+3

mam zaktualizowane przykład w jgit-cookbook, aby to pokazać. – centic

0

użyć poniższego sposobu oddziałów git repo bez klonowanie przy użyciu Jgit

To idzie w pom.xml

<dependency> 
     <groupId>org.eclipse.jgit</groupId> 
     <artifactId>org.eclipse.jgit</artifactId> 
     <version>4.0.1.201506240215-r</version> 
    </dependency> 

Metoda

public static List<String> fetchGitBranches(String gitUrl) 
      { 
       Collection<Ref> refs; 
       List<String> branches = new ArrayList<String>(); 
       try { 
        refs = Git.lsRemoteRepository() 
          .setHeads(true) 
          .setRemote(gitUrl) 
          .call(); 
        for (Ref ref : refs) { 
         branches.add(ref.getName().substring(ref.getName().lastIndexOf("/")+1, ref.getName().length())); 
        } 
        Collections.sort(branches); 
       } catch (InvalidRemoteException e) { 
        LOGGER.error(" InvalidRemoteException occured in fetchGitBranches",e); 
        e.printStackTrace(); 
       } catch (TransportException e) { 
        LOGGER.error(" TransportException occurred in fetchGitBranches",e); 
       } catch (GitAPIException e) { 
        LOGGER.error(" GitAPIException occurr in fetchGitBranches",e); 
       } 
       return branches; 
      }