Change-Id: I3cd332a6509e434d901e1b262600f4c8ce57752btags/v1.4.0
- Removed the repository setting to enable Markdown document enumeration, this is now automatic and expanded | - Removed the repository setting to enable Markdown document enumeration, this is now automatic and expanded | ||||
- Retrieve LDAP groups with dereferencing aliases (pr-122) | - Retrieve LDAP groups with dereferencing aliases (pr-122) | ||||
- Revised committer verification to require a matching displayname or account name AND the email address | - 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: | 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 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) | - Added branch graph image servlet based on EGit's branch graph renderer (issue-194) |
public static final String DEFAULT_USER_REPOSITORY_PREFIX = "~"; | 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 GIT_PATH = "/git/"; | ||||
public static final String ZIP_PATH = "/zip/"; | public static final String ZIP_PATH = "/zip/"; |
package com.gitblit.git; | package com.gitblit.git; | ||||
import javax.inject.Inject; | import javax.inject.Inject; | ||||
import javax.inject.Singleton; | |||||
import javax.servlet.ServletConfig; | import javax.servlet.ServletConfig; | ||||
import javax.servlet.ServletException; | import javax.servlet.ServletException; | ||||
import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
* @author James Moger | * @author James Moger | ||||
* | * | ||||
*/ | */ | ||||
@Singleton | |||||
public class GitServlet extends org.eclipse.jgit.http.server.GitServlet { | public class GitServlet extends org.eclipse.jgit.http.server.GitServlet { | ||||
private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; |
// Determine the Gitblit clone url | // Determine the Gitblit clone url | ||||
StringBuilder sb = new StringBuilder(); | StringBuilder sb = new StringBuilder(); | ||||
sb.append(gitblitUrl); | sb.append(gitblitUrl); | ||||
sb.append(Constants.GIT_PATH); | |||||
sb.append(Constants.R_PATH); | |||||
sb.append("{0}"); | sb.append("{0}"); | ||||
String cloneUrl = sb.toString(); | String cloneUrl = sb.toString(); | ||||
protected String getRepositoryUrl(HttpServletRequest request, String username, RepositoryModel repository) { | protected String getRepositoryUrl(HttpServletRequest request, String username, RepositoryModel repository) { | ||||
StringBuilder sb = new StringBuilder(); | StringBuilder sb = new StringBuilder(); | ||||
sb.append(HttpUtils.getGitblitURL(request)); | sb.append(HttpUtils.getGitblitURL(request)); | ||||
sb.append(Constants.GIT_PATH); | |||||
sb.append(Constants.R_PATH); | |||||
sb.append(repository.name); | sb.append(repository.name); | ||||
// inject username into repository url if authentication is required | // inject username into repository url if authentication is required |
import java.text.MessageFormat; | import java.text.MessageFormat; | ||||
import javax.inject.Inject; | 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.GitBlitException; | ||||
import com.gitblit.IStoredSettings; | import com.gitblit.IStoredSettings; | ||||
import com.gitblit.Keys; | 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.IRepositoryManager; | ||||
import com.gitblit.manager.IRuntimeManager; | import com.gitblit.manager.IRuntimeManager; | ||||
import com.gitblit.manager.IAuthenticationManager; | |||||
import com.gitblit.models.RepositoryModel; | import com.gitblit.models.RepositoryModel; | ||||
import com.gitblit.models.UserModel; | import com.gitblit.models.UserModel; | ||||
import com.gitblit.utils.StringUtils; | import com.gitblit.utils.StringUtils; | ||||
* @author James Moger | * @author James Moger | ||||
* | * | ||||
*/ | */ | ||||
@Singleton | |||||
public class GitFilter extends AccessRestrictionFilter { | public class GitFilter extends AccessRestrictionFilter { | ||||
protected static final String gitReceivePack = "/git-receive-pack"; | protected static final String gitReceivePack = "/git-receive-pack"; |
import com.gitblit.WebXmlSettings; | import com.gitblit.WebXmlSettings; | ||||
import com.gitblit.dagger.DaggerContextListener; | import com.gitblit.dagger.DaggerContextListener; | ||||
import com.gitblit.git.GitServlet; | import com.gitblit.git.GitServlet; | ||||
import com.gitblit.manager.IAuthenticationManager; | |||||
import com.gitblit.manager.IFederationManager; | import com.gitblit.manager.IFederationManager; | ||||
import com.gitblit.manager.IGitblitManager; | import com.gitblit.manager.IGitblitManager; | ||||
import com.gitblit.manager.IManager; | import com.gitblit.manager.IManager; | ||||
import com.gitblit.manager.IRepositoryManager; | import com.gitblit.manager.IRepositoryManager; | ||||
import com.gitblit.manager.IRuntimeManager; | import com.gitblit.manager.IRuntimeManager; | ||||
import com.gitblit.manager.IServicesManager; | import com.gitblit.manager.IServicesManager; | ||||
import com.gitblit.manager.IAuthenticationManager; | |||||
import com.gitblit.manager.IUserManager; | import com.gitblit.manager.IUserManager; | ||||
import com.gitblit.utils.ContainerUtils; | import com.gitblit.utils.ContainerUtils; | ||||
import com.gitblit.utils.StringUtils; | import com.gitblit.utils.StringUtils; | ||||
@Override | @Override | ||||
protected void injectServlets(ServletContext context) { | protected void injectServlets(ServletContext context) { | ||||
// access restricted servlets | // access restricted servlets | ||||
serve(context, Constants.R_PATH, GitServlet.class, GitFilter.class); | |||||
serve(context, Constants.GIT_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.PAGES, PagesServlet.class, PagesFilter.class); | ||||
serve(context, Constants.RPC_PATH, RpcServlet.class, RpcFilter.class); | serve(context, Constants.RPC_PATH, RpcServlet.class, RpcFilter.class); |
import org.eclipse.jgit.lib.Repository; | import org.eclipse.jgit.lib.Repository; | ||||
import com.gitblit.Constants; | import com.gitblit.Constants; | ||||
import com.gitblit.Constants.RpcRequest; | |||||
import com.gitblit.GitBlitException; | import com.gitblit.GitBlitException; | ||||
import com.gitblit.IStoredSettings; | import com.gitblit.IStoredSettings; | ||||
import com.gitblit.Keys; | 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.IFederationManager; | ||||
import com.gitblit.manager.IGitblitManager; | import com.gitblit.manager.IGitblitManager; | ||||
import com.gitblit.manager.IRepositoryManager; | import com.gitblit.manager.IRepositoryManager; | ||||
String gitblitUrl = HttpUtils.getGitblitURL(request); | String gitblitUrl = HttpUtils.getGitblitURL(request); | ||||
StringBuilder sb = new StringBuilder(); | StringBuilder sb = new StringBuilder(); | ||||
sb.append(gitblitUrl); | sb.append(gitblitUrl); | ||||
sb.append(Constants.GIT_PATH); | |||||
sb.append(Constants.R_PATH); | |||||
sb.append("{0}"); | sb.append("{0}"); | ||||
String cloneUrl = sb.toString(); | String cloneUrl = sb.toString(); | ||||
import com.gitblit.Constants; | import com.gitblit.Constants; | ||||
import com.gitblit.IStoredSettings; | import com.gitblit.IStoredSettings; | ||||
import com.gitblit.Keys; | import com.gitblit.Keys; | ||||
import com.gitblit.Keys.fanout; | |||||
import com.gitblit.manager.IAuthenticationManager; | |||||
import com.gitblit.manager.IRepositoryManager; | import com.gitblit.manager.IRepositoryManager; | ||||
import com.gitblit.manager.IRuntimeManager; | import com.gitblit.manager.IRuntimeManager; | ||||
import com.gitblit.manager.IAuthenticationManager; | |||||
import com.gitblit.manager.IUserManager; | import com.gitblit.manager.IUserManager; | ||||
import com.gitblit.models.RepositoryModel; | import com.gitblit.models.RepositoryModel; | ||||
import com.gitblit.models.UserModel; | import com.gitblit.models.UserModel; | ||||
repoUrl = repoUrl.substring(0, repoUrl.length() - 4); | repoUrl = repoUrl.substring(0, repoUrl.length() - 4); | ||||
} | } | ||||
String servletPath = Constants.GIT_PATH; | |||||
String servletPath = Constants.R_PATH; | |||||
int schemeIndex = repoUrl.indexOf("://") + 3; | int schemeIndex = repoUrl.indexOf("://") + 3; | ||||
String host = repoUrl.substring(0, repoUrl.indexOf('/', schemeIndex)); | String host = repoUrl.substring(0, repoUrl.indexOf('/', schemeIndex)); |