Как слиться в JGit?
Как объединить в JGit?
предположим, я хочу объединить master
с foo
филиал, как мне это сделать?
3 ответов
чтобы объединить, вы можете использовать MergeCommand
(в пакете org.затмение.jgit.ППИ), после 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
вы найдете в хранилище JGit различные тестовые классы для слияния, например,SimpleMergeTest
Merger ourMerger = MergeStrategy.OURS.newMerger(db);
boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
assertTrue(merge);
JGit имеет полномасштабную реализацию Java стратегии слияния git resolve с 2010 года. Если вам нужны примеры, посмотрите на соответствующие тестовые случаи JGit и посмотрите, как EGit использует MergeCommand, посмотрите на class org.eclipse.egit.core.op.MergeOperation
.