Как слиться в JGit?

Как слить в JGit?

Скажем, я хочу объединить master с ветвью foo, как это сделать?

Ответ 1

Чтобы слить, вы можете использовать MergeCommand (в пакете org.eclipse.jgit.api) после CheckoutCommand. Чтобы предоставить вам пример, потому что на самом деле Jgit не хватает примеров:

Git git = ... // you get it through a CloneCommand, InitCommand 
              // or through the file system

CheckoutCommand coCmd = git.checkout(); 
// Commands are part of the api module, which include git-like calls
coCmd.setName("master");
coCmd.setCreateBranch(false); // probably not needed, just to make sure
coCmd.call(); // switch to "master" branch

MergeCommand mgCmd = git.merge();
mgCmd.include("foo"); // "foo" is considered as a Ref to a branch
MergeResult res = mgCmd.call(); // actually do the merge

if (res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){
   System.out.println(res.getConflicts().toString());
   // inform the user he has to handle the conflicts
}

Я не пробовал код, поэтому он может быть не идеальным, но просто для начала. И я не включил импорт. Разработка с помощью JGit предполагает множество попыток, основанных на javadoc

Ответ 3

JGit имеет полномасштабную реализацию Java стратегии стратегии слияния git с 2010 года. Если вам нужны примеры, посмотрите на соответствующие тестовые примеры JGit и посмотрите, как EGit использует MergeCommand, посмотрите класс org.eclipse.egit.core.op.MergeOperation.