示例#1
0
 /*
  * (non-Javadoc)
  *
  * @see
  * org.eclipse.jgit.http.server.glue.MetaServlet#service(javax.servlet.http
  * .HttpServletRequest, javax.servlet.http.HttpServletResponse)
  */
 @Override
 protected void service(HttpServletRequest req, HttpServletResponse res)
     throws IOException, ServletException {
   String name = req.getPathInfo();
   while (name != null && 0 < name.length() && name.charAt(0) == '/') name = name.substring(1);
   if (name == null || name.length() == 0) {
     sendError(req, res, SC_NOT_FOUND);
     return;
   }
   this.log.debug("git server for " + name);
   name = name.replaceAll("\\.git.*$", "");
   AutoMerge am = SyncMgr.smgr().amerge(name);
   if (am != null) {
     if (SyncMgr.smgr().isSync2Remoete()) {
       try {
         am.pullR2L();
       } catch (Exception e) {
         e.printStackTrace();
       }
     }
     if (am.isConflict()) {
       sendError(req, res, SC_INTERNAL_SERVER_ERROR, "repository conflicting...");
       return;
     }
   }
   // System.out.println(req.getPathInfo());
   super.service(req, res);
   if (GitSmartHttpTools.isReceivePack(req) && am != null && SyncMgr.smgr().isSync2Remoete()) {
     try {
       log.debug("check git log and sync local to remote");
       String result = am.checkLogAndL2R();
       log.debug("checkLogAndL2R:" + result);
     } catch (Exception e) {
       log.warn("checkLogAndL2R error", e);
     }
   }
 }