From 13417cf9c6eec555b51da49742e47939d2f5715b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 19 Oct 2012 22:47:33 -0400 Subject: [PATCH] Exclude submodules from zip downloads (issue 151) --- src/com/gitblit/client/RepositoriesPanel.java | 108 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 95 insertions(+), 13 deletions(-) diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java index 3e156e9..54158e8 100644 --- a/src/com/gitblit/client/RepositoriesPanel.java +++ b/src/com/gitblit/client/RepositoriesPanel.java @@ -27,7 +27,9 @@ import java.awt.event.MouseEvent; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Map; import javax.swing.JButton; import javax.swing.JLabel; @@ -44,7 +46,9 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableRowSorter; +import com.gitblit.Constants; import com.gitblit.Constants.RpcRequest; +import com.gitblit.Keys; import com.gitblit.models.FeedModel; import com.gitblit.models.RepositoryModel; import com.gitblit.utils.StringUtils; @@ -78,6 +82,8 @@ private JTextField filterTextfield; + private JButton clearCache; + public RepositoriesPanel(GitblitClient gitblit) { super(); this.gitblit = gitblit; @@ -99,6 +105,13 @@ refreshRepositories.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { refreshRepositories(); + } + }); + + clearCache = new JButton(Translation.get("gb.clearCache")); + clearCache.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + clearCache(); } }); @@ -134,12 +147,21 @@ } }); + final JButton logRepository = new JButton(Translation.get("gb.log") + "..."); + logRepository.setEnabled(false); + logRepository.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + RepositoryModel model = getSelectedRepositories().get(0); + showSearchDialog(false, model); + } + }); + final JButton searchRepository = new JButton(Translation.get("gb.search") + "..."); searchRepository.setEnabled(false); searchRepository.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RepositoryModel model = getSelectedRepositories().get(0); - searchRepository(model); + showSearchDialog(true, model); } }); @@ -173,18 +195,20 @@ return; } boolean singleSelection = table.getSelectedRowCount() == 1; - boolean selected = table.getSelectedRow() > -1; + boolean selected = table.getSelectedRow() > -1; if (singleSelection) { RepositoryModel repository = getSelectedRepositories().get(0); browseRepository.setEnabled(repository.hasCommits); + logRepository.setEnabled(repository.hasCommits); searchRepository.setEnabled(repository.hasCommits); subscribeRepository.setEnabled(repository.hasCommits); } else { browseRepository.setEnabled(false); + logRepository.setEnabled(false); searchRepository.setEnabled(false); subscribeRepository.setEnabled(false); } - delRepository.setEnabled(selected); + delRepository.setEnabled(selected); if (selected) { int viewRow = table.getSelectedRow(); int modelRow = table.convertRowIndexToModel(viewRow); @@ -227,16 +251,18 @@ repositoryTablePanel.add(new JScrollPane(table), BorderLayout.CENTER); JPanel repositoryControls = new JPanel(new FlowLayout(FlowLayout.CENTER, Utils.MARGIN, 0)); + repositoryControls.add(clearCache); repositoryControls.add(refreshRepositories); repositoryControls.add(browseRepository); repositoryControls.add(createRepository); repositoryControls.add(editRepository); repositoryControls.add(delRepository); repositoryControls.add(subscribeRepository); + repositoryControls.add(logRepository); repositoryControls.add(searchRepository); setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN)); - header = new HeaderPanel(Translation.get("gb.repositories"), "gitweb-favicon.png"); + header = new HeaderPanel(Translation.get("gb.repositories"), "git-orange-16x16.png"); add(header, BorderLayout.NORTH); add(repositoryTablePanel, BorderLayout.CENTER); add(repositoryControls, BorderLayout.SOUTH); @@ -266,7 +292,10 @@ protected abstract void updateUsersTable(); + protected abstract void updateTeamsTable(); + protected void disableManagement() { + clearCache.setVisible(false); createRepository.setVisible(false); editRepository.setVisible(false); delRepository.setVisible(false); @@ -330,6 +359,26 @@ }; worker.execute(); } + + protected void clearCache() { + GitblitWorker worker = new GitblitWorker(RepositoriesPanel.this, + RpcRequest.CLEAR_REPOSITORY_CACHE) { + @Override + protected Boolean doRequest() throws IOException { + if (gitblit.clearRepositoryCache()) { + gitblit.refreshRepositories(); + return true; + } + return false; + } + + @Override + protected void onSuccess() { + updateTable(false); + } + }; + worker.execute(); + } /** * Displays the create repository dialog and fires a SwingWorker to update @@ -337,14 +386,23 @@ * */ protected void createRepository() { - EditRepositoryDialog dialog = new EditRepositoryDialog(); + EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion()); dialog.setLocationRelativeTo(RepositoriesPanel.this); + dialog.setAccessRestriction(gitblit.getDefaultAccessRestriction()); + dialog.setAuthorizationControl(gitblit.getDefaultAuthorizationControl()); dialog.setUsers(null, gitblit.getUsernames(), null); + dialog.setTeams(gitblit.getTeamnames(), null); dialog.setRepositories(gitblit.getRepositories()); dialog.setFederationSets(gitblit.getFederationSets(), null); + dialog.setIndexedBranches(new ArrayList<String>(Arrays.asList(Constants.DEFAULT_BRANCH)), null); + dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(null), + gitblit.getPreReceiveScriptsInherited(null), null); + dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(null), + gitblit.getPostReceiveScriptsInherited(null), null); dialog.setVisible(true); final RepositoryModel newRepository = dialog.getRepository(); final List<String> permittedUsers = dialog.getPermittedUsers(); + final List<String> permittedTeams = dialog.getPermittedTeams(); if (newRepository == null) { return; } @@ -353,11 +411,15 @@ @Override protected Boolean doRequest() throws IOException { - boolean success = gitblit.createRepository(newRepository, permittedUsers); + boolean success = gitblit.createRepository(newRepository, permittedUsers, + permittedTeams); if (success) { gitblit.refreshRepositories(); if (permittedUsers.size() > 0) { gitblit.refreshUsers(); + } + if (permittedTeams.size() > 0) { + gitblit.refreshTeams(); } } return success; @@ -367,6 +429,7 @@ protected void onSuccess() { updateTable(false); updateUsersTable(); + updateTeamsTable(); } @Override @@ -385,16 +448,31 @@ * @param repository */ protected void editRepository(final RepositoryModel repository) { - EditRepositoryDialog dialog = new EditRepositoryDialog(repository); + EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion(), + repository); dialog.setLocationRelativeTo(RepositoriesPanel.this); List<String> usernames = gitblit.getUsernames(); List<String> members = gitblit.getPermittedUsernames(repository); dialog.setUsers(repository.owner, usernames, members); + dialog.setTeams(gitblit.getTeamnames(), gitblit.getPermittedTeamnames(repository)); dialog.setRepositories(gitblit.getRepositories()); dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets); + List<String> allLocalBranches = new ArrayList<String>(); + allLocalBranches.add(Constants.DEFAULT_BRANCH); + allLocalBranches.addAll(repository.getLocalBranches()); + dialog.setIndexedBranches(allLocalBranches, repository.indexedBranches); + dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(repository), + gitblit.getPreReceiveScriptsInherited(repository), repository.preReceiveScripts); + dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(repository), + gitblit.getPostReceiveScriptsInherited(repository), repository.postReceiveScripts); + if (gitblit.getSettings().hasKey(Keys.groovy.customFields)) { + Map<String, String> map = gitblit.getSettings().get(Keys.groovy.customFields).getMap(); + dialog.setCustomFields(repository, map); + } dialog.setVisible(true); final RepositoryModel revisedRepository = dialog.getRepository(); final List<String> permittedUsers = dialog.getPermittedUsers(); + final List<String> permittedTeams = dialog.getPermittedTeams(); if (revisedRepository == null) { return; } @@ -404,10 +482,11 @@ @Override protected Boolean doRequest() throws IOException { boolean success = gitblit.updateRepository(repository.name, revisedRepository, - permittedUsers); + permittedUsers, permittedTeams); if (success) { gitblit.refreshRepositories(); gitblit.refreshUsers(); + gitblit.refreshTeams(); } return success; } @@ -416,6 +495,7 @@ protected void onSuccess() { updateTable(false); updateUsersTable(); + updateTeamsTable(); } @Override @@ -448,6 +528,7 @@ if (success) { gitblit.refreshRepositories(); gitblit.refreshUsers(); + gitblit.refreshTeams(); } return success; } @@ -456,6 +537,7 @@ protected void onSuccess() { updateTable(false); updateUsersTable(); + updateTeamsTable(); } @Override @@ -467,12 +549,12 @@ } } - protected void searchRepository(final RepositoryModel repository) { - SearchDialog searchDialog = new SearchDialog(gitblit); + private void showSearchDialog(boolean isSearch, final RepositoryModel repository) { + final SearchDialog dialog = new SearchDialog(gitblit, isSearch); if (repository != null) { - searchDialog.selectRepository(repository); + dialog.selectRepository(repository); } - searchDialog.setLocationRelativeTo(this); - searchDialog.setVisible(true); + dialog.setLocationRelativeTo(this); + dialog.setVisible(true); } } -- Gitblit v1.9.1