¿Cómo se realiza una fusión en JGit?

Estoy viendo la documentation de JGit , actualmente en la versión 3.5.1.201410131835-r , y no puedo encontrar el equivalente de git-merge-base .

Me gustaría determinar si una twig está actualizada, detrás, adelante o divergente, como se muestra en git: compruebe si es necesario extraer .

¿Cuál es la forma más concisa en JGit de encontrar tan buenos ancestros comunes como sea posible para una fusión?

Puede usar RevFilter.MERGE_BASE para eso:

 RevWalk walk = new RevWalk(repository); walk.setRevFilter(RevFilter.MERGE_BASE); walk.markStart(commit1); walk.markStart(commit2); RevCommit mergeBase = walk.next(); 

También tenga en count que existe BranchTrackingStatus si todo lo que le interesa es el recuento delante / detrás de una sucursal en comparación con su sucursal de seguimiento remoto.

Aquí está con JGit usando BranchTrackingStatus:

 public enum TrackingStatus { SAME, BEHIND, AHEAD, DIVERGED } public TrackingStatus getTrackingStatus() throws IOException, GitAPIException { Repository userRepo = new FileRepository(<path_to_.git_file>); Git git = new Git(userRepo); git.fetch().call(); BranchTrackingStatus bts = BranchTrackingStatus.of(git.getRepository(), git.getRepository().getBranch()); int aheadCount = bts.getAheadCount(); int behindCount = bts.getBehindCount(); if (aheadCount == 0 && behindCount == 0) { return TrackingStatus.SAME; } else if (aheadCount > 0 && behindCount == 0) { return TrackingStatus.AHEAD; } else if (aheadCount == 0 && behindCount > 0) { return TrackingStatus.BEHIND; } else { return TrackingStatus.DIVERGED; } } 

jgit tiene esto:

 RevCommit org.eclipse.jgit.merge.Merger.getBaseCommit(RevCommit a, RevCommit b) throws IncorrectObjectTypeException, IOException 

testing