Merge "Revert "Append vote information to every review event""
diff --git a/Documentation/access-control.txt b/Documentation/access-control.txt
index ff252f7..acd33c0 100644
--- a/Documentation/access-control.txt
+++ b/Documentation/access-control.txt
@@ -874,7 +874,7 @@
If it's desired to have the possibility to upload temporarily hidden
changes there's a specific permission for that. This enables someone
to add specific reviewers for early feedback before making the change
-publically visible. If you want to allow others than the owners to
+publicly visible. If you want to allow others than the owners to
publish a draft you also need to grant them `Publish Drafts`.
Optional access rights to grant:
diff --git a/Documentation/cmd-set-account.txt b/Documentation/cmd-set-account.txt
index f31f61b..8fb8e0d 100644
--- a/Documentation/cmd-set-account.txt
+++ b/Documentation/cmd-set-account.txt
@@ -65,7 +65,7 @@
Delete an email from this user's account if it exists.
If the email provided is 'ALL', all associated emails are
deleted from this account.
- Maybe supplied more than once to remove multiple emails
+ May be supplied more than once to remove multiple emails
from an account in a single command execution.
--preferred-email::
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index 7df88da..b3e3bc0 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -337,26 +337,27 @@
[[auth.registerUrl]]auth.registerUrl::
+
Target for the "Register" link in the upper right corner. Used only
-when `auth.type` is `LDAP`.
+when `auth.type` is `LDAP`, `LDAP_BIND` or `CUSTOM_EXTENSION`.
+
If not set, no "Register" link is displayed.
[[auth.registerText]]auth.registerText::
+
Text for the "Register" link in the upper right corner. Used only
-when `auth.type` is `LDAP`.
+when `auth.type` is `LDAP`, `LDAP_BIND` or `CUSTOM_EXTENSION`.
+
If not set, defaults to "Register".
[[auth.editFullNameUrl]]auth.editFullNameUrl::
+
Target for the "Edit" button when the user is allowed to edit their
-full name.
+full name. Used only when `auth.type` is `LDAP`, `LDAP_BIND` or
+`CUSTOM_EXTENSION`.
[[auth.httpPasswordUrl]]auth.httpPasswordUrl::
+
Target for the "Obtain Password" link. Used only when `auth.type` is
-`LDAP`, `LDAP_BIND` or `CUSTOM_EXTENSION`.
+`CUSTOM_EXTENSION`.
[[auth.switchAccountUrl]]auth.switchAccountUrl::
+
@@ -1204,7 +1205,7 @@
Size of the buffer to store logging events for asynchronous logging.
Putting a larger value can protect threads from stalling when the
AsyncAppender threads are not fast enough to consume the logging events
-from the buffer. It also protects from loosing log entries in this case.
+from the buffer. It also protects from losing log entries in this case.
+
Default is 64 entries.
@@ -2195,8 +2196,8 @@
Number of threads to use for indexing in background operations, such as
online schema upgrades.
+
-If not set or set to a negative value, defaults to using the same
-thread pool as interactive operations (unless
+If not set or set to a negative value, defaults to logical number of CPU
+cores as returned by the JVM (unless
link:#changeMerge.threadPoolSize[changeMerge.threadPoolSize] is set).
[[index.onlineUpgrade]]index.onlineUpgrade::
diff --git a/Documentation/dev-inspector.txt b/Documentation/dev-inspector.txt
index 2d56283..7c13a7d 100644
--- a/Documentation/dev-inspector.txt
+++ b/Documentation/dev-inspector.txt
@@ -240,7 +240,7 @@
----
[2012-04-17 14:20:30,558] INFO com.google.gerrit.pgm.shell.JythonShell : Jython shell instance created.
-[2012-04-17 14:20:38,005] ERROR com.google.gerrit.pgm.shell.JythonShell : Exception occured while loading file Startup.py :
+[2012-04-17 14:20:38,005] ERROR com.google.gerrit.pgm.shell.JythonShell : Exception occurred while loading file Startup.py :
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
diff --git a/Documentation/prolog-cookbook.txt b/Documentation/prolog-cookbook.txt
index 43caa83..b15c283 100644
--- a/Documentation/prolog-cookbook.txt
+++ b/Documentation/prolog-cookbook.txt
@@ -141,15 +141,14 @@
* `ok(user(ID))` or just `ok(_)` if user info is not important. This status is
used to tell that this label/category has been met.
-* `need(_)` is used to tell that this label/category is needed for change to
- become submittable
-* `reject(user(ID))` or just `reject(_)`. This status is used to tell that
- label/category is blocking change submission
-* `impossible(_)` is used when the logic knows that the change cannot be
- submitted as-is. Administrative intervention is probably required. This is
- meant for cases where the logic requires members of "FooEng" to score
- `Code-Review +2` on a change, but nobody is in group "FooEng". It is to hint
- at permissions misconfigurations.
+* `need(_)` is used to tell that this label/category is needed for the change to
+ become submittable.
+* `reject(user(ID))` or just `reject(_)`. This status is used to tell that this
+ label/category is blocking submission of the change.
+* `impossible(_)` is used when the logic knows that the change cannot be submitted
+ as-is. This is meant for cases where the logic requires members of a specific
+ group to apply a specific label on a change, but no users are in that group.
+ This is usually caused by misconfiguration of permissions.
* `may(_)` allows expression of approval categories that are optional, i.e.
could either be set or unset without ever influencing whether the change
could be submitted.
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt
index c6911f1..138f85f 100644
--- a/Documentation/rest-api-changes.txt
+++ b/Documentation/rest-api-changes.txt
@@ -1687,7 +1687,7 @@
----
When change was rebased on top of latest patch set, response
-"`204 No Content`" is returned. When change edit is aready
+"`204 No Content`" is returned. When change edit is already
based on top of the latest patch set, the response
"`409 Conflict`" is returned.
diff --git a/ReleaseNotes/ReleaseNotes-2.10.1.txt b/ReleaseNotes/ReleaseNotes-2.10.1.txt
index 6ef9073..df70b64 100644
--- a/ReleaseNotes/ReleaseNotes-2.10.1.txt
+++ b/ReleaseNotes/ReleaseNotes-2.10.1.txt
@@ -23,7 +23,7 @@
----
* Several performance improvements when using LDAP, both in the number of LDAP
-requests and in the amount of data transfered.
+requests and in the amount of data transferred.
* Sites using LDAP for authentication but otherwise rely on local Gerrit groups
should set the new `ldap.fetchMemberOfEagerly` option to `false`.
diff --git a/ReleaseNotes/ReleaseNotes-2.10.3.txt b/ReleaseNotes/ReleaseNotes-2.10.3.txt
index 578a1ae..052840d 100644
--- a/ReleaseNotes/ReleaseNotes-2.10.3.txt
+++ b/ReleaseNotes/ReleaseNotes-2.10.3.txt
@@ -33,7 +33,7 @@
+
OpenID auth scheme is aware of optional OAuth2 plugin-based authentication.
This feature is considered to be experimental and hasn't reached full feature set yet.
-Particularly, linking of user identities accross protocol boundaries and even from
+Particularly, linking of user identities across protocol boundaries and even from
one OAuth2 identity to another OAuth2 identity wasn't implemented yet.
Configuration
diff --git a/ReleaseNotes/ReleaseNotes-2.10.4.txt b/ReleaseNotes/ReleaseNotes-2.10.4.txt
index 7de3f41..e221549 100644
--- a/ReleaseNotes/ReleaseNotes-2.10.4.txt
+++ b/ReleaseNotes/ReleaseNotes-2.10.4.txt
@@ -12,7 +12,7 @@
* Support identity linking in hybrid OpenID and OAuth2 authentication.
+
-Linking of user identities accross protocol boundaries and from one OAuth2
+Linking of user identities across protocol boundaries and from one OAuth2
identity to another OAuth2 identity is supported.
* Support identity linking in OAuth2 extension point.
diff --git a/ReleaseNotes/ReleaseNotes-2.11.1.txt b/ReleaseNotes/ReleaseNotes-2.11.1.txt
index 6b0b3f2..eab6d60 100644
--- a/ReleaseNotes/ReleaseNotes-2.11.1.txt
+++ b/ReleaseNotes/ReleaseNotes-2.11.1.txt
@@ -19,7 +19,7 @@
* link:http://code.google.com/p/gerrit/issues/detail?id=321[Issue 321]:
Use in-memory Lucene index for a better reviewer suggestion.
+
-Instead of a linear full text search through a list of accounts use an
+Instead of a linear full text search through a list of accounts, use an
in-memory Lucene index. The index is periodically refreshed. The refresh period
is configurable via the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-gerrit.html#suggest.fullTextSearchRefresh[
@@ -29,7 +29,27 @@
Bug Fixes
---------
-* Fix PatchLineCommentsUtil.draftByChangeAuthor.
+* link:http://code.google.com/p/gerrit/issues/detail?id=3363[Issue 3363]:
+Fix performance degrade in background mergeability checks.
++
+When neither `index.batchThreads` nor `changeMerge.threadPoolSize` was defined,
+the background mergeability check fell back to using an interactive executor.
++
+This led to a severe performance degradation during git push operations because
+the `ref-update` listener was reindexing all open changes on the target branch
+interactively. The degradation increased linearly with number of open changes on
+the target branch.
++
+Now, instead of indexing interactively, it falls back to a batch thread pool
+with the logical number of available CPUs.
+
+* Reduce unnecessary database access when queryng changes.
++
+Searching for changes was retrieving more information than necessary from the
+database. This has been optimized to reduce database access and make better use
+of the secondary index.
+
+* Fix `PatchLineCommentsUtil.draftByChangeAuthor`.
+
There is not a native index for this, and the ReviewDb case was not properly
filtering a result by change.
@@ -53,7 +73,7 @@
edit the `project.config` file.
* link:http://code.google.com/p/gerrit/issues/detail?id=3342[Issue 3342]:
-Log IOExceptions on failure to update project configuration.
+Log `IOException` on failure to update project configuration.
+
Without logging these exceptions it's hard to guess why the update of the
project configuration is failing.
@@ -61,23 +81,55 @@
* Don't show stack trace when failing to build BloomFilter during reindex.
* link:http://code.google.com/p/gerrit/issues/detail?id=3337[Issue 3337]:
-Reenable revert button when revert is cancelled.
+Reenable 'Revert' button when revert is cancelled.
* link:http://code.google.com/p/gerrit/issues/detail?id=3325[Issue 3325]:
Add missing `--newrev` parameter to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-hooks.html#_change_merged[
change-merged hook documentation].
-* Fix gc_log when running in a web container.
+* Fix `gc_log` when running in a web container.
+
-All logs supposed to be in gc_log file were ending up in main log instead when
-deploying Gerrit in a web container.
+All logs supposed to be in the `gc_log` file were ending up in the main log
+instead when deploying Gerrit in a web container.
+
+* Fix binding of SecureStore modules.
++
+The SecureStore modules were not correctly added when Gerrit was deployed in a
+web container with the site path configured using the `gerrit.site_path`
+property.
+
+* link:http://code.google.com/p/gerrit/issues/detail?id=3310[Issue 3310]:
+Fix disabling plugins when Gerrit is running on Windows.
++
+When running Gerrit on Windows it was not possible to disable a plugin due to an
+error renaming the plugin's JAR file.
+
+* Remove temporary GitWeb config on Gerrit exit.
++
+A temporary directory was being created but not removed.
* link:http://code.google.com/p/gerrit/issues/detail?id=3346[Issue 3346]:
Fix typo in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-reverseproxy.html[
Apache 2 configuration documentation].
+* link:http://code.google.com/p/gerrit/issues/detail?id=3346[Issue 3346]:
+Fix incorrect documentatation of
+link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-gerrit.html#auth.registerUrl[
+auth types].
+
+* Replication plugin
+
+** Fix creation of missing repositories.
++
+Missing projects were not being created on the destination.
+
+** Emit replication status events after initial full sync.
++
+When `replicateOnStartup` is enabled, the plugin was not emitting the status
+events after the initial sync.
+
Updates
-------
diff --git a/ReleaseNotes/ReleaseNotes-2.5.txt b/ReleaseNotes/ReleaseNotes-2.5.txt
index cdef554..4abed47 100644
--- a/ReleaseNotes/ReleaseNotes-2.5.txt
+++ b/ReleaseNotes/ReleaseNotes-2.5.txt
@@ -923,11 +923,11 @@
working tree dirty. Eclipse 4 (Juno) still overwrites these files but
doesn't write the timestamp. This should help to keep the working tree
clean. However, since the timestamp is currently present in these
-files, Eclispe 4 would still make them dirty by overwriting and
+files, Eclipse 4 would still make them dirty by overwriting and
effectively removing the timestamp.
+
This change removes the timestamp from these files. This helps those
-using Eclipse 4 and doesn't make it worse for those still using Eclispe
+using Eclipse 4 and doesn't make it worse for those still using Eclipse
3.
* Add Maven profile to skip build of plugin modules
diff --git a/ReleaseNotes/ReleaseNotes-2.8.txt b/ReleaseNotes/ReleaseNotes-2.8.txt
index bc854a2..92cdda2 100644
--- a/ReleaseNotes/ReleaseNotes-2.8.txt
+++ b/ReleaseNotes/ReleaseNotes-2.8.txt
@@ -625,7 +625,7 @@
* Do not persist default project state in `project.config`.
-* Honor the `gerrit.cannonicalWebUrl` setting when opening the browser after init.
+* Honor the `gerrit.canonicalWebUrl` setting when opening the browser after init.
* Fix 'query disabled' error when Query Limit is set.
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/ChunkManager.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/ChunkManager.java
index 4420940..fed8f91 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/ChunkManager.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/ChunkManager.java
@@ -317,7 +317,7 @@
DiffChunkInfo target = chunks.get(res);
CodeMirror targetCm = host.getCmFromSide(target.getSide());
- targetCm.setCursor(Pos.create(target.getStart()));
+ targetCm.setCursor(Pos.create(target.getStart(), 0));
targetCm.focus();
targetCm.scrollToY(
targetCm.heightAtLine(target.getStart(), "local") -
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 c90db3e..99ecc9b 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
@@ -22,7 +22,7 @@
@external .CodeMirror-linenumber;
@external .CodeMirror-overlayscroll-vertical, .CodeMirror-scroll;
@external .CodeMirror-dialog-bottom;
- @external .cm-animate-fat-cursor, .CodeMirror-cursor;
+ @external .CodeMirror-cursor;
.fullscreen {
background-color: #f7f7f7;
@@ -116,18 +116,7 @@
cursor: pointer;
}
.difftable .CodeMirror div.CodeMirror-cursor {
- background: transparent;
- text-decoration: underline;
- border: none;
- z-index: 2;
- }
- .difftable .cm-animate-fat-cursor {
- text-decoration: underline;
- border: none;
- animation: none;
- -webkit-animation: none;
- -moz-animation: none;
- -o-animation: none;
+ border-left: 2px solid black;
}
.difftable .CodeMirror-dialog-bottom {
border-top: 0;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java
index a2155d4..819a11f 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java
@@ -87,7 +87,7 @@
// Resetting the "original text" on focus ensures that we are
// up to date with non-user updates of the text (calls to
// setText()...) and also up to date with user changes which
- // occured after enabling "widget".
+ // occurred after enabling "widget".
tb.addFocusHandler(new FocusHandler() {
@Override
public void onFocus(FocusEvent event) {
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
index f4be9d4..639e5e7 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
+++ b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
@@ -219,7 +219,7 @@
if (lineAtHeight(height - 20) < line) {
scrollToY(heightAtLine(line, "local") - 0.5 * height);
}
- setCursor(Pos.create(line));
+ setCursor(Pos.create(line, 0));
}
public final native ScrollInfo getScrollInfo() /*-{
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
index 15150cf..cf43041 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
@@ -165,6 +165,8 @@
myconfFile.setWritable(true, true /* owner only */);
myconfFile.setReadable(true, true /* owner only */);
+ myconfFile.deleteOnExit();
+
_env.set("GIT_DIR", ".");
_env.set("GITWEB_CONFIG", myconf.toAbsolutePath().toString());
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/JythonShell.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/JythonShell.java
index 547c1a9..ff157ce 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/JythonShell.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/JythonShell.java
@@ -191,9 +191,9 @@
+ " is not found or not executable");
}
} catch (InvocationTargetException e) {
- log.error("Exception occured while loading file " + p + " : ", e);
+ log.error("Exception occurred while loading file " + p + " : ", e);
} catch (SecurityException e) {
- log.error("SecurityException occured while loading file " + p + " : ", e);
+ log.error("SecurityException occurred while loading file " + p + " : ", e);
}
}
@@ -204,7 +204,7 @@
new Object[] { in, p }
);
} catch (InvocationTargetException e) {
- log.error("Exception occured while loading " + p + " : ", e);
+ log.error("Exception occurred while loading " + p + " : ", e);
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexModule.java
index 41df287..0cfc659 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexModule.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexModule.java
@@ -114,7 +114,6 @@
@Singleton
@IndexExecutor(BATCH)
ListeningExecutorService getBatchIndexExecutor(
- @IndexExecutor(INTERACTIVE) ListeningExecutorService interactive,
@GerritServerConfig Config config,
WorkQueue workQueue) {
if (batchExecutor != null) {
@@ -125,7 +124,7 @@
threads = config.getInt("changeMerge", null, "threadPoolSize", 0);
}
if (threads <= 0) {
- return interactive;
+ threads = Runtime.getRuntime().availableProcessors();
}
return MoreExecutors.listeningDecorator(
workQueue.createQueue(threads, "Index-Batch"));
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java
index dcfb52c..926ef44 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/JarPluginProvider.java
@@ -142,7 +142,7 @@
new URLClassLoader(urls.toArray(new URL[urls.size()]),
PluginLoader.parentFor(type));
- JarScanner jarScanner = createJarScanner(srcJar);
+ JarScanner jarScanner = createJarScanner(tmp);
ServerPlugin plugin = new ServerPlugin(name, description.canonicalUrl,
description.user, srcJar, snapshot, jarScanner,
description.dataDir, pluginLoader);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectCache.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectCache.java
index fdff1e7..d451b46 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectCache.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectCache.java
@@ -32,7 +32,7 @@
* Get the cached data for a project by its unique name.
*
* @param projectName name of the project.
- * @return the cached data; null if no such project exists or a error occured.
+ * @return the cached data; null if no such project exists or a error occurred.
* @see #checkedGet(com.google.gerrit.reviewdb.client.Project.NameKey)
*/
public ProjectState get(Project.NameKey projectName);
diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
index e94c9b9..3bc8b58 100644
--- a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
+++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
@@ -211,6 +211,7 @@
private Injector createDbInjector() {
final List<Module> modules = new ArrayList<>();
AbstractModule secureStore = createSecureStoreModule();
+ modules.add(secureStore);
if (sitePath != null) {
Module sitePathModule = new AbstractModule() {
@Override
@@ -244,7 +245,6 @@
});
} else {
- modules.add(secureStore);
modules.add(new LifecycleModule() {
@Override
protected void configure() {