]> source.dussan.org Git - gitblit.git/commitdiff
Fixed bug in receive hook for repositories in subfolders
authorJames Moger <james.moger@gitblit.com>
Thu, 5 Jan 2012 22:34:05 +0000 (17:34 -0500)
committerJames Moger <james.moger@gitblit.com>
Thu, 5 Jan 2012 22:34:05 +0000 (17:34 -0500)
src/com/gitblit/GitServlet.java
tests/com/gitblit/tests/GitServletTest.java

index 967efac60da55e5b8c2f0083e645018991b4e468..3b60e9f1f3b29e63209204e99a88db53a70ec3ff 100644 (file)
@@ -208,8 +208,8 @@ public class GitServlet extends org.eclipse.jgit.http.server.GitServlet {
                protected RepositoryModel getRepositoryModel(ReceivePack rp) {\r
                        Repository repository = rp.getRepository();\r
                        String rootPath = GitBlit.getRepositoriesFolder().getAbsolutePath();\r
-                       String repositoryName = repository.getDirectory().getAbsolutePath();\r
-                       repositoryName = repositoryName.substring(rootPath.length() + 1);\r
+                       String repositoryName = StringUtils.getRelativePath(rootPath, repository.getDirectory()\r
+                                       .getAbsolutePath());\r
                        RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);\r
                        return model;\r
                }\r
index f0aedce16fa1a7ec396839c1bc38635c48a411f2..a4c5e882cb4541c739990a3467ec1fa70f367cff 100644 (file)
@@ -26,6 +26,8 @@ import com.gitblit.models.RepositoryModel;
 public class GitServletTest {\r
 \r
        File folder = new File(GitBlitSuite.REPOSITORIES, "working/ticgit");\r
+       \r
+       File jgitFolder = new File(GitBlitSuite.REPOSITORIES, "working/jgit");\r
 \r
        String url = GitBlitSuite.url;\r
        String account = GitBlitSuite.account;\r
@@ -94,7 +96,7 @@ public class GitServletTest {
        }\r
 \r
        @Test\r
-       public void testAnonymousCommit() throws Exception {\r
+       public void testAnonymousPush() throws Exception {\r
                Git git = Git.open(folder);\r
                File file = new File(folder, "TODO");\r
                for (int i = 0; i < 3; i++) {\r
@@ -108,4 +110,32 @@ public class GitServletTest {
                git.push().setPushAll().call();\r
                git.getRepository().close();\r
        }\r
+       \r
+       @Test\r
+       public void testSubfolderPush() throws Exception {\r
+               if (jgitFolder.exists()) {\r
+                       FileUtils.delete(jgitFolder, FileUtils.RECURSIVE);\r
+               }\r
+               CloneCommand clone = Git.cloneRepository();\r
+               clone.setURI(MessageFormat.format("{0}/git/test/jgit.git", url));\r
+               clone.setDirectory(jgitFolder);\r
+               clone.setBare(false);\r
+               clone.setCloneAllBranches(true);\r
+               clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password));\r
+               clone.call();\r
+               assertTrue(true);\r
+               \r
+               Git git = Git.open(jgitFolder);\r
+               File file = new File(jgitFolder, "TODO");\r
+               for (int i = 0; i < 3; i++) {\r
+                       OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true));\r
+                       BufferedWriter w = new BufferedWriter(os);\r
+                       w.write("// " + new Date().toString() + "\n");\r
+                       w.close();\r
+                       git.add().addFilepattern(file.getName()).call();\r
+                       git.commit().setMessage("test commit #" + (i + 1)).call();\r
+               }\r
+               git.push().setPushAll().call();\r
+               git.getRepository().close();\r
+       }\r
 }\r