From e3b636e7fa2a823cfe90ea75e88034a60f7e59e6 Mon Sep 17 00:00:00 2001
From: David Ostrovsky <david@ostrovsky.org>
Date: Thu, 10 Apr 2014 18:58:07 -0400
Subject: [PATCH] SSHD: Add support for git pack commands

---
 src/main/java/com/gitblit/transport/ssh/SshDaemon.java |   24 ++++++++++++++----------
 1 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/gitblit/transport/ssh/SshDaemon.java b/src/main/java/com/gitblit/transport/ssh/SshDaemon.java
index dd4a2d8..b23ddd5 100644
--- a/src/main/java/com/gitblit/transport/ssh/SshDaemon.java
+++ b/src/main/java/com/gitblit/transport/ssh/SshDaemon.java
@@ -35,6 +35,8 @@
 import com.gitblit.manager.IGitblit;
 import com.gitblit.transport.ssh.commands.CreateRepository;
 import com.gitblit.transport.ssh.commands.DispatchCommand;
+import com.gitblit.transport.ssh.commands.Receive;
+import com.gitblit.transport.ssh.commands.Upload;
 import com.gitblit.transport.ssh.commands.VersionCommand;
 import com.gitblit.utils.IdGenerator;
 import com.gitblit.utils.StringUtils;
@@ -65,9 +67,6 @@
 
 	@SuppressWarnings("unused")
 	private final IGitblit gitblit;
-
-	private final IdGenerator idGenerator;
-
 	private final SshServer sshd;
 
 	/**
@@ -77,7 +76,6 @@
 	 */
 	public SshDaemon(IGitblit gitblit, IdGenerator idGenerator) {
 		this.gitblit = gitblit;
-		this.idGenerator = idGenerator;
 
 		IStoredSettings settings = gitblit.getSettings();
 		int port = settings.getInteger(Keys.git.sshPort, 0);
@@ -106,15 +104,21 @@
 		gitblitCmd.registerCommand(CreateRepository.class);
 		gitblitCmd.registerCommand(VersionCommand.class);
 
-		DispatchCommand dispatcher = new DispatchCommand();
-		dispatcher.registerDispatcher("gitblit", gitblitCmd);
+		DispatchCommand gitCmd = new DispatchCommand();
+		gitCmd.registerCommand(Upload.class);
+		gitCmd.registerCommand(Receive.class);
+
+		DispatchCommand root = new DispatchCommand();
+		root.registerDispatcher("gitblit", gitblitCmd);
+		root.registerDispatcher("git", gitCmd);
+
+		root.setRepositoryResolver(new RepositoryResolver<SshSession>(gitblit));
+		root.setUploadPackFactory(new GitblitUploadPackFactory<SshSession>(gitblit));
+		root.setReceivePackFactory(new GitblitReceivePackFactory<SshSession>(gitblit));
 
 		SshCommandFactory commandFactory = new SshCommandFactory(
-				new RepositoryResolver<SshSession>(gitblit),
-				new GitblitUploadPackFactory<SshSession>(gitblit),
-				new GitblitReceivePackFactory<SshSession>(gitblit),
 				new WorkQueue(idGenerator),
-				dispatcher);
+				root);
 
 		sshd.setCommandFactory(commandFactory);
 

--
Gitblit v1.9.1