From fe326255202dcfac8b0991ca9d28e3cf4bcc4fe6 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 23 Oct 2011 12:28:48 -0400 Subject: [PATCH] Per-repository setting to skip summary metrics --- src/com/gitblit/GitBlit.java | 2 ++ src/com/gitblit/wicket/GitBlitWebApp.properties | 4 +++- src/com/gitblit/wicket/pages/EditRepositoryPage.java | 1 + docs/04_releases.mkd | 2 ++ src/com/gitblit/models/RepositoryModel.java | 1 + src/com/gitblit/client/EditRepositoryDialog.java | 7 +++++++ src/com/gitblit/client/RepositoriesTableModel.java | 5 ++++- src/com/gitblit/wicket/pages/EditRepositoryPage.html | 9 +++++---- docs/00_index.mkd | 2 ++ src/com/gitblit/wicket/pages/SummaryPage.java | 6 ++++-- 10 files changed, 31 insertions(+), 8 deletions(-) diff --git a/docs/00_index.mkd b/docs/00_index.mkd index f34fd55..8627269 100644 --- a/docs/00_index.mkd +++ b/docs/00_index.mkd @@ -38,6 +38,8 @@ **New:** *web.enableRpcAdministration = false* - added: reusable JSON RPC client class - added: Gitblit Manager (Java/Swing Application) for remote administration of a Gitblit server. +- added: per-repository setting to skip size calculation (faster repositories page loading) +- added: per-repository setting to skip summary metrics calculation (faster summary page loading) - fixed: federation protocol timestamps. dates are now serialized to the [iso8601](http://en.wikipedia.org/wiki/ISO_8601) standard. **This breaks 0.6.0 federation clients/servers.** - fixed: collision on rename for repositories and users diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd index 4b538ba..e844322 100644 --- a/docs/04_releases.mkd +++ b/docs/04_releases.mkd @@ -12,6 +12,8 @@ **New:** *web.enableRpcAdministration = false* - added: reusable JSON RPC client class - added: Gitblit Manager (Java/Swing Application) for remote administration of a Gitblit server. +- added: per-repository setting to skip size calculation (faster repositories page loading) +- added: per-repository setting to skip summary metrics calculation (faster summary page loading) - fixed: federation protocol timestamps. dates are now serialized to the [iso8601](http://en.wikipedia.org/wiki/ISO_8601) standard. **This breaks 0.6.0 federation clients/servers.** - fixed: collision on rename for repositories and users diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index 49f93e4..ffef94a 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -594,6 +594,7 @@ model.isFrozen = getConfig(config, "isFrozen", false); model.showReadme = getConfig(config, "showReadme", false); model.skipSizeCalculation = getConfig(config, "skipSizeCalculation", false); + model.skipSummaryMetrics = getConfig(config, "skipSummaryMetrics", false); model.federationStrategy = FederationStrategy.fromName(getConfig(config, "federationStrategy", null)); model.federationSets = new ArrayList<String>(Arrays.asList(config.getStringList( @@ -814,6 +815,7 @@ config.setBoolean("gitblit", null, "isFrozen", repository.isFrozen); config.setBoolean("gitblit", null, "showReadme", repository.showReadme); config.setBoolean("gitblit", null, "skipSizeCalculation", repository.skipSizeCalculation); + config.setBoolean("gitblit", null, "skipSummaryMetrics", repository.skipSummaryMetrics); config.setStringList("gitblit", null, "federationSets", repository.federationSets); config.setString("gitblit", null, "federationStrategy", repository.federationStrategy.name()); diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java index c2d8f67..55f5268 100644 --- a/src/com/gitblit/client/EditRepositoryDialog.java +++ b/src/com/gitblit/client/EditRepositoryDialog.java @@ -85,6 +85,8 @@ private JCheckBox skipSizeCalculation; + private JCheckBox skipSummaryMetrics; + private JCheckBox isFrozen; private JComboBox accessRestriction; @@ -150,6 +152,8 @@ anRepository.showReadme); skipSizeCalculation = new JCheckBox(Translation.get("gb.skipSizeCalculationDescription"), anRepository.skipSizeCalculation); + skipSummaryMetrics = new JCheckBox(Translation.get("gb.skipSummaryMetricsDescription"), + anRepository.skipSummaryMetrics); isFrozen = new JCheckBox(Translation.get("gb.isFrozenDescription"), anRepository.isFrozen); accessRestriction = new JComboBox(AccessRestrictionType.values()); @@ -180,6 +184,8 @@ fieldsPanel.add(newFieldPanel(Translation.get("gb.showReadme"), showReadme)); fieldsPanel.add(newFieldPanel(Translation.get("gb.skipSizeCalculation"), skipSizeCalculation)); + fieldsPanel + .add(newFieldPanel(Translation.get("gb.skipSummaryMetrics"), skipSummaryMetrics)); fieldsPanel.add(newFieldPanel(Translation.get("gb.isFrozen"), isFrozen)); usersPalette = new JPalette<String>(); @@ -327,6 +333,7 @@ repository.showRemoteBranches = showRemoteBranches.isSelected(); repository.showReadme = showReadme.isSelected(); repository.skipSizeCalculation = skipSizeCalculation.isSelected(); + repository.skipSummaryMetrics = skipSummaryMetrics.isSelected(); repository.isFrozen = isFrozen.isSelected(); repository.accessRestriction = (AccessRestrictionType) accessRestriction.getSelectedItem(); diff --git a/src/com/gitblit/client/RepositoriesTableModel.java b/src/com/gitblit/client/RepositoriesTableModel.java index 9dd1a99..c3eaf6e 100644 --- a/src/com/gitblit/client/RepositoriesTableModel.java +++ b/src/com/gitblit/client/RepositoriesTableModel.java @@ -117,7 +117,10 @@ case Last_Change: return model.lastChange; case Size: - return model.size; + if (model.hasCommits) { + return model.size; + } + return "(empty)"; } return null; } diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java index 6909f1a..9a774fb 100644 --- a/src/com/gitblit/models/RepositoryModel.java +++ b/src/com/gitblit/models/RepositoryModel.java @@ -51,6 +51,7 @@ public List<String> federationSets; public boolean isFederated; public boolean skipSizeCalculation; + public boolean skipSummaryMetrics; public String frequency; public String origin; public String size; diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties index 6d713e3..ae6f6cf 100644 --- a/src/com/gitblit/wicket/GitBlitWebApp.properties +++ b/src/com/gitblit/wicket/GitBlitWebApp.properties @@ -160,4 +160,6 @@ gb.manage = manage gb.lastLogin = last login gb.skipSizeCalculation = skip size calculation -gb.skipSizeCalculationDescription = do not calculate the repository size \ No newline at end of file +gb.skipSizeCalculationDescription = do not calculate the repository size (reduces page load time) +gb.skipSummaryMetrics = skip summary metrics +gb.skipSummaryMetricsDescription = do not calculate metrics on the summary page (reduces page load time) \ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.html b/src/com/gitblit/wicket/pages/EditRepositoryPage.html index cb21687..27a5448 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.html +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.html @@ -19,14 +19,15 @@ <tr><th><wicket:message key="gb.showRemoteBranches"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showRemoteBranches" tabindex="7" /> <i><wicket:message key="gb.showRemoteBranchesDescription"></wicket:message></i></td></tr> <tr><th><wicket:message key="gb.showReadme"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showReadme" tabindex="8" /> <i><wicket:message key="gb.showReadmeDescription"></wicket:message></i></td></tr> <tr><th><wicket:message key="gb.skipSizeCalculation"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="skipSizeCalculation" tabindex="9" /> <i><wicket:message key="gb.skipSizeCalculationDescription"></wicket:message></i></td></tr> - <tr><th><wicket:message key="gb.isFrozen"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="isFrozen" tabindex="10" /> <i><wicket:message key="gb.isFrozenDescription"></wicket:message></i></td></tr> + <tr><th><wicket:message key="gb.skipSummaryMetrics"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="skipSummaryMetrics" tabindex="10" /> <i><wicket:message key="gb.skipSummaryMetricsDescription"></wicket:message></i></td></tr> + <tr><th><wicket:message key="gb.isFrozen"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="isFrozen" tabindex="11" /> <i><wicket:message key="gb.isFrozenDescription"></wicket:message></i></td></tr> <tr><td colspan="2"><hr></hr></td></tr> - <tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select class="span6" wicket:id="accessRestriction" tabindex="11" /></td></tr> + <tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select class="span6" wicket:id="accessRestriction" tabindex="12" /></td></tr> <tr><th style="vertical-align: top;"><wicket:message key="gb.permittedUsers"></wicket:message></th><td style="padding:2px;"><span wicket:id="users"></span></td></tr> <tr><td colspan="2"><hr></hr></td></tr> - <tr><th><wicket:message key="gb.federationStrategy"></wicket:message></th><td class="edit"><select class="span6" wicket:id="federationStrategy" tabindex="12" /></td></tr> + <tr><th><wicket:message key="gb.federationStrategy"></wicket:message></th><td class="edit"><select class="span6" wicket:id="federationStrategy" tabindex="13" /></td></tr> <tr><th style="vertical-align: top;"><wicket:message key="gb.federationSets"></wicket:message></th><td style="padding:2px;"><span wicket:id="federationSets"></span></td></tr> - <tr><th></th><td class="editButton"><input class="btn" type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="13" /> <input class="btn primary" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="14" /> </td></tr> + <tr><th></th><td class="editButton"><input class="btn" type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="14" /> <input class="btn primary" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="15" /> </td></tr> </tbody> </table> </form> diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java index ee79d50..be88bd5 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -213,6 +213,7 @@ form.add(new CheckBox("showRemoteBranches")); form.add(new CheckBox("showReadme")); form.add(new CheckBox("skipSizeCalculation")); + form.add(new CheckBox("skipSummaryMetrics")); form.add(usersPalette); form.add(federationSetsPalette); diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java index 50810a1..da573d5 100644 --- a/src/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/com/gitblit/wicket/pages/SummaryPage.java @@ -43,6 +43,7 @@ import com.gitblit.Keys; import com.gitblit.models.Metric; import com.gitblit.models.PathModel; +import com.gitblit.models.RepositoryModel; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.MarkdownUtils; import com.gitblit.utils.StringUtils; @@ -64,10 +65,11 @@ int numberRefs = GitBlit.getInteger(Keys.web.summaryRefsCount, 5); Repository r = getRepository(); + RepositoryModel model = getRepositoryModel(); List<Metric> metrics = null; Metric metricsTotal = null; - if (GitBlit.getBoolean(Keys.web.generateActivityGraph, true)) { - metrics = GitBlit.self().getRepositoryDefaultMetrics(getRepositoryModel(), r); + if (!model.skipSummaryMetrics && GitBlit.getBoolean(Keys.web.generateActivityGraph, true)) { + metrics = GitBlit.self().getRepositoryDefaultMetrics(model, r); metricsTotal = metrics.remove(0); } -- Gitblit v1.9.1