Merge "Make Branch.NameKey enforce full ref names"
diff --git a/.gitignore b/.gitignore
index 1125f5a..f2cb839 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,4 +22,3 @@
*.swp
*.asc
/bin/
-/UNIT_TEST_GERRIT_SITE
diff --git a/Documentation/config-hooks.txt b/Documentation/config-hooks.txt
index d4f53bf..3068cc5 100644
--- a/Documentation/config-hooks.txt
+++ b/Documentation/config-hooks.txt
@@ -75,7 +75,7 @@
Called whenever a change has been merged.
====
- change-merged --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --commit <sha1>
+ change-merged --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --commit <sha1> --newrev <sha1>
====
=== merge-failed
diff --git a/Documentation/config-reverseproxy.txt b/Documentation/config-reverseproxy.txt
index dde2661..4ba2b3d 100644
--- a/Documentation/config-reverseproxy.txt
+++ b/Documentation/config-reverseproxy.txt
@@ -48,6 +48,8 @@
<Proxy *>
Order deny,allow
Allow from all
+ # Use following line instead of the previous two on Apache >= 2.4
+ # Require all granted
</Proxy>
AllowEncodedSlashes On
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java
index 8755d29..aed5bd6 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/GerritServer.java
@@ -28,6 +28,7 @@
import com.google.gerrit.server.index.ChangeSchemas;
import com.google.gerrit.server.ssh.NoSshModule;
import com.google.gerrit.server.util.SocketUtil;
+import com.google.gerrit.server.util.SystemLog;
import com.google.gerrit.testutil.FakeEmailSender;
import com.google.gerrit.testutil.TempFileUtil;
import com.google.inject.Injector;
@@ -123,6 +124,9 @@
if (desc.memory()) {
site = null;
mergeTestConfig(cfg);
+ // Set the log4j configuration to an invalid one to prevent system logs
+ // from getting configured and creating log files.
+ System.setProperty(SystemLog.LOG4J_CONFIGURATION, "invalidConfiguration");
cfg.setBoolean("httpd", null, "requestLog", false);
cfg.setBoolean("sshd", null, "requestLog", false);
cfg.setBoolean("index", "lucene", "testInmemory", true);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/GerritGwtUI.gwt.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/GerritGwtUI.gwt.xml
index fd717ee..0f5065f 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/GerritGwtUI.gwt.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/GerritGwtUI.gwt.xml
@@ -40,5 +40,8 @@
<set-property name='gwt.logging.logLevel' value='SEVERE'/>
+ <!-- Disable GSS -->
+ <set-configuration-property name='CssResource.enableGss' value='false'/>
+
<entry-point class='com.google.gerrit.client.Gerrit'/>
</module>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/MessageOfTheDayBar.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/MessageOfTheDayBar.ui.xml
index ff50ec6..5f7bebf 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/MessageOfTheDayBar.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/MessageOfTheDayBar.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:c='urn:import:com.google.gwtexpui.globalkey.client'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style>
+ <ui:style gss="false">
.popup {
position: fixed;
top: 5px;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/UserPopupPanel.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/UserPopupPanel.ui.xml
index cd51485..ec50b30 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/UserPopupPanel.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/UserPopupPanel.ui.xml
@@ -19,7 +19,7 @@
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:gerrit='urn:import:com.google.gerrit.client'
xmlns:u='urn:import:com.google.gerrit.client.ui'>
- <ui:style>
+ <ui:style gss="false">
.panel {
padding: 8px;
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccessSectionEditor.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccessSectionEditor.ui.xml
index b31e02e..cc80712 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccessSectionEditor.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccessSectionEditor.ui.xml
@@ -24,7 +24,7 @@
ui:generateLocales='default,en'
>
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
-<ui:style>
+<ui:style gss="false">
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionEditor.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionEditor.ui.xml
index ada070d..f9b445b 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionEditor.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionEditor.ui.xml
@@ -24,7 +24,7 @@
ui:generateLocales='default,en'
>
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
-<ui:style>
+<ui:style gss="false">
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.ui.xml
index 4d322c0..4150eb5 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.ui.xml
@@ -25,7 +25,7 @@
ui:generateLocales='default,en'
>
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
-<ui:style>
+<ui:style gss="false">
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
.panel {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessEditor.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessEditor.ui.xml
index 120824b..f319637 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessEditor.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessEditor.ui.xml
@@ -22,7 +22,7 @@
ui:generateKeys='com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator'
ui:generateLocales='default,en'
>
-<ui:style>
+<ui:style gss="false">
.inheritsFrom {
margin-bottom: 0.5em;
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessScreen.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessScreen.ui.xml
index ab26ba8..519d0e2 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessScreen.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectAccessScreen.ui.xml
@@ -23,7 +23,7 @@
ui:generateKeys='com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator'
ui:generateLocales='default,en'
>
-<ui:style>
+<ui:style gss="false">
@external .gwt-TextArea;
.commitMessage {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ValueEditor.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ValueEditor.ui.xml
index e5f6649..21fac46 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ValueEditor.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ValueEditor.ui.xml
@@ -19,7 +19,7 @@
xmlns:g='urn:import:com.google.gwt.user.client.ui'
>
<ui:with field='ico' type='com.google.gerrit.client.GerritResources'/>
-<ui:style>
+<ui:style gss="false">
.panel {
position: relative;
white-space: nowrap;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ActionMessageBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ActionMessageBox.ui.xml
index d639150..3b05290 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ActionMessageBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ActionMessageBox.ui.xml
@@ -19,7 +19,7 @@
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:c='urn:import:com.google.gwtexpui.globalkey.client'>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style type='com.google.gerrit.client.change.ActionMessageBox.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.change.ActionMessageBox.Style'>
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
.popup { background-color: trimColor; }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml
index 6f8d3aa..3f18522 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml
@@ -21,7 +21,7 @@
xmlns:x='urn:import:com.google.gerrit.client.ui'>
<ui:with field='ico' type='com.google.gerrit.client.GerritResources'/>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style type='com.google.gerrit.client.change.ChangeScreen.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.change.ChangeScreen.Style'>
@eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml
index 93312fa..25671a9 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml
@@ -21,7 +21,7 @@
xmlns:clippy='urn:import:com.google.gwtexpui.clippy.client'>
<ui:with field='ico' type='com.google.gerrit.client.GerritResources'/>
<ui:image field="toggle" src="moreLess.png"/>
- <ui:style type='com.google.gerrit.client.change.CommitBox.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.change.CommitBox.Style'>
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
.collapsed .scroll { height: 250px }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DeleteFileBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DeleteFileBox.ui.xml
index 4e7b2ba..b51fdd7 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DeleteFileBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DeleteFileBox.ui.xml
@@ -19,7 +19,7 @@
xmlns:u='urn:import:com.google.gerrit.client.ui'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style>
+ <ui:style gss="false">
.cancel { float: right; }
</ui:style>
<g:HTMLPanel>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileComments.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileComments.ui.xml
index 5de04cc..74822b0 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileComments.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileComments.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:c='urn:import:com.google.gerrit.client.ui'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style>
+ <ui:style gss="false">
.box {
}
.path {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Hashtags.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Hashtags.ui.xml
index dd06c77..fbf0645 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Hashtags.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Hashtags.ui.xml
@@ -19,7 +19,7 @@
xmlns:c='urn:import:com.google.gwtexpui.globalkey.client'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style>
+ <ui:style gss="false">
button.openAdd {
margin: 3px 3px 0 0;
float: right;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/IncludedInBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/IncludedInBox.ui.xml
index 59b05f0..88ec53f 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/IncludedInBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/IncludedInBox.ui.xml
@@ -17,7 +17,7 @@
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style type='com.google.gerrit.client.change.IncludedInBox.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.change.IncludedInBox.Style'>
.includedInBox {
min-width: 300px;
max-width: 580px;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/LineComment.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/LineComment.ui.xml
index 8dc1245..3a7f375 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/LineComment.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/LineComment.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:c='urn:import:com.google.gerrit.client.ui'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style>
+ <ui:style gss="false">
.box {
position: relative;
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Message.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Message.ui.xml
index 42cb39b..def9a5a 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Message.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Message.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:c='urn:import:com.google.gerrit.client'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style type='com.google.gerrit.client.change.Message.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.change.Message.Style'>
.messageBox {
position: relative;
width: 1168px;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/PatchSetsBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/PatchSetsBox.ui.xml
index bd69cd6..84d6d7d 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/PatchSetsBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/PatchSetsBox.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style type='com.google.gerrit.client.change.PatchSetsBox.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.change.PatchSetsBox.Style'>
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
.revisionBox {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RenameFileBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RenameFileBox.ui.xml
index 27849ee..32d5168 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RenameFileBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RenameFileBox.ui.xml
@@ -20,7 +20,7 @@
xmlns:u='urn:import:com.google.gerrit.client.ui'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style>
+ <ui:style gss="false">
.cancel { float: right; }
</ui:style>
<g:HTMLPanel>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ReplyBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ReplyBox.ui.xml
index a17d648..2fd2109 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ReplyBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ReplyBox.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style type='com.google.gerrit.client.change.ReplyBox.Styles'>
+ <ui:style gss="false" type='com.google.gerrit.client.change.ReplyBox.Styles'>
.replyBox {
}
.label_name {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RevertAction.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RevertAction.java
index 3af97f5..47d6cad 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RevertAction.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RevertAction.java
@@ -22,10 +22,12 @@
import com.google.gerrit.client.ui.TextAreaActionDialog;
import com.google.gerrit.common.PageLinks;
import com.google.gerrit.reviewdb.client.Change;
+import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.PopupPanel;
class RevertAction {
- static void call(Button b, final Change.Id id, final String revision,
+ static void call(final Button b, final Change.Id id, final String revision,
final String commitSubject) {
// TODO Replace ActionDialog with a nicer looking display.
b.setEnabled(false);
@@ -56,6 +58,12 @@
}
});
}
+
+ @Override
+ public void onClose(CloseEvent<PopupPanel> event) {
+ super.onClose(event);
+ b.setEnabled(true);
+ }
}.center();
}
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml
index 9924c1d..06dfaf5 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml
@@ -20,7 +20,7 @@
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:u='urn:import:com.google.gerrit.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style>
+ <ui:style gss="false">
button.openAdd {
margin: 3px 3px 0 0;
float: right;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Topic.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Topic.ui.xml
index ae46b10..3e20b88 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Topic.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Topic.ui.xml
@@ -21,7 +21,7 @@
xmlns:x='urn:import:com.google.gerrit.client.ui'>
<ui:with field='ico' type='com.google.gerrit.client.GerritResources'/>
<ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
- <ui:style>
+ <ui:style gss="false">
.show { cursor: pointer; }
.edit, .cancel { float: right; }
</ui:style>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml
index 1c46b8c..57c1a77 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:c='urn:import:com.google.gwtexpui.globalkey.client'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style>
+ <ui:style gss="false">
.popup {
position: fixed;
bottom: 0;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java
index 2b8dbc9..dd6c41c 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java
@@ -18,7 +18,9 @@
import com.google.gerrit.client.NotFoundScreen;
import com.google.gerrit.client.rpc.Natives;
import com.google.gerrit.client.rpc.ScreenLoadCallback;
+import com.google.gerrit.client.ui.InlineHyperlink;
import com.google.gerrit.client.ui.Screen;
+import com.google.gerrit.common.PageLinks;
import com.google.gerrit.extensions.client.ListChangesOption;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gwt.core.client.JsArray;
@@ -61,10 +63,14 @@
incoming = new ChangeTable.Section();
closed = new ChangeTable.Section();
- outgoing.setTitleText(Util.C.outgoingReviews());
- incoming.setTitleText(Util.C.incomingReviews());
+ String who = mine ? "self" : ownerId.toString();
+ outgoing.setTitleWidget(new InlineHyperlink(Util.C.outgoingReviews(),
+ PageLinks.toChangeQuery(queryOutgoing(who))));
+ incoming.setTitleWidget(new InlineHyperlink(Util.C.incomingReviews(),
+ PageLinks.toChangeQuery(queryIncoming(who))));
incoming.setHighlightUnreviewed(mine);
- closed.setTitleText(Util.C.recentlyClosed());
+ closed.setTitleWidget(new InlineHyperlink(Util.C.recentlyClosed(),
+ PageLinks.toChangeQuery(queryClosed(who))));
table.addSection(outgoing);
table.addSection(incoming);
@@ -73,6 +79,18 @@
table.setSavePointerId("owner:" + ownerId);
}
+ private static String queryOutgoing(String who) {
+ return "is:open owner:" + who;
+ }
+
+ private static String queryIncoming(String who) {
+ return "is:open reviewer:" + who + " -owner:" + who;
+ }
+
+ private static String queryClosed(String who) {
+ return "is:closed (owner:" + who + " OR reviewer:" + who + ")";
+ }
+
@Override
protected void onLoad() {
super.onLoad();
@@ -88,9 +106,9 @@
mine
? EnumSet.of(ListChangesOption.REVIEWED)
: EnumSet.noneOf(ListChangesOption.class),
- "is:open owner:" + who,
- "is:open reviewer:" + who + " -owner:" + who,
- "is:closed (owner:" + who + " OR reviewer:" + who + ") -age:4w limit:10");
+ queryOutgoing(who),
+ queryIncoming(who),
+ queryClosed(who) + " -age:4w limit:10");
}
@Override
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml
index 60e8e0d..4d8c798 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml
@@ -17,7 +17,7 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:d='urn:import:com.google.gerrit.client.diff'>
- <ui:style type='com.google.gerrit.client.diff.DiffTable.DiffTableStyle'>
+ <ui:style gss="false" type='com.google.gerrit.client.diff.DiffTable.DiffTableStyle'>
@external .CodeMirror, .CodeMirror-selectedtext;
@external .CodeMirror-linenumber;
@external .CodeMirror-overlayscroll-vertical, .CodeMirror-scroll;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.ui.xml
index 0c97e8b..4d05381 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.ui.xml
@@ -20,7 +20,7 @@
xmlns:e='urn:import:com.google.gwtexpui.globalkey.client'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.diff.Resources'/>
- <ui:style>
+ <ui:style gss="false">
.draft {
width: 45px;
text-align: center;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml
index c58eef7..bd9b1b6 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/Header.ui.xml
@@ -20,7 +20,7 @@
xmlns:x='urn:import:com.google.gerrit.client.ui'>
<ui:with field='ico' type='com.google.gerrit.client.GerritResources'/>
<ui:with field='res' type='com.google.gerrit.client.diff.Resources'/>
- <ui:style>
+ <ui:style gss="false">
.header {
position: relative;
height: 16px;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/InsertCommentBubble.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/InsertCommentBubble.ui.xml
index d7c8fc9..5c84c93 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/InsertCommentBubble.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/InsertCommentBubble.ui.xml
@@ -18,7 +18,7 @@
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.GerritResources'/>
- <ui:style>
+ <ui:style gss="false">
.bubble {
z-index: 150;
white-space: nowrap;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.ui.xml
index cc8dd74..cda728f 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.ui.xml
@@ -20,7 +20,7 @@
<ui:with field='res' type='com.google.gerrit.client.GerritResources'/>
<ui:with field='patchConstants'
type='com.google.gerrit.client.patches.PatchConstants'/>
- <ui:style type='com.google.gerrit.client.diff.PatchSetSelectBox.BoxStyle'>
+ <ui:style gss="false" type='com.google.gerrit.client.diff.PatchSetSelectBox.BoxStyle'>
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
.table {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.ui.xml
index 62d2eac..edd554b 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.ui.xml
@@ -17,7 +17,7 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:x='urn:import:com.google.gerrit.client.ui'>
- <ui:style type='com.google.gerrit.client.diff.PreferencesBox.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.diff.PreferencesBox.Style'>
@external .gwt-TextBox;
@external .gwt-ToggleButton .html-face;
@external .gwt-ToggleButton-up;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PublishedBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PublishedBox.ui.xml
index bcc34e2..b1cde7b 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PublishedBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PublishedBox.ui.xml
@@ -19,7 +19,7 @@
xmlns:c='urn:import:com.google.gerrit.client'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.diff.Resources'/>
- <ui:style type='com.google.gerrit.client.diff.PublishedBox.Style'>
+ <ui:style gss="false" type='com.google.gerrit.client.diff.PublishedBox.Style'>
.avatar {
position: absolute;
width: 26px;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.ui.xml
index da5b351..4f1a3c5 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.ui.xml
@@ -17,7 +17,7 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:d='urn:import:com.google.gerrit.client.diff'>
- <ui:style>
+ <ui:style gss="false">
.sbs {
margin-left: -5px;
margin-right: -5px;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SkipBar.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SkipBar.ui.xml
index 0ff23a7..4d7b133 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SkipBar.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SkipBar.ui.xml
@@ -16,7 +16,7 @@
-->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style type='com.google.gerrit.client.diff.SkipBar.SkipBarStyle'>
+ <ui:style gss="false" type='com.google.gerrit.client.diff.SkipBar.SkipBarStyle'>
.skipBar {
background-color: #def;
height: 1.3em;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.ui.xml
index 342cd77..9458f50 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.ui.xml
@@ -16,7 +16,7 @@
-->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
- <ui:style>
+ <ui:style gss="false">
.header {
position: relative;
height: 16px;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/CommitMessageBlock.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/CommitMessageBlock.ui.xml
index ca81537..37d3fb7 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/CommitMessageBlock.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/CommitMessageBlock.ui.xml
@@ -20,7 +20,7 @@
<ui:with field='res' type='com.google.gerrit.client.GerritResources'/>
- <ui:style>
+ <ui:style gss="false">
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchScriptSettingsPanel.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchScriptSettingsPanel.ui.xml
index 586b767..be82f66 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchScriptSettingsPanel.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchScriptSettingsPanel.ui.xml
@@ -22,7 +22,7 @@
ui:generateKeys='com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator'
ui:generateLocales='default,en'
>
-<ui:style>
+<ui:style gss="false">
@external .gwt-TextBox;
@external .gwt-ListBox;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml
index 338e950..bfcf2f6 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml
@@ -18,7 +18,7 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.google.gerrit.client.GerritResources'/>
- <ui:style type='com.google.gerrit.client.patches.PatchSetSelectBox.BoxStyle'>
+ <ui:style gss="false" type='com.google.gerrit.client.patches.PatchSetSelectBox.BoxStyle'>
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
diff --git a/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/RefNamesTest.java b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/RefNamesTest.java
new file mode 100644
index 0000000..b0981a7
--- /dev/null
+++ b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/RefNamesTest.java
@@ -0,0 +1,50 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.reviewdb.client;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import org.junit.Test;
+
+public class RefNamesTest {
+ private final Account.Id accountId = new Account.Id(1011123);
+ private final Change.Id changeId = new Change.Id(67473);
+ private final PatchSet.Id psId = new PatchSet.Id(changeId, 42);
+
+ @Test
+ public void fullName() throws Exception {
+ assertThat(RefNames.fullName("refs/meta/config")).isEqualTo("refs/meta/config");
+ assertThat(RefNames.fullName("refs/heads/master")).isEqualTo("refs/heads/master");
+ assertThat(RefNames.fullName("master")).isEqualTo("refs/heads/master");
+ assertThat(RefNames.fullName("refs/tags/v1.0")).isEqualTo("refs/tags/v1.0");
+ }
+
+ @Test
+ public void refsUsers() throws Exception {
+ assertThat(RefNames.refsUsers(accountId)).isEqualTo("refs/users/23/1011123");
+ }
+
+ @Test
+ public void refsDraftComments() throws Exception {
+ assertThat(RefNames.refsDraftComments(accountId, changeId))
+ .isEqualTo("refs/draft-comments/23/1011123-67473");
+ }
+
+ @Test
+ public void refsEdit() throws Exception {
+ assertThat(RefNames.refsEdit(accountId, changeId, psId))
+ .isEqualTo("refs/users/23/1011123/edit-67473/42");
+ }
+}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/events/ChangeEvent.java b/gerrit-server/src/main/java/com/google/gerrit/server/events/ChangeEvent.java
index 9a5ad82..f083b7a 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/events/ChangeEvent.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/events/ChangeEvent.java
@@ -14,10 +14,9 @@
package com.google.gerrit.server.events;
-import static org.eclipse.jgit.lib.Constants.R_HEADS;
-
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.data.ChangeAttribute;
public abstract class ChangeEvent extends RefEvent {
@@ -34,7 +33,7 @@
@Override
public String getRefName() {
- return R_HEADS + change.branch;
+ return RefNames.fullName(change.branch);
}
public Change.Key getChangeKey() {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/BranchOrderSection.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/BranchOrderSection.java
index c447d31..f9844d5 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/BranchOrderSection.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/BranchOrderSection.java
@@ -14,9 +14,9 @@
package com.google.gerrit.server.git;
-import com.google.common.collect.ImmutableList;
+import com.google.gerrit.reviewdb.client.RefNames;
-import org.eclipse.jgit.lib.Constants;
+import com.google.common.collect.ImmutableList;
import java.util.List;
@@ -35,22 +35,14 @@
} else {
ImmutableList.Builder<String> builder = ImmutableList.builder();
for (String b : order) {
- builder.add(fullName(b));
+ builder.add(RefNames.fullName(b));
}
this.order = builder.build();
}
}
- private static String fullName(String branch) {
- if (branch.startsWith(Constants.R_HEADS)) {
- return branch;
- } else {
- return Constants.R_HEADS + branch;
- }
- }
-
public List<String> getMoreStable(String branch) {
- int i = order.indexOf(fullName(branch));
+ int i = order.indexOf(RefNames.fullName(branch));
if (0 <= i) {
return order.subList(i + 1, order.size());
} else {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java
index 0f7599a..b2a4311 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java
@@ -14,7 +14,6 @@
package com.google.gerrit.server.git;
-import com.google.gerrit.common.FileUtil;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.util.SystemLog;
@@ -30,10 +29,8 @@
@Inject
public GarbageCollectionLogFile(SitePaths sitePaths) {
- Path logdir = FileUtil.mkdirsOrDie(sitePaths.logs_dir,
- "Cannot create log directory");
if (SystemLog.shouldConfigure()) {
- initLogSystem(logdir);
+ initLogSystem(sitePaths.logs_dir);
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java
index 5b159fe..9cf7ce0 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java
@@ -352,9 +352,7 @@
while (branch.startsWith("/")) {
branch = branch.substring(1);
}
- if (!branch.startsWith(Constants.R_HEADS)) {
- branch = Constants.R_HEADS + branch;
- }
+ branch = RefNames.fullName(branch);
if (!Repository.isValidRefName(branch)) {
throw new BadRequestException(String.format(
"Branch \"%s\" is not a valid name.", branch));
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
index d14a223..5058f0c 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
@@ -24,8 +24,8 @@
import com.google.gerrit.common.errors.NotSignedInException;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
-import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change;
+import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
@@ -446,16 +446,9 @@
@Operator
public Predicate<ChangeData> branch(String name) {
if (name.startsWith("^")) {
- return ref("^" + branchToRef(name.substring(1)));
+ return ref("^" + RefNames.fullName(name.substring(1)));
}
- return ref(branchToRef(name));
- }
-
- private static String branchToRef(String name) {
- if (!name.startsWith(Branch.R_HEADS)) {
- return Branch.R_HEADS + name;
- }
- return name;
+ return ref(RefNames.fullName(name));
}
@Operator
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/util/SystemLog.java b/gerrit-server/src/main/java/com/google/gerrit/server/util/SystemLog.java
index d4b8457..32cdca5 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/util/SystemLog.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/util/SystemLog.java
@@ -38,10 +38,11 @@
@Singleton
public class SystemLog {
+ private static final org.slf4j.Logger log =
+ LoggerFactory.getLogger(SystemLog.class);
- private static final org.slf4j.Logger log = LoggerFactory
- .getLogger(SystemLog.class);
- private static final String LOG4J_CONFIGURATION = "log4j.configuration";
+ public static final String LOG4J_CONFIGURATION = "log4j.configuration";
+
private final SitePaths site;
private final Config config;
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/git/LocalDiskRepositoryManagerTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/git/LocalDiskRepositoryManagerTest.java
new file mode 100644
index 0000000..2ebad52
--- /dev/null
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/git/LocalDiskRepositoryManagerTest.java
@@ -0,0 +1,233 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.git;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.server.config.SitePaths;
+import com.google.gerrit.server.notedb.NotesMigration;
+import com.google.gerrit.testutil.TempFileUtil;
+import com.google.gwtorm.client.KeyUtil;
+import com.google.gwtorm.server.StandardKeyEncoder;
+
+import org.easymock.EasyMockSupport;
+import org.eclipse.jgit.errors.RepositoryNotFoundException;
+import org.eclipse.jgit.lib.Config;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.lib.RepositoryCache;
+import org.eclipse.jgit.lib.RepositoryCache.FileKey;
+import org.eclipse.jgit.util.FS;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.nio.file.Path;
+
+public class LocalDiskRepositoryManagerTest extends EasyMockSupport {
+
+ static {
+ KeyUtil.setEncoderImpl(new StandardKeyEncoder());
+ }
+
+ private Config cfg;
+ private SitePaths site;
+ private LocalDiskRepositoryManager repoManager;
+
+ @Before
+ public void setUp() throws Exception {
+ site = new SitePaths(TempFileUtil.createTempDirectory().toPath());
+ site.resolve("git").toFile().mkdir();
+ cfg = new Config();
+ cfg.setString("gerrit", null, "basePath", "git");
+ repoManager =
+ new LocalDiskRepositoryManager(site, cfg,
+ createNiceMock(NotesMigration.class));
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void testThatNullBasePathThrowsAnException() {
+ new LocalDiskRepositoryManager(site, new Config(),
+ createNiceMock(NotesMigration.class));
+ }
+
+ @Test
+ public void testProjectCreation() throws Exception {
+ Project.NameKey projectA = new Project.NameKey("projectA");
+ try (Repository repo = repoManager.createRepository(projectA)) {
+ assertThat(repo).isNotNull();
+ }
+ try (Repository repo = repoManager.openRepository(projectA)) {
+ assertThat(repo).isNotNull();
+ }
+ assertThat((Iterable<?>) repoManager.list()).containsExactly(projectA);
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithEmptyName() throws Exception {
+ repoManager.createRepository(new Project.NameKey(""));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithTrailingSlash() throws Exception {
+ repoManager.createRepository(new Project.NameKey("projectA/"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithBackSlash() throws Exception {
+ repoManager.createRepository(new Project.NameKey("a\\projectA"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationAbsolutePath() throws Exception {
+ repoManager.createRepository(new Project.NameKey("/projectA"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationStartingWithDotDot() throws Exception {
+ repoManager.createRepository(new Project.NameKey("../projectA"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationContainsDotDot() throws Exception {
+ repoManager.createRepository(new Project.NameKey("a/../projectA"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationDotPathSegment() throws Exception {
+ repoManager.createRepository(new Project.NameKey("a/./projectA"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithTwoSlashes() throws Exception {
+ repoManager.createRepository(new Project.NameKey("a//projectA"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithPathSegmentEndingByDotGit()
+ throws Exception {
+ repoManager.createRepository(new Project.NameKey("a/b.git/projectA"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithQuestionMark() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project?A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithPercentageSign() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project%A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithWidlcard() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project*A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithColon() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project:A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithLessThatSign() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project<A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithGreaterThatSign() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project>A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithPipe() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project|A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithDollarSign() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project$A"));
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testProjectCreationWithCarriageReturn() throws Exception {
+ repoManager.createRepository(new Project.NameKey("project\\rA"));
+ }
+
+ @Test
+ public void testOpenRepositoryCreatedDirectlyOnDisk() throws Exception {
+ createRepository(repoManager.getBasePath(), "projectA");
+ Project.NameKey projectA = new Project.NameKey("projectA");
+ try (Repository repo = repoManager.openRepository(projectA)) {
+ assertThat(repo).isNotNull();
+ }
+ assertThat((Iterable<?>) repoManager.list()).containsExactly(projectA);
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testOpenRepositoryInvalidName() throws Exception {
+ repoManager.openRepository(new Project.NameKey("project%?|<>A"));
+ }
+
+ @Test
+ public void testList() throws Exception {
+ Project.NameKey projectA = new Project.NameKey("projectA");
+ createRepository(repoManager.getBasePath(), projectA.get());
+
+ Project.NameKey projectB = new Project.NameKey("path/projectB");
+ createRepository(repoManager.getBasePath(), projectB.get());
+
+ Project.NameKey projectC = new Project.NameKey("anotherPath/path/projectC");
+ createRepository(repoManager.getBasePath(), projectC.get());
+ // create an invalid git repo named only .git
+ repoManager.getBasePath().resolve(".git").toFile().mkdir();
+ // create an invalid repo name
+ createRepository(repoManager.getBasePath(), "project?A");
+ assertThat((Iterable<?>) repoManager.list()).containsExactly(projectA,
+ projectB, projectC);
+ }
+
+ @Test
+ public void testGetSetProjectDescription() throws Exception {
+ Project.NameKey projectA = new Project.NameKey("projectA");
+ try (Repository repo = repoManager.createRepository(projectA)) {
+ assertThat(repo).isNotNull();
+ }
+
+ assertThat(repoManager.getProjectDescription(projectA)).isNull();
+ repoManager.setProjectDescription(projectA, "projectA description");
+ assertThat(repoManager.getProjectDescription(projectA)).isEqualTo(
+ "projectA description");
+
+ repoManager.setProjectDescription(projectA, "");
+ assertThat(repoManager.getProjectDescription(projectA)).isNull();
+ }
+
+ @Test(expected = RepositoryNotFoundException.class)
+ public void testGetProjectDescriptionFromUnexistingRepository()
+ throws Exception {
+ repoManager.getProjectDescription(new Project.NameKey("projectA"));
+ }
+
+ private void createRepository(Path directory, String projectName)
+ throws IOException {
+ String n = projectName + Constants.DOT_GIT_EXT;
+ FileKey loc = FileKey.exact(directory.resolve(n).toFile(), FS.DETECTED);
+ try (Repository db = RepositoryCache.open(loc, false)) {
+ db.create(true /* bare */);
+ }
+ }
+}