From c134a0c3f2440a09c5b8c8c6837c95aba3d4f84f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 08 Mar 2014 11:27:00 -0500
Subject: [PATCH] Move Gitblit branches to refs/meta/gitblit

---
 src/main/java/com/gitblit/git/GitblitReceivePackFactory.java |   46 +++++++++++++++++++++-------------------------
 1 files changed, 21 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java b/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java
index 2cdb985..7976fe5 100644
--- a/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java
+++ b/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java
@@ -28,9 +28,7 @@
 
 import com.gitblit.IStoredSettings;
 import com.gitblit.Keys;
-import com.gitblit.manager.IRepositoryManager;
-import com.gitblit.manager.IRuntimeManager;
-import com.gitblit.manager.IUserManager;
+import com.gitblit.manager.IGitblit;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.HttpUtils;
@@ -49,23 +47,12 @@
 
 	private final IStoredSettings settings;
 
-	private final IRuntimeManager runtimeManager;
+	private final IGitblit gitblit;
 
-	private final IUserManager userManager;
-
-	private final IRepositoryManager repositoryManager;
-
-	public GitblitReceivePackFactory(
-			IRuntimeManager runtimeManager,
-			IUserManager userManager,
-			IRepositoryManager repositoryManager) {
-
+	public GitblitReceivePackFactory(IGitblit gitblit) {
 		super();
-		this.settings = runtimeManager.getSettings();
-		this.runtimeManager = runtimeManager;
-		this.userManager = userManager;
-		this.repositoryManager = repositoryManager;
-
+		this.settings = gitblit.getSettings();
+		this.gitblit = gitblit;
 	}
 
 	@Override
@@ -76,7 +63,6 @@
 		String repositoryName = "";
 		String origin = "";
 		String gitblitUrl = "";
-		String repositoryUrl = "";
 		int timeout = 0;
 
 		if (req instanceof HttpServletRequest) {
@@ -85,12 +71,11 @@
 			repositoryName = request.getAttribute("gitblitRepositoryName").toString();
 			origin = request.getRemoteHost();
 			gitblitUrl = HttpUtils.getGitblitURL(request);
-			repositoryUrl = request.getRequestURI();
 
 			// determine pushing user
 			String username = request.getRemoteUser();
 			if (!StringUtils.isEmpty(username)) {
-				UserModel u = userManager.getUserModel(username);
+				UserModel u = gitblit.getUserModel(username);
 				if (u != null) {
 					user = u;
 				}
@@ -111,11 +96,22 @@
 			throw new ServiceNotEnabledException();
 		}
 
-		final RepositoryModel repository = repositoryManager.getRepositoryModel(repositoryName);
+		String url = settings.getString(Keys.web.canonicalUrl, null);
+		if (StringUtils.isEmpty(url)) {
+			url = gitblitUrl;
+		}
 
-		final GitblitReceivePack rp = new GitblitReceivePack(runtimeManager, repositoryManager, db, repository, user);
-		rp.setGitblitUrl(gitblitUrl);
-		rp.setRepositoryUrl(repositoryUrl);
+		final RepositoryModel repository = gitblit.getRepositoryModel(repositoryName);
+
+		// Determine which receive pack to use for pushes
+		final GitblitReceivePack rp;
+		if (gitblit.getTicketService().isAcceptingNewPatchsets(repository)) {
+			rp = new PatchsetReceivePack(gitblit, db, repository, user);
+		} else {
+			rp = new GitblitReceivePack(gitblit, db, repository, user);
+		}
+
+		rp.setGitblitUrl(url);
 		rp.setRefLogIdent(new PersonIdent(user.username, user.username + "@" + origin));
 		rp.setTimeout(timeout);
 

--
Gitblit v1.9.1