diff --git a/services/git-bridge/.idea/workspace.xml b/services/git-bridge/.idea/workspace.xml index 9500d5c6f6..8cdb8f1168 100644 --- a/services/git-bridge/.idea/workspace.xml +++ b/services/git-bridge/.idea/workspace.xml @@ -7,13 +7,14 @@ - - - - - + + + + + + @@ -40,78 +41,18 @@ - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -121,7 +62,77 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -140,8 +151,6 @@ @@ -1038,6 +1049,7 @@ + @@ -1048,6 +1060,7 @@ + @@ -1055,11 +1068,9 @@ - - @@ -1233,13 +1244,6 @@ - - - - - - - @@ -1273,14 +1277,6 @@ - - - - - - - - @@ -1289,22 +1285,6 @@ - - - - - - - - - - - - - - - - @@ -1351,54 +1331,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1407,14 +1339,6 @@ - - - - - - - - @@ -1431,22 +1355,6 @@ - - - - - - - - - - - - - - - - @@ -1463,26 +1371,130 @@ - + - - + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java index 58f5c7af93..e0b3354b5e 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java @@ -7,6 +7,7 @@ import org.eclipse.jetty.util.log.Log; import uk.ac.ic.wlgitbridge.application.jetty.NullLogger; import uk.ac.ic.wlgitbridge.git.WLGitServlet; import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException; +import uk.ac.ic.wlgitbridge.writelatex.api.DummySnapshotDBAPI; import javax.servlet.ServletException; import java.net.BindException; @@ -64,7 +65,7 @@ public class WLGitBridgeServer { servletContextHandler.setContextPath("/"); servletContextHandler.addServlet( new ServletHolder( - new WLGitServlet(servletContextHandler, rootGitDirectoryPath)), + new WLGitServlet(servletContextHandler, new DummySnapshotDBAPI(), rootGitDirectoryPath)), "/*" ); jettyServer.setHandler(servletContextHandler); diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java index f530109079..42895292fa 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java @@ -1,11 +1,16 @@ package uk.ac.ic.wlgitbridge.bridge; +import org.eclipse.jgit.api.AddCommand; +import org.eclipse.jgit.api.CommitCommand; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.lib.Repository; import uk.ac.ic.wlgitbridge.writelatex.Snapshot; import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotDBAPI; import java.io.File; +import java.io.IOException; import java.util.List; /** @@ -38,9 +43,13 @@ public class WLBridgedProject { } private void buildRepositoryFromScratch(Repository repository) throws RepositoryNotFoundException { - System.out.println("Need to build repo: " + repository.getDirectory().getAbsolutePath()); - if (!snapshotDBAPI.repositoryExists(repository)) { - throw new RepositoryNotFoundException(repository.getDirectory()); + if (!snapshotDBAPI.repositoryExists(name)) { + throw new RepositoryNotFoundException(name); + } + try { + repository.create(); + } catch (IOException e) { + e.printStackTrace(); } updateRepositoryFromSnapshots(repository); } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java index 61dd811585..ca163f43b8 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java @@ -7,6 +7,8 @@ import uk.ac.ic.wlgitbridge.git.handler.WLReceivePackFactory; import uk.ac.ic.wlgitbridge.git.handler.WLRepositoryResolver; import uk.ac.ic.wlgitbridge.git.handler.WLUploadPackFactory; import uk.ac.ic.wlgitbridge.writelatex.SnapshotRepositoryBuilder; +import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotAPI; +import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotDBAPI; import javax.servlet.ServletException; @@ -15,9 +17,9 @@ import javax.servlet.ServletException; */ public class WLGitServlet extends GitServlet { - public WLGitServlet(ServletContextHandler servletContextHandler, String rootGitDirectoryPath) throws ServletException, InvalidRootDirectoryPathException { - setRepositoryResolver(new WLRepositoryResolver(rootGitDirectoryPath, new SnapshotRepositoryBuilder())); - setReceivePackFactory(new WLReceivePackFactory()); + public WLGitServlet(ServletContextHandler servletContextHandler, SnapshotDBAPI snapshotDBAPI, String rootGitDirectoryPath) throws ServletException, InvalidRootDirectoryPathException { + setRepositoryResolver(new WLRepositoryResolver(rootGitDirectoryPath, new SnapshotRepositoryBuilder(snapshotDBAPI))); + setReceivePackFactory(new WLReceivePackFactory(snapshotDBAPI)); setUploadPackFactory(new WLUploadPackFactory()); init(new WLGitServletConfig(servletContextHandler)); } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java index 95911ae931..ce1f1e1ae9 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java @@ -6,6 +6,8 @@ import org.eclipse.jgit.transport.resolver.ReceivePackFactory; import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import uk.ac.ic.wlgitbridge.git.handler.hook.CheckNonFastForwardHook; +import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotAPI; +import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotDBAPI; import javax.servlet.http.HttpServletRequest; @@ -15,6 +17,10 @@ import javax.servlet.http.HttpServletRequest; /* */ public class WLReceivePackFactory implements ReceivePackFactory { + public WLReceivePackFactory(SnapshotDBAPI snapshotDBAPI) { + + } + @Override public ReceivePack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException { ReceivePack receivePack = new ReceivePack(repository); diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java index 5efabed079..f0be66d6e5 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java @@ -18,8 +18,8 @@ public class SnapshotRepositoryBuilder implements RepositorySource { private final SnapshotDBAPI snapshotDBAPI; - public SnapshotRepositoryBuilder() { - snapshotDBAPI = new DummySnapshotDBAPI(); + public SnapshotRepositoryBuilder(SnapshotDBAPI snapshotDBAPI) { + this.snapshotDBAPI = snapshotDBAPI; } @Override diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/DummySnapshotDBAPI.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/DummySnapshotDBAPI.java index 307f9e0cec..43abf9e25b 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/DummySnapshotDBAPI.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/DummySnapshotDBAPI.java @@ -12,8 +12,8 @@ import java.util.List; public class DummySnapshotDBAPI implements SnapshotDBAPI { @Override - public boolean repositoryExists(Repository repository) { - return false; + public boolean repositoryExists(String name) { + return true; } @Override diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/SnapshotDBAPI.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/SnapshotDBAPI.java index 2d908ac11c..ae911ce7ce 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/SnapshotDBAPI.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/SnapshotDBAPI.java @@ -10,7 +10,7 @@ import java.util.List; */ public interface SnapshotDBAPI { - public boolean repositoryExists(Repository repository); + public boolean repositoryExists(String name); public List getSnapshotsToAddToRepository(Repository repository); } diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/WLBridgedProjectTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/WLBridgedProjectTests.java index 1112693ac7..238f1a8fec 100644 --- a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/WLBridgedProjectTests.java +++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/WLBridgedProjectTests.java @@ -12,4 +12,6 @@ public class WLBridgedProjectTests { } + /* repo doesn't exist in DB: don't create */ + }