From 99f359e07087d826fdb024e4d205c2cb645f1d2a Mon Sep 17 00:00:00 2001 From: saheba <mail@saheba.net> Date: Mon, 25 Mar 2013 16:32:53 -0400 Subject: [PATCH] +feature: automatic tagging of each push with an incremental revision number per repository --- src/com/gitblit/GitServlet.java | 40 ++++++++++++++++++++++++++++++++++++++-- 1 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/com/gitblit/GitServlet.java b/src/com/gitblit/GitServlet.java index 77be963..9c7fb42 100644 --- a/src/com/gitblit/GitServlet.java +++ b/src/com/gitblit/GitServlet.java @@ -23,6 +23,7 @@ import java.text.MessageFormat; import java.util.Collection; import java.util.Enumeration; +import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -32,7 +33,9 @@ import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.Part; +import org.eclipse.jgit.api.Git; import org.eclipse.jgit.http.server.resolver.DefaultReceivePackFactory; import org.eclipse.jgit.http.server.resolver.DefaultUploadPackFactory; import org.eclipse.jgit.lib.PersonIdent; @@ -82,6 +85,11 @@ private File groovyDir; @Override + public void destroy() { + super.destroy(); + } + + @Override public void init(ServletConfig config) throws ServletException { groovyDir = GitBlit.getGroovyScriptsFolder(); try { @@ -100,8 +108,9 @@ @Override public ReceivePack create(HttpServletRequest req, Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { - // determine repository name from request + org.eclipse.jgit.http.server.glue.WrappedRequest wrreq = (org.eclipse.jgit.http.server.glue.WrappedRequest) req; + String repositoryName = req.getPathInfo().substring(1); repositoryName = GitFilter.getRepositoryName(repositoryName); @@ -163,6 +172,7 @@ return up; } }); + super.init(new GitblitServletConfig(config)); } @@ -296,7 +306,33 @@ UserModel user = getUserModel(rp); RepositoryModel repository = GitBlit.self().getRepositoryModel(repositoryName); - + + if (repository.useIncrementalRevisionNumbers) { + List<ReceiveCommand> allCommands = rp.getAllCommands(); + String cmds = ""; + for (ReceiveCommand receiveCommand : allCommands) { + cmds += receiveCommand.getType() + "_" + + receiveCommand.getResult() + "_" + + receiveCommand.getMessage() + ", "; + if (receiveCommand.getType().equals( + ReceiveCommand.Type.UPDATE) + && receiveCommand.getResult().equals( + ReceiveCommand.Result.OK)) { + String objectId = receiveCommand.getNewId().toString() + .replace("AnyObjectId[", "").replace("]", ""); + System.err.println("SHB id " + objectId); + System.err.println("SHB id " + + objectId.getBytes().length); + // if type=update and update was ok, autotag + boolean result = JGitUtils + .createIncrementalRevisionTag( + rp.getRepository(), objectId); + System.err.println("SHB res " + result); + } + } + System.err.println("SHB cmds: " + cmds); + } + // log ref changes for (ReceiveCommand cmd : commands) { if (Result.OK.equals(cmd.getResult())) { -- Gitblit v1.9.1