mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-01-02 05:39:48 +01:00
Implement simple merge dry run
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import org.eclipse.jgit.merge.MergeStrategy;
|
||||
import org.eclipse.jgit.merge.ResolveMerger;
|
||||
import sonia.scm.repository.InternalRepositoryException;
|
||||
import sonia.scm.repository.Repository;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class GitMergeDryRunCommand extends AbstractGitCommand implements MergeDryRunCommand {
|
||||
GitMergeDryRunCommand(GitContext context, Repository repository) {
|
||||
super(context, repository);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMergeable(MergeDryRunCommandRequest request) {
|
||||
try {
|
||||
org.eclipse.jgit.lib.Repository repository = context.open();
|
||||
ResolveMerger merger = (ResolveMerger) MergeStrategy.RECURSIVE.newMerger(repository, true);
|
||||
return merger.merge(repository.resolve(request.getBranchToMerge()), repository.resolve(request.getTargetBranch()));
|
||||
} catch (IOException e) {
|
||||
throw new InternalRepositoryException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,7 +63,8 @@ public class GitRepositoryServiceProvider extends RepositoryServiceProvider
|
||||
Command.INCOMING,
|
||||
Command.OUTGOING,
|
||||
Command.PUSH,
|
||||
Command.PULL
|
||||
Command.PULL,
|
||||
Command.MERGE_DRY_RUN
|
||||
);
|
||||
//J+
|
||||
|
||||
@@ -240,7 +241,11 @@ public class GitRepositoryServiceProvider extends RepositoryServiceProvider
|
||||
return new GitTagsCommand(context, repository);
|
||||
}
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
@Override
|
||||
public MergeDryRunCommand getMergeDryRunCommand() {
|
||||
return new GitMergeDryRunCommand(context, repository);
|
||||
}
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
/** Field description */
|
||||
private GitContext context;
|
||||
|
||||
Reference in New Issue
Block a user