diff --git a/releases.moxie b/releases.moxie
index d834f23..3f9c074 100644
--- a/releases.moxie
+++ b/releases.moxie
@@ -36,6 +36,7 @@
 	- Removed the repository setting to enable Markdown document enumeration, this is now automatic and expanded
 	- Retrieve LDAP groups with dereferencing aliases (pr-122)
 	- Revised committer verification to require a matching displayname or account name AND the email address
+	- Serve repositories on both /r and /git, displaying /r because it is shorter
     additions:
 	- Added an optional MirrorExecutor which will periodically fetch ref updates from source repositories for mirrors (issue-5).  Repositories must be manually cloned using native git and "--mirror".
 	- Added branch graph image servlet based on EGit's branch graph renderer (issue-194)
diff --git a/src/main/java/com/gitblit/Constants.java b/src/main/java/com/gitblit/Constants.java
index 439a944..ee6de45 100644
--- a/src/main/java/com/gitblit/Constants.java
+++ b/src/main/java/com/gitblit/Constants.java
@@ -52,6 +52,8 @@
 
 	public static final String DEFAULT_USER_REPOSITORY_PREFIX = "~";
 
+	public static final String R_PATH = "/r/";
+
 	public static final String GIT_PATH = "/git/";
 
 	public static final String ZIP_PATH = "/zip/";
diff --git a/src/main/java/com/gitblit/git/GitServlet.java b/src/main/java/com/gitblit/git/GitServlet.java
index c511942..ff50ad6 100644
--- a/src/main/java/com/gitblit/git/GitServlet.java
+++ b/src/main/java/com/gitblit/git/GitServlet.java
@@ -16,7 +16,6 @@
 package com.gitblit.git;
 
 import javax.inject.Inject;
-import javax.inject.Singleton;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -30,7 +29,6 @@
  * @author James Moger
  *
  */
-@Singleton
 public class GitServlet extends org.eclipse.jgit.http.server.GitServlet {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/gitblit/manager/FederationManager.java b/src/main/java/com/gitblit/manager/FederationManager.java
index 07d2018..568e87f 100644
--- a/src/main/java/com/gitblit/manager/FederationManager.java
+++ b/src/main/java/com/gitblit/manager/FederationManager.java
@@ -357,7 +357,7 @@
 		// Determine the Gitblit clone url
 		StringBuilder sb = new StringBuilder();
 		sb.append(gitblitUrl);
-		sb.append(Constants.GIT_PATH);
+		sb.append(Constants.R_PATH);
 		sb.append("{0}");
 		String cloneUrl = sb.toString();
 
diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java
index 9947382..6395c35 100644
--- a/src/main/java/com/gitblit/manager/GitblitManager.java
+++ b/src/main/java/com/gitblit/manager/GitblitManager.java
@@ -209,7 +209,7 @@
 	protected String getRepositoryUrl(HttpServletRequest request, String username, RepositoryModel repository) {
 		StringBuilder sb = new StringBuilder();
 		sb.append(HttpUtils.getGitblitURL(request));
-		sb.append(Constants.GIT_PATH);
+		sb.append(Constants.R_PATH);
 		sb.append(repository.name);
 
 		// inject username into repository url if authentication is required
diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java
index c44f7ef..402636e 100644
--- a/src/main/java/com/gitblit/servlet/GitFilter.java
+++ b/src/main/java/com/gitblit/servlet/GitFilter.java
@@ -18,18 +18,15 @@
 import java.text.MessageFormat;
 
 import javax.inject.Inject;
-import javax.inject.Singleton;
 
-import com.gitblit.Constants;
+import com.gitblit.Constants.AccessRestrictionType;
+import com.gitblit.Constants.AuthorizationControl;
 import com.gitblit.GitBlitException;
 import com.gitblit.IStoredSettings;
 import com.gitblit.Keys;
-import com.gitblit.Constants.AccessRestrictionType;
-import com.gitblit.Constants.AuthorizationControl;
-import com.gitblit.Keys.git;
+import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.manager.IRepositoryManager;
 import com.gitblit.manager.IRuntimeManager;
-import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.StringUtils;
@@ -42,7 +39,6 @@
  * @author James Moger
  *
  */
-@Singleton
 public class GitFilter extends AccessRestrictionFilter {
 
 	protected static final String gitReceivePack = "/git-receive-pack";
diff --git a/src/main/java/com/gitblit/servlet/GitblitContext.java b/src/main/java/com/gitblit/servlet/GitblitContext.java
index 3e95b4b..a86ecf6 100644
--- a/src/main/java/com/gitblit/servlet/GitblitContext.java
+++ b/src/main/java/com/gitblit/servlet/GitblitContext.java
@@ -41,6 +41,7 @@
 import com.gitblit.WebXmlSettings;
 import com.gitblit.dagger.DaggerContextListener;
 import com.gitblit.git.GitServlet;
+import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.manager.IFederationManager;
 import com.gitblit.manager.IGitblitManager;
 import com.gitblit.manager.IManager;
@@ -49,7 +50,6 @@
 import com.gitblit.manager.IRepositoryManager;
 import com.gitblit.manager.IRuntimeManager;
 import com.gitblit.manager.IServicesManager;
-import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.manager.IUserManager;
 import com.gitblit.utils.ContainerUtils;
 import com.gitblit.utils.StringUtils;
@@ -202,6 +202,7 @@
 	@Override
 	protected void injectServlets(ServletContext context) {
 		// access restricted servlets
+		serve(context, Constants.R_PATH, GitServlet.class, GitFilter.class);
 		serve(context, Constants.GIT_PATH, GitServlet.class, GitFilter.class);
 		serve(context, Constants.PAGES, PagesServlet.class, PagesFilter.class);
 		serve(context, Constants.RPC_PATH, RpcServlet.class, RpcFilter.class);
diff --git a/src/main/java/com/gitblit/servlet/RpcServlet.java b/src/main/java/com/gitblit/servlet/RpcServlet.java
index 3a115b1..a2013b7 100644
--- a/src/main/java/com/gitblit/servlet/RpcServlet.java
+++ b/src/main/java/com/gitblit/servlet/RpcServlet.java
@@ -32,13 +32,10 @@
 import org.eclipse.jgit.lib.Repository;
 
 import com.gitblit.Constants;
+import com.gitblit.Constants.RpcRequest;
 import com.gitblit.GitBlitException;
 import com.gitblit.IStoredSettings;
 import com.gitblit.Keys;
-import com.gitblit.Constants.RpcRequest;
-import com.gitblit.Keys.federation;
-import com.gitblit.Keys.realm;
-import com.gitblit.Keys.web;
 import com.gitblit.manager.IFederationManager;
 import com.gitblit.manager.IGitblitManager;
 import com.gitblit.manager.IRepositoryManager;
@@ -132,7 +129,7 @@
 			String gitblitUrl = HttpUtils.getGitblitURL(request);
 			StringBuilder sb = new StringBuilder();
 			sb.append(gitblitUrl);
-			sb.append(Constants.GIT_PATH);
+			sb.append(Constants.R_PATH);
 			sb.append("{0}");
 			String cloneUrl = sb.toString();
 
diff --git a/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java b/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java
index 3bef51d..5d2532d 100644
--- a/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java
+++ b/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java
@@ -28,10 +28,9 @@
 import com.gitblit.Constants;
 import com.gitblit.IStoredSettings;
 import com.gitblit.Keys;
-import com.gitblit.Keys.fanout;
+import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.manager.IRepositoryManager;
 import com.gitblit.manager.IRuntimeManager;
-import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.manager.IUserManager;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.UserModel;
@@ -94,7 +93,7 @@
 			repoUrl = repoUrl.substring(0, repoUrl.length() - 4);
 		}
 
-		String servletPath =  Constants.GIT_PATH;
+		String servletPath =  Constants.R_PATH;
 
 		int schemeIndex = repoUrl.indexOf("://") + 3;
 		String host = repoUrl.substring(0, repoUrl.indexOf('/', schemeIndex));
