Simplify workdir factory

This commit is contained in:
René Pfeuffer
2019-03-29 10:02:38 +01:00
parent f010fb7711
commit 1162536e21
11 changed files with 91 additions and 73 deletions

View File

@@ -59,7 +59,7 @@ public class GitBranchCommand extends AbstractGitCommand implements BranchComman
@Override
public Branch branch(BranchRequest request) {
try (WorkingCopy<org.eclipse.jgit.lib.Repository> workingCopy = workdirFactory.createWorkingCopy(context)) {
Git clone = new Git(workingCopy.get());
Git clone = new Git(workingCopy.getWorkingRepository());
if (request.getParentBranch() != null) {
clone.checkout().setName(request.getParentBranch());
}

View File

@@ -50,7 +50,7 @@ public class GitMergeCommand extends AbstractGitCommand implements MergeCommand
RepositoryPermissions.push(context.getRepository().getId()).check();
try (WorkingCopy<Repository> workingCopy = workdirFactory.createWorkingCopy(context)) {
Repository repository = workingCopy.get();
Repository repository = workingCopy.getWorkingRepository();
logger.debug("cloned repository to folder {}", repository.getWorkTree());
return new MergeWorker(repository, request).merge();
} catch (IOException e) {

View File

@@ -23,13 +23,13 @@ public class SimpleGitWorkdirFactory extends SimpleWorkdirFactory<Repository, Gi
private static class GitCloneProvider implements CloneProvider<Repository, GitContext> {
@Override
public Repository cloneRepository(GitContext context, File target) {
public ParentAndClone<Repository> cloneRepository(GitContext context, File target) {
try {
return Git.cloneRepository()
return new ParentAndClone<>(null, Git.cloneRepository()
.setURI(createScmTransportProtocolUri(context.getDirectory()))
.setDirectory(target)
.call()
.getRepository();
.getRepository());
} catch (GitAPIException e) {
throw new InternalRepositoryException(context.getRepository(), "could not clone working copy of repository", e);
}
@@ -40,6 +40,11 @@ public class SimpleGitWorkdirFactory extends SimpleWorkdirFactory<Repository, Gi
}
}
@Override
protected void closeRepository(Repository repository) {
repository.close();
}
@Override
protected sonia.scm.repository.Repository getRepository(GitContext context) {
return context.getRepository();