mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-02 19:45:51 +01:00
Fix peer review issues
This commit is contained in:
@@ -40,7 +40,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
* requested for a repository with {@link #getWorkingCopy(SimpleWorkingCopyFactory.WorkingCopyContext)},
|
||||
* this implementation fetches a new directory from the {@link WorkdirProvider}.
|
||||
* On {@link #contextClosed(SimpleWorkingCopyFactory.WorkingCopyContext, File)},
|
||||
* the directory is not deleted, buy put into a map with the repository id as key.
|
||||
* the directory is not deleted, but put into a map with the repository id as key.
|
||||
* When a working copy is requested with {@link #getWorkingCopy(SimpleWorkingCopyFactory.WorkingCopyContext)}
|
||||
* for a repository with such an existing directory, it is taken from the map, reclaimed and
|
||||
* returned as {@link WorkingCopy}.
|
||||
|
||||
@@ -55,97 +55,10 @@ import java.io.File;
|
||||
* <dt>{@link #closeRepository(R)}</dt>
|
||||
* <dd>Closes resources allocated for the central repository.</dd>
|
||||
* </dl>
|
||||
* <pre>
|
||||
* ┌─────────────┐ ┌───────────────────────────┐ ┌───────────────┐ ┌───────────────┐
|
||||
* │ModifyCommand│ │SimpleGitWorkingCopyFactory│ │WorkingCopyPool│ │WorkdirProvider│
|
||||
* └──────┬──────┘ └─────────────┬─────────────┘ └───────┬───────┘ └───────┬───────┘
|
||||
* │ createWorkingCopy │ │ │
|
||||
* │──────────────────────────────>│ │ │
|
||||
* │ │ │ │
|
||||
* │ │ create ┌──────────────────┐ │ │
|
||||
* │ │──────────────────────> │WorkingCopyContext│ │ │
|
||||
* │ │ └────────┬─────────┘ │ │
|
||||
* │ │ getWorkingCopy │ │
|
||||
* │ │─────────────────────────────────────────────────────────────>│ │
|
||||
* │ │ │ │ │
|
||||
* │ │ │ │ │
|
||||
* │ │ │ │ │
|
||||
* │ │ │ │ │
|
||||
* │ │ │ reclaim │ │
|
||||
* │ │ │ <──────────────────────────│ │
|
||||
* │ │ │ │ │
|
||||
* │ │ │ │ │
|
||||
* │ │ ╔══════╤═══════════╪════════════════════════════╪═════════════════════════════════════════════════╪═════════════════╗
|
||||
* │ │ ║ ALT │ reclaim successful │ │ ║
|
||||
* │ │ ╟──────┘ │ │ │ ║
|
||||
* │ │ ║ │ │ ┌───────────┐ │ ║
|
||||
* │ │ ║ │ ─────────────────────────────────────────────>│WorkingCopy│ │ ║
|
||||
* │ │ ║ │ │ └─────┬─────┘ │ ║
|
||||
* │ │ ║ │ WorkingCopy │ │ ║
|
||||
* │ │ ║ │ ──────────────────────────>│ │ ║
|
||||
* │ │ ╠══════════════════╪════════════════════════════╪═════════════════════════════════════════════════╪═════════════════╣
|
||||
* │ │ ║ [reclaim fails; create new] │ │ ║
|
||||
* │ │ ║ │ ReclaimFailedException │ │ ║
|
||||
* │ │ ║ │ ──────────────────────────>│ │ ║
|
||||
* │ │ ║ │ │ │ ║
|
||||
* │ │ ║ │ │ createNewWorkdir │ ║
|
||||
* │ │ ║ │ │────────────────────────────────────────────────>│ ║
|
||||
* │ │ ║ │ │ │ ║
|
||||
* │ │ ║ │ │ │ ║
|
||||
* │ │ ║ │ │<────────────────────────────────────────────────│ ║
|
||||
* │ │ ║ │ │ │ ║
|
||||
* │ │ ║ │ initialize │ │ ║
|
||||
* │ │ ║ │ <──────────────────────────│ │ ║
|
||||
* │ │ ║ │ │ │ ║
|
||||
* │ │ ║ │ │ ┌───────────┐ │ ║
|
||||
* │ │ ║ │ ─────────────────────────────────────────────>│WorkingCopy│ │ ║
|
||||
* │ │ ║ │ │ └─────┬─────┘ │ ║
|
||||
* │ │ ║ │ WorkingCopy │ │ │ ║
|
||||
* │ │ ║ │ ──────────────────────────>│ │ │ ║
|
||||
* │ │ ╚══════════════════╪════════════════════════════╪════════════════════════╪════════════════════════╪═════════════════╝
|
||||
* │ │ │ │ │ │
|
||||
* │ │ WorkingCopy │ │ │
|
||||
* │ │<─────────────────────────────────────────────────────────────│ │ │
|
||||
* │ │ │ │ │ │
|
||||
* │ WorkingCopy │ │ │ │ │
|
||||
* │<──────────────────────────────│ │ │ │ │
|
||||
* │ │ │ │ │ │
|
||||
* . . . . . .
|
||||
* . . . . . .
|
||||
* . . . . . .
|
||||
* . . . . . .
|
||||
* │ │ doWork │ │ │ │
|
||||
* │──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │
|
||||
* │ │ │ │ │ │
|
||||
* . . . . . .
|
||||
* . . . . . .
|
||||
* . . . . . .
|
||||
* . . . . . .
|
||||
* │ │ close │ │ │ │
|
||||
* │──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │
|
||||
* │ │ │ │ │ │
|
||||
* │ │ │ close │ │ │
|
||||
* │ │<──────────────────────────────────────────────────────────────────────────────────────│ │
|
||||
* │ │ │ │ │ │
|
||||
* │ ────┐ │ │ │ │
|
||||
* │ │ closeWorkingCopy │ │ │ │
|
||||
* │ <───┘ │ │ │ │
|
||||
* │ │ │ │ │ │
|
||||
* │ ────┐ │ │ │ │
|
||||
* │ │ closeRepository │ │ │ │
|
||||
* │ <───┘ │ │ │ │
|
||||
* │ │ │ │ │ │
|
||||
* │ │ contextClosed │ │ │
|
||||
* │ │─────────────────────────────────────────────────────────────>│ │ │
|
||||
* │ │ │ │ │ │
|
||||
* │ │ │ ────┐ │ │
|
||||
* │ │ │ │ cacheDirectory │ │
|
||||
* │ │ │ <───┘ │ │
|
||||
* ┌──────┴──────┐ ┌─────────────┴─────────────┐ ┌────────┴─────────┐ ┌───────┴───────┐ ┌─────┴─────┐ ┌───────┴───────┐
|
||||
* │ModifyCommand│ │SimpleGitWorkingCopyFactory│ │WorkingCopyContext│ │WorkingCopyPool│ │WorkingCopy│ │WorkdirProvider│
|
||||
* └─────────────┘ └───────────────────────────┘ └──────────────────┘ └───────────────┘ └───────────┘ └───────────────┘
|
||||
* </pre>
|
||||
* <img src="http://www.plantuml.com/plantuml/png/jLF1JiCm3BtdAtAkr7r0aQf9XN42JGE9SvHumyA9goHbAr-FnZgKDbCPGXnZl_ViFDlB49MFdINnm0QtVSFMAcVA-WbjIt2FyONz6xfTmss_KZgoxsKbjGSL8Kc96NnPooJOi8jmY4LHdKJccKbipKpL3bAOs7dkMldiUnbPUj2aq8e9fwppwjKPgoYUUJ9qMaC8suv4pXYf5CL5H2sdxQQz0WNuhhLLIE5cy54ws5yKF6I2cnD_fP30t1qqj17PNVwoGR_s_8u6_E3r8-o7X9W0odfgzLKseiE8Yl03_iSoP_8svbQpabVlP3rQ-35niLXCxo59LuQFhvzGcZYCR9azgW4-WxY2diJ_gBI1bWCUtx-xJtqQR7FKo6UNmvL-XLlqy2Kdbk1CP-aJ"/>
|
||||
* <br>
|
||||
* The general process looks like this:
|
||||
* <br>
|
||||
* <img src="doc-files/SimpleWorkingCopyFactory_Sequence.png"/>
|
||||
* @param <R> Type of central repository location
|
||||
* @param <W> Type of working copy for repository
|
||||
* @param <C> Type of repository context
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
@@ -54,7 +55,7 @@ class GitWorkingCopyInitializer {
|
||||
|
||||
public ParentAndClone<Repository, Repository> initialize(File target, String initialBranch) {
|
||||
LOG.trace("clone repository {}", context.getRepository().getId());
|
||||
long start = System.nanoTime();
|
||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||
try {
|
||||
Repository clone = Git.cloneRepository()
|
||||
.setURI(simpleGitWorkingCopyFactory.createScmTransportProtocolUri(context.getDirectory()))
|
||||
@@ -73,9 +74,7 @@ class GitWorkingCopyInitializer {
|
||||
} catch (GitAPIException | IOException e) {
|
||||
throw new InternalRepositoryException(context.getRepository(), "could not clone working copy of repository", e);
|
||||
} finally {
|
||||
long end = System.nanoTime();
|
||||
long duration = end - start;
|
||||
LOG.trace("took {} ns to clone repository {}", duration, context.getRepository().getId());
|
||||
LOG.trace("took {} to clone repository {}", stopwatch.stop(), context.getRepository().getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.ResetCommand;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
@@ -49,7 +50,7 @@ class GitWorkingCopyReclaimer {
|
||||
|
||||
public ParentAndClone<Repository, Repository> reclaim(File target, String initialBranch) throws SimpleWorkingCopyFactory.ReclaimFailedException {
|
||||
LOG.trace("reclaim repository {}", context.getRepository().getId());
|
||||
long start = System.nanoTime();
|
||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||
Repository repo = openTarget(target);
|
||||
try (Git git = Git.open(target)) {
|
||||
git.reset().setMode(ResetCommand.ResetType.HARD).call();
|
||||
@@ -62,9 +63,7 @@ class GitWorkingCopyReclaimer {
|
||||
} catch (GitAPIException | IOException e) {
|
||||
throw new SimpleWorkingCopyFactory.ReclaimFailedException(e);
|
||||
} finally {
|
||||
long end = System.nanoTime();
|
||||
long duration = end - start;
|
||||
LOG.trace("took {} ns to reclaim repository {}\n", duration, context.getRepository().getId());
|
||||
LOG.trace("took {} to reclaim repository {}", stopwatch.stop(), context.getRepository().getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public class WorkingCopyPoolModule extends AbstractModule {
|
||||
Class<? extends WorkingCopyPool> strategyClass = (Class<? extends WorkingCopyPool>) classLoader.loadClass(workingCopyPoolStrategy);
|
||||
bind(WorkingCopyPool.class).to(strategyClass);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("could not instantiate class for working copy pool: " + workingCopyPoolStrategy, e);
|
||||
throw new IllegalStateException("could not instantiate class for working copy pool: " + workingCopyPoolStrategy, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user