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