docs/04_releases.mkd | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/GitFilter.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/GitServlet.java | ●●●●● patch | view | raw | blame | history |
docs/04_releases.mkd
@@ -13,8 +13,9 @@ - Do not index blobs in submodules (issue 119) - Restore original user or team object on failure to update (issue 118) - Fixes to relative path determination in repository search algorithm for symlinks (issue 116) - Fix to GitServlet to allow pushing to symlinked repositories (issue 116) - Repository URL uses `X-Forwarded-Proto` and `X-Forwarded-Port`, if available, for reverse proxy configurations (issue 115) - Fixes to relative path determination in repository searh algorithm for symlinks (issue 116) - Output real RAW content, not simulated RAW content (issue 114) - Fixed Lucene charset encoding bug when reindexing a repository (issue 112) - Fixed null pointer in LdapUserSerivce if account has a null email address (issue 110) src/com/gitblit/GitFilter.java
@@ -32,12 +32,29 @@ */ public class GitFilter extends AccessRestrictionFilter { protected final String gitReceivePack = "/git-receive-pack"; protected static final String gitReceivePack = "/git-receive-pack"; protected final String gitUploadPack = "/git-upload-pack"; protected static final String gitUploadPack = "/git-upload-pack"; protected final String[] suffixes = { gitReceivePack, gitUploadPack, "/info/refs", "/HEAD", protected static final String[] suffixes = { gitReceivePack, gitUploadPack, "/info/refs", "/HEAD", "/objects" }; /** * Extract the repository name from the url. * * @param url * @return repository name */ public static String getRepositoryName(String value) { String repository = value; // get the repository name from the url by finding a known url suffix for (String urlSuffix : suffixes) { if (repository.indexOf(urlSuffix) > -1) { repository = repository.substring(0, repository.indexOf(urlSuffix)); } } return repository; } /** * Extract the repository name from the url. @@ -47,14 +64,7 @@ */ @Override protected String extractRepositoryName(String url) { String repository = url; // get the repository name from the url by finding a known url suffix for (String urlSuffix : suffixes) { if (repository.indexOf(urlSuffix) > -1) { repository = repository.substring(0, repository.indexOf(urlSuffix)); } } return repository; return GitFilter.getRepositoryName(url); } /** src/com/gitblit/GitServlet.java
@@ -51,7 +51,6 @@ import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.ClientLogger; import com.gitblit.utils.FileUtils; import com.gitblit.utils.HttpUtils; import com.gitblit.utils.StringUtils; @@ -94,9 +93,16 @@ @Override public ReceivePack create(HttpServletRequest req, Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { ReceivePack rp = super.create(req, db); // determine repository name from request String repositoryName = req.getPathInfo().substring(1); repositoryName = GitFilter.getRepositoryName(repositoryName); GitblitReceiveHook hook = new GitblitReceiveHook(); hook.repositoryName = repositoryName; hook.gitblitUrl = HttpUtils.getGitblitURL(req); ReceivePack rp = super.create(req, db); rp.setPreReceiveHook(hook); rp.setPostReceiveHook(hook); return rp; @@ -158,6 +164,8 @@ protected final Logger logger = LoggerFactory.getLogger(GitblitReceiveHook.class); protected String repositoryName; protected String gitblitUrl; /** @@ -167,7 +175,7 @@ */ @Override public void onPreReceive(ReceivePack rp, Collection<ReceiveCommand> commands) { RepositoryModel repository = getRepositoryModel(rp); RepositoryModel repository = GitBlit.self().getRepositoryModel(repositoryName); Set<String> scripts = new LinkedHashSet<String>(); scripts.addAll(GitBlit.self().getPreReceiveScriptsInherited(repository)); scripts.addAll(repository.preReceiveScripts); @@ -195,7 +203,7 @@ logger.info("skipping post-receive hooks, no refs created, updated, or removed"); return; } RepositoryModel repository = getRepositoryModel(rp); RepositoryModel repository = GitBlit.self().getRepositoryModel(repositoryName); Set<String> scripts = new LinkedHashSet<String>(); scripts.addAll(GitBlit.self().getPostReceiveScriptsInherited(repository)); scripts.addAll(repository.postReceiveScripts); @@ -204,19 +212,6 @@ // Experimental // runNativeScript(rp, "hooks/post-receive", commands); } /** * Returns the RepositoryModel for the repository we are pushing into. * * @param rp * @return a RepositoryModel */ protected RepositoryModel getRepositoryModel(ReceivePack rp) { Repository repository = rp.getRepository(); String repositoryName = FileUtils.getRelativePath(GitBlit.getRepositoriesFolder(), repository.getDirectory()); RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName); return model; } /**