From b7403152813c7fee783e3c999c7f7ae9fbaacce0 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 3 Feb 2012 18:16:16 -0500 Subject: Block pushes to a repository with a working copy (issue 49) --- src/com/gitblit/GitFilter.java | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/com/gitblit/GitFilter.java') diff --git a/src/com/gitblit/GitFilter.java b/src/com/gitblit/GitFilter.java index a7f0fe74..e76fd767 100644 --- a/src/com/gitblit/GitFilter.java +++ b/src/com/gitblit/GitFilter.java @@ -81,6 +81,25 @@ public class GitFilter extends AccessRestrictionFilter { } return null; } + + /** + * Determine if the repository can receive pushes. + * + * @param repository + * @param action + * @return true if the action may be performed + */ + @Override + protected boolean isActionAllowed(RepositoryModel repository, String action) { + if (action.equals(gitReceivePack)) { + // Push request + if (!repository.isBare) { + logger.warn("Gitblit does not allow pushes to repositories with a working copy"); + return false; + } + } + return true; + } /** * Determine if the repository requires authentication. @@ -107,8 +126,8 @@ public class GitFilter extends AccessRestrictionFilter { if (!GitBlit.getBoolean(Keys.git.enableGitServlet, true)) { // Git Servlet disabled return false; - } - boolean readOnly = repository.isFrozen; + } + boolean readOnly = repository.isFrozen; if (readOnly || repository.accessRestriction.atLeast(AccessRestrictionType.PUSH)) { boolean authorizedUser = user.canAccessRepository(repository); if (action.equals(gitReceivePack)) { -- cgit v1.2.3