mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-03 03:55:51 +01:00
fix merge issues
This commit is contained in:
@@ -60,7 +60,7 @@ public class GitChangesetConverter implements Closeable {
|
||||
private final Multimap<ObjectId, String> tags;
|
||||
private final TreeWalk treeWalk;
|
||||
|
||||
GitChangesetConverter(GPG gpg, org.eclipse.jgit.lib.Repository repository, RevWalk revWalk) {
|
||||
public GitChangesetConverter(GPG gpg, org.eclipse.jgit.lib.Repository repository, RevWalk revWalk) {
|
||||
this.gpg = gpg;
|
||||
this.tags = GitUtil.createTagMap(repository, revWalk);
|
||||
this.treeWalk = new TreeWalk(repository);
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.eclipse.jgit.lib.AnyObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.transport.ReceiveCommand;
|
||||
import sonia.scm.repository.GitChangesetConverterFactory;
|
||||
import sonia.scm.repository.GitUtil;
|
||||
import sonia.scm.repository.spi.GitLogComputer;
|
||||
import sonia.scm.repository.spi.HookMergeDetectionProvider;
|
||||
@@ -39,11 +40,13 @@ public class GitReceiveHookMergeDetectionProvider implements HookMergeDetectionP
|
||||
private final Repository repository;
|
||||
private final String repositoryId;
|
||||
private final List<ReceiveCommand> receiveCommands;
|
||||
private final GitChangesetConverterFactory converterFactory;
|
||||
|
||||
public GitReceiveHookMergeDetectionProvider(Repository repository, String repositoryId, List<ReceiveCommand> receiveCommands) {
|
||||
public GitReceiveHookMergeDetectionProvider(Repository repository, String repositoryId, List<ReceiveCommand> receiveCommands, GitChangesetConverterFactory converterFactory) {
|
||||
this.repository = repository;
|
||||
this.repositoryId = repositoryId;
|
||||
this.receiveCommands = receiveCommands;
|
||||
this.converterFactory = converterFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -53,7 +56,7 @@ public class GitReceiveHookMergeDetectionProvider implements HookMergeDetectionP
|
||||
request.setAncestorChangeset(findRelevantRevisionForBranchIfToBeUpdated(target));
|
||||
request.setPagingLimit(1);
|
||||
|
||||
return new GitLogComputer(repositoryId, repository).compute(request).getTotal() == 0;
|
||||
return new GitLogComputer(repositoryId, repository, converterFactory).compute(request).getTotal() == 0;
|
||||
}
|
||||
|
||||
private String findRelevantRevisionForBranchIfToBeUpdated(String branch) {
|
||||
|
||||
@@ -63,6 +63,8 @@ public class GitHookContextProvider extends HookContextProvider
|
||||
|
||||
//~--- constructors ---------------------------------------------------------
|
||||
|
||||
private final GitChangesetConverterFactory converterFactory;
|
||||
|
||||
/**
|
||||
* Constructs a new instance
|
||||
* @param receivePack git receive pack
|
||||
@@ -80,6 +82,7 @@ public class GitHookContextProvider extends HookContextProvider
|
||||
this.repositoryId = repositoryId;
|
||||
this.changesetProvider = new GitHookChangesetProvider(converterFactory, receivePack,
|
||||
receiveCommands);
|
||||
this.converterFactory = converterFactory;
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
@@ -111,7 +114,7 @@ public class GitHookContextProvider extends HookContextProvider
|
||||
|
||||
@Override
|
||||
public HookMergeDetectionProvider getMergeDetectionProvider() {
|
||||
return new GitReceiveHookMergeDetectionProvider(repository, repositoryId, receiveCommands);
|
||||
return new GitReceiveHookMergeDetectionProvider(repository, repositoryId, receiveCommands, converterFactory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -182,7 +182,7 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand
|
||||
if (Strings.isNullOrEmpty(request.getBranch())) {
|
||||
request.setBranch(context.getConfig().getDefaultBranch());
|
||||
}
|
||||
return new GitLogComputer(this.repository.getId(), gitRepository).compute(request);
|
||||
return new GitLogComputer(this.repository.getId(), gitRepository, converterFactory).compute(request);
|
||||
} catch (IOException e) {
|
||||
throw new InternalRepositoryException(repository, "could not create change log", e);
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ import sonia.scm.NotFoundException;
|
||||
import sonia.scm.repository.Changeset;
|
||||
import sonia.scm.repository.ChangesetPagingResult;
|
||||
import sonia.scm.repository.GitChangesetConverter;
|
||||
import sonia.scm.repository.GitChangesetConverterFactory;
|
||||
import sonia.scm.repository.GitUtil;
|
||||
import sonia.scm.repository.InternalRepositoryException;
|
||||
import sonia.scm.util.IOUtil;
|
||||
@@ -59,10 +60,12 @@ public class GitLogComputer {
|
||||
|
||||
private final String repositoryId;
|
||||
private final Repository gitRepository;
|
||||
private final GitChangesetConverterFactory converterFactory;
|
||||
|
||||
public GitLogComputer(String repositoryId, Repository repository) {
|
||||
public GitLogComputer(String repositoryId, Repository repository, GitChangesetConverterFactory converterFactory) {
|
||||
this.repositoryId = repositoryId;
|
||||
this.gitRepository = repository;
|
||||
this.converterFactory = converterFactory;
|
||||
}
|
||||
|
||||
public ChangesetPagingResult compute(LogCommandRequest request) {
|
||||
@@ -123,7 +126,7 @@ public class GitLogComputer {
|
||||
|
||||
revWalk = new RevWalk(gitRepository);
|
||||
|
||||
converter = new GitChangesetConverter(gitRepository, revWalk);
|
||||
converter = converterFactory.create(gitRepository, revWalk);
|
||||
|
||||
if (!Strings.isNullOrEmpty(request.getPath())) {
|
||||
revWalk.setTreeFilter(
|
||||
|
||||
@@ -32,6 +32,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
|
||||
import org.eclipse.jgit.revwalk.RevWalk;
|
||||
import sonia.scm.repository.Changeset;
|
||||
import sonia.scm.repository.GitChangesetConverter;
|
||||
import sonia.scm.repository.GitTestHelper;
|
||||
import sonia.scm.repository.client.api.RepositoryClientException;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -46,7 +47,7 @@ public class GitMergeCommand implements MergeCommand {
|
||||
|
||||
@Override
|
||||
public Changeset merge(MergeRequest request) throws IOException {
|
||||
try (GitChangesetConverter converter = new GitChangesetConverter(git.getRepository())) {
|
||||
try (GitChangesetConverter converter = GitTestHelper.createConverterFactory().create(git.getRepository())) {
|
||||
ObjectId resolved = git.getRepository().resolve(request.getBranch());
|
||||
org.eclipse.jgit.api.MergeCommand mergeCommand = git.merge()
|
||||
.include(request.getBranch(), resolved)
|
||||
|
||||
Reference in New Issue
Block a user