mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
return null if commit was not merged into requested branch
This commit is contained in:
@@ -132,13 +132,16 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand
|
||||
{
|
||||
converter = new GitChangesetConverter(gr, revWalk);
|
||||
|
||||
if (request != null &&
|
||||
!Strings.isNullOrEmpty(request.getBranch()) &&
|
||||
revWalk.isMergedInto(commit, findTipCommitForRequestBranch(request, gr, revWalk))) {
|
||||
changeset = converter.createChangeset(commit, request.getBranch());
|
||||
if (isBranchRequested(request)) {
|
||||
String branch = request.getBranch();
|
||||
if (isMergedIntoBranch(gr, revWalk, commit, branch)) {
|
||||
logger.trace("returning commit {} with branch {}", commit.getId(), branch);
|
||||
changeset = converter.createChangeset(commit, branch);
|
||||
} else {
|
||||
logger.debug("returning null, because commit {} was not merged into branch {}", commit.getId(), branch);
|
||||
}
|
||||
} else {
|
||||
changeset = converter.createChangeset(commit);
|
||||
|
||||
}
|
||||
}
|
||||
else if (logger.isWarnEnabled())
|
||||
@@ -165,8 +168,16 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand
|
||||
return changeset;
|
||||
}
|
||||
|
||||
private RevCommit findTipCommitForRequestBranch(LogCommandRequest request, Repository gr, RevWalk revWalk) throws IOException {
|
||||
return revWalk.parseCommit(GitUtil.getCommit(gr, revWalk, gr.findRef(request.getBranch())));
|
||||
private boolean isMergedIntoBranch(Repository repository, RevWalk revWalk, RevCommit commit, String branchName) throws IOException {
|
||||
return revWalk.isMergedInto(commit, findHeadCommitOfBranch(repository, revWalk, branchName));
|
||||
}
|
||||
|
||||
private boolean isBranchRequested(LogCommandRequest request) {
|
||||
return request != null && !Strings.isNullOrEmpty(request.getBranch());
|
||||
}
|
||||
|
||||
private RevCommit findHeadCommitOfBranch(Repository repository, RevWalk revWalk, String branchName) throws IOException {
|
||||
return revWalk.parseCommit(GitUtil.getCommit(repository, revWalk, repository.findRef(branchName)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -208,8 +208,14 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase
|
||||
GitLogCommand command = createCommand();
|
||||
Changeset c = command.getChangeset("435df2f061add3589cb3", request);
|
||||
|
||||
Assertions.assertThat(c.getBranches().contains("master")).isTrue();
|
||||
Assertions.assertThat(c.getBranches().size()).isEqualTo(1);
|
||||
Assertions.assertThat(c.getBranches()).containsOnly("master");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotReturnCommitFromDifferentBranch() {
|
||||
when(request.getBranch()).thenReturn("master");
|
||||
Changeset changeset = createCommand().getChangeset("3f76a12f08a6ba0dc988c68b7f0b2cd190efc3c4", request);
|
||||
Assertions.assertThat(changeset).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -212,8 +212,8 @@ public final class MockUtil
|
||||
{
|
||||
SCMContextProvider provider = mock(SCMContextProvider.class);
|
||||
|
||||
when(provider.getBaseDirectory()).thenReturn(directory);
|
||||
when(provider.resolve(any(Path.class))).then(ic -> {
|
||||
lenient().when(provider.getBaseDirectory()).thenReturn(directory);
|
||||
lenient().when(provider.resolve(any(Path.class))).then(ic -> {
|
||||
Path p = ic.getArgument(0);
|
||||
return directory.toPath().resolve(p);
|
||||
});
|
||||
|
||||
@@ -3595,6 +3595,11 @@ babel-code-frame@^6.22.0:
|
||||
esutils "^2.0.2"
|
||||
js-tokens "^3.0.2"
|
||||
|
||||
babel-core@7.0.0-bridge.0:
|
||||
version "7.0.0-bridge.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
|
||||
integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
|
||||
|
||||
babel-eslint@^10.0.3:
|
||||
version "10.0.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a"
|
||||
@@ -7235,7 +7240,7 @@ gitconfiglocal@^1.0.0:
|
||||
dependencies:
|
||||
ini "^1.3.2"
|
||||
|
||||
gitdiff-parser@^0.1.2:
|
||||
gitdiff-parser@^0.1.2, "gitdiff-parser@https://github.com/scm-manager/gitdiff-parser#6baa7278824ecd17a199d842ca720d0453f68982":
|
||||
version "0.1.2"
|
||||
resolved "https://github.com/scm-manager/gitdiff-parser#6baa7278824ecd17a199d842ca720d0453f68982"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user