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