mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-03 03:55:51 +01:00
Add test for "real" merge commits
This commit is contained in:
@@ -91,6 +91,19 @@ public class MergeDetectionITCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldDetectSimpleMergeAsMerged() throws IOException {
|
public void shouldDetectSimpleMergeAsMerged() throws IOException {
|
||||||
|
client.getCheckoutCommand().checkout("master");
|
||||||
|
client.getMergeCommand().noFf().merge("develop");
|
||||||
|
|
||||||
|
initializeMergeDetection("master", "develop");
|
||||||
|
|
||||||
|
client.getPushCommand().push();
|
||||||
|
|
||||||
|
Assertions.assertThat(getMergeDetectionResult("preMergeDetection", 0)).isTrue();
|
||||||
|
Assertions.assertThat(getMergeDetectionResult("postMergeDetection", 0)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldDetectFastForwardAsMerged() throws IOException {
|
||||||
client.getCheckoutCommand().checkout("master");
|
client.getCheckoutCommand().checkout("master");
|
||||||
client.getMergeCommand().merge("develop");
|
client.getMergeCommand().merge("develop");
|
||||||
|
|
||||||
|
|||||||
@@ -48,9 +48,25 @@ public class GitMergeCommand implements MergeCommand {
|
|||||||
public Changeset merge(MergeRequest request) throws IOException {
|
public Changeset merge(MergeRequest request) throws IOException {
|
||||||
try (GitChangesetConverter converter = new GitChangesetConverter(git.getRepository())) {
|
try (GitChangesetConverter converter = new GitChangesetConverter(git.getRepository())) {
|
||||||
ObjectId resolved = git.getRepository().resolve(request.getBranch());
|
ObjectId resolved = git.getRepository().resolve(request.getBranch());
|
||||||
MergeResult mergeResult = git.merge()
|
org.eclipse.jgit.api.MergeCommand mergeCommand = git.merge()
|
||||||
.include(request.getBranch(), resolved)
|
.include(request.getBranch(), resolved)
|
||||||
.setMessage(request.getMessage())
|
.setMessage(request.getMessage());
|
||||||
|
|
||||||
|
switch (request.getFfMode()) {
|
||||||
|
case FF:
|
||||||
|
mergeCommand.setFastForward(org.eclipse.jgit.api.MergeCommand.FastForwardMode.FF);
|
||||||
|
break;
|
||||||
|
case NO_FF:
|
||||||
|
mergeCommand.setFastForward(org.eclipse.jgit.api.MergeCommand.FastForwardMode.NO_FF);
|
||||||
|
break;
|
||||||
|
case FF_ONLY:
|
||||||
|
mergeCommand.setFastForward(org.eclipse.jgit.api.MergeCommand.FastForwardMode.FF_ONLY);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalStateException("Unknown FF mode: " + request.getFfMode());
|
||||||
|
}
|
||||||
|
|
||||||
|
MergeResult mergeResult = mergeCommand
|
||||||
.call();
|
.call();
|
||||||
|
|
||||||
try (RevWalk revWalk = new RevWalk(git.getRepository())) {
|
try (RevWalk revWalk = new RevWalk(git.getRepository())) {
|
||||||
|
|||||||
@@ -35,13 +35,28 @@ import java.io.IOException;
|
|||||||
public final class MergeCommandBuilder {
|
public final class MergeCommandBuilder {
|
||||||
|
|
||||||
private final MergeCommand command;
|
private final MergeCommand command;
|
||||||
|
private final MergeRequest request = new MergeRequest();
|
||||||
|
|
||||||
MergeCommandBuilder(MergeCommand command) {
|
MergeCommandBuilder(MergeCommand command) {
|
||||||
this.command = command;
|
this.command = command;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MergeCommandBuilder ffOnly() {
|
||||||
|
request.setFfMode(MergeRequest.FastForwardMode.FF_ONLY);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MergeCommandBuilder noFf() {
|
||||||
|
request.setFfMode(MergeRequest.FastForwardMode.NO_FF);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MergeCommandBuilder ffIfPossible() {
|
||||||
|
request.setFfMode(MergeRequest.FastForwardMode.FF);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public void merge(String branch) throws IOException {
|
public void merge(String branch) throws IOException {
|
||||||
MergeRequest request = new MergeRequest();
|
|
||||||
request.setBranch(branch);
|
request.setBranch(branch);
|
||||||
command.merge(request);
|
command.merge(request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public final class MergeRequest {
|
|||||||
|
|
||||||
private String branch;
|
private String branch;
|
||||||
private String message;
|
private String message;
|
||||||
|
private FastForwardMode ffMode = FastForwardMode.FF;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
@@ -79,6 +80,10 @@ public final class MergeRequest {
|
|||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFfMode(FastForwardMode ffMode) {
|
||||||
|
this.ffMode = ffMode;
|
||||||
|
}
|
||||||
|
|
||||||
String getBranch() {
|
String getBranch() {
|
||||||
return branch;
|
return branch;
|
||||||
}
|
}
|
||||||
@@ -86,4 +91,12 @@ public final class MergeRequest {
|
|||||||
String getMessage() {
|
String getMessage() {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FastForwardMode getFfMode() {
|
||||||
|
return ffMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FastForwardMode {
|
||||||
|
FF_ONLY, FF, NO_FF
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user