mirror of
				https://github.com/scm-manager/scm-manager.git
				synced 2025-10-31 10:35:56 +01:00 
			
		
		
		
	Introduce cache layer for workdirs
This commit is contained in:
		| @@ -32,16 +32,17 @@ import org.tmatesoft.svn.core.wc2.SvnTarget; | ||||
| import sonia.scm.repository.InternalRepositoryException; | ||||
| import sonia.scm.repository.Repository; | ||||
| import sonia.scm.repository.SvnWorkDirFactory; | ||||
| import sonia.scm.repository.util.CacheSupportingWorkdirProvider; | ||||
| import sonia.scm.repository.util.SimpleWorkdirFactory; | ||||
| import sonia.scm.repository.util.WorkdirProvider; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
|  | ||||
| public class SimpleSvnWorkDirFactory extends SimpleWorkdirFactory<File, File, SvnContext> implements SvnWorkDirFactory { | ||||
|  | ||||
|   @Inject | ||||
|   public SimpleSvnWorkDirFactory(WorkdirProvider workdirProvider) { | ||||
|   public SimpleSvnWorkDirFactory(CacheSupportingWorkdirProvider workdirProvider) { | ||||
|     super(workdirProvider); | ||||
|   } | ||||
|  | ||||
| @@ -73,7 +74,12 @@ public class SimpleSvnWorkDirFactory extends SimpleWorkdirFactory<File, File, Sv | ||||
|       svnOperationFactory.dispose(); | ||||
|     } | ||||
|  | ||||
|     return new ParentAndClone<>(context.getDirectory(), workingCopy); | ||||
|     return new ParentAndClone<>(context.getDirectory(), workingCopy, workingCopy); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   protected ParentAndClone<File, File> reclaimRepository(SvnContext context, File target, String initialBranch) throws IOException { | ||||
|     return new ParentAndClone<>(context.getDirectory(), target, target); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   | ||||
| @@ -21,7 +21,7 @@ | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  */ | ||||
|      | ||||
|  | ||||
| package sonia.scm.repository.spi; | ||||
|  | ||||
| import org.junit.Before; | ||||
| @@ -30,6 +30,7 @@ import org.junit.Test; | ||||
| import org.junit.rules.TemporaryFolder; | ||||
| import org.tmatesoft.svn.core.SVNException; | ||||
| import sonia.scm.repository.Repository; | ||||
| import sonia.scm.repository.util.NoneCachingWorkdirProvider; | ||||
| import sonia.scm.repository.util.WorkdirProvider; | ||||
| import sonia.scm.repository.util.WorkingCopy; | ||||
|  | ||||
| @@ -53,7 +54,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
|  | ||||
|   @Test | ||||
|   public void shouldCheckoutLatestRevision() throws SVNException, IOException { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(workdirProvider); | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|  | ||||
|     try (WorkingCopy<File, File> workingCopy = factory.createWorkingCopy(createContext(), null)) { | ||||
|       assertThat(new File(workingCopy.getWorkingRepository(), "a.txt")) | ||||
| @@ -65,7 +66,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
|  | ||||
|   @Test | ||||
|   public void cloneFromPoolshouldNotBeReused() { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(workdirProvider); | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|  | ||||
|     File firstDirectory; | ||||
|     try (WorkingCopy<File, File> workingCopy = factory.createWorkingCopy(createContext(), null)) { | ||||
| @@ -79,7 +80,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
|  | ||||
|   @Test | ||||
|   public void shouldDeleteCloneOnClose() { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(workdirProvider); | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|  | ||||
|     File directory; | ||||
|     File workingRepository; | ||||
| @@ -94,7 +95,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
|  | ||||
|   @Test | ||||
|   public void shouldReturnRepository() { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(workdirProvider); | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|     Repository scmRepository = factory.getScmRepository(createContext()); | ||||
|     assertThat(scmRepository).isSameAs(repository); | ||||
|   } | ||||
|   | ||||
| @@ -33,6 +33,7 @@ import org.junit.Test; | ||||
| import org.junit.rules.TemporaryFolder; | ||||
| import sonia.scm.AlreadyExistsException; | ||||
| import sonia.scm.repository.Person; | ||||
| import sonia.scm.repository.util.NoneCachingWorkdirProvider; | ||||
| import sonia.scm.repository.util.WorkdirProvider; | ||||
| import sonia.scm.repository.util.WorkingCopy; | ||||
|  | ||||
| @@ -56,7 +57,7 @@ public class SvnModifyCommandTest extends AbstractSvnCommandTestBase { | ||||
|   @Before | ||||
|   public void initSvnModifyCommand() { | ||||
|     context = createContext(); | ||||
|     workDirFactory = new SimpleSvnWorkDirFactory(new WorkdirProvider(context.getDirectory())); | ||||
|     workDirFactory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(new WorkdirProvider(context.getDirectory()))); | ||||
|     svnModifyCommand = new SvnModifyCommand(context, workDirFactory); | ||||
|   } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user