Cloned repositories for internal use are updated after push.

This commit is contained in:
takezoe
2013-04-20 04:57:10 +09:00
parent 934c4af780
commit c531949fd9
4 changed files with 60 additions and 45 deletions

View File

@@ -1,11 +1,12 @@
package app
import javax.servlet.ServletConfig
import javax.servlet.ServletException
import org.eclipse.jgit.http.server.GitServlet
import javax.servlet.ServletContext
import java.io._
import javax.servlet._
import javax.servlet.http._
import util.Directory
import java.io.File
import org.eclipse.jgit.api.Git
import org.eclipse.jgit.lib.Ref
import org.eclipse.jgit.http.server.GitServlet
/**
* Provides Git repository via HTTP.
@@ -31,4 +32,23 @@ class GitRepositoryServlet extends GitServlet {
});
}
}
/**
* Override GitServlet#service() to pull pushed changes to cloned repositories for branch exploring.
*/
override def service(request: HttpServletRequest, response: HttpServletResponse): Unit = {
super.service(request, response)
// TODO debug log
println(request.getMethod + ": " + request.getRequestURI)
// update branches
if(request.getMethod == "POST" && request.getRequestURI.endsWith("/git-receive-pack")){
request.getRequestURI
.replaceFirst("^" + request.getServletContext.getContextPath + "/git/", "")
.replaceFirst("\\.git/git-receive-pack$", "").split("/") match {
case Array(owner, repository) => Directory.updateAllBranches(owner, repository)
}
}
}
}