dev-eclipse.txt: Amend the section on hosted mode debugging

The existing section on hosted mode debugging left out a couple of
steps, and the requirement to use DEVELOPMENT_BECOME_ANY_ACCOUNT
instead of OpenID is not mentioned anywhere.

Change-Id: Iebf7f79f9111c5d2201ecabbc49aed5f0129b690
Add an exponentially rolling garbage collection script

git-exproll is a git garbage collection script aimed
specifically at reducing exccessive garbage collection and
particularly large packfile churn for Gerrit installations.

Excessive garbage collection on "dormant" repos is wasteful
of both CPU and disk IO.  Large packfile churn can lead to
heavy RAM and FS usage on Gerrit servers when the Gerrit
process continues to hold open the old delete packfiles.
This situation is most detrimental when jgit is configured
with large caching parameters.  Aside from these downsides,
running git gc often can be very beneficial to performance
on servers.  This script attempts to implement a git gc
policy which avoids the downsides mentioned above so that
git gc can be comfortably run very regularly.

git-exproll.sh uses keep files to manage which files will
get repacked.  It also uses timestamps on the repos to
detect dormant repos to avoid repacking them at all.  The
primary packfile objective is to keep around a series of
packfiles with sizes spaced out exponentially from each
other, and to roll smaller packfiles into larger ones once
the smaller ones have grown.  This strategy attempts to
balance disk space usage with avoiding rewriting large
packfiles most of the time.

The exponential packing objective above does not save a
large amount of time or CPU, but it does prevent the
packfile churn.  Depending on repo usage, however the
dormant repo detection and avoidance can result in a very
large time savings.

Change-Id: I5e8c3cc02f6ca382d34f62af2cf12a9cb8ffd21e
Update JGit to 2.0.0.201206130900-r.23-gb3dbf19

Change-Id: I629f432dc1b66484df1718a49da605508356f7c7
Don't allow Merger to release the ObjectInserter in PatchListLoader

When a Merger writes out some objects, but then aborts because it
detects a conflict, it releases its ObjectInserter. If the inserter
isn't for the local filesystem, but is a more "exotic" type like
the DfsObjectInserter that buffers data in memory before flushing
to disk, Gerrit loses the successful merge results that did complete.

Override flush and release in the Merger so these are no-ops, but
otherwise delegate all activity to the inserter managed already
in the existing try/finally block. This way when a conflict is
detected and Gerrit auto-resolves it by creating the version with
markers embedded within the operation can still complete.

Change-Id: I86f2cb5cc2f1506444530879058661d1dcb56c1f
Delay flush of ObjectInserter in MergeOp until commit

Instead of flushing the inserter after the merge is done, and then
again when the commit is ready... only flush it when the commit is
ready. This halves the number of flushes performed during MergeOp,
which matters for the DfsInserter as it makes a new pack file at
each flush call. So instead of making 4 packs to submit 2 changes,
Gerrit will now only make 2 packs (one for each change).

Optimizing this further to only make 1 pack for each branch updated
(which is the ideal case) is currently difficult because MergeOp
immediately reads back the commits, trees and blobs it made while
merging the last change. ObjectInserters don't generally support
reading back buffered data, and the DfsInserter really doesn't.

Change-Id: I8e20c92ffdd2ba0e65515eb060036991083c96b6
Merge "dev-eclipse.txt: Amend the section on hosted mode debugging"
Fix attempts to access plugins/<plugin-name>

The URI here was the same length as the context, thus incrementing
the context by 1 and trying to use that as an index into the URI
was resulting in an index error.

Fixed this way we disallow a plugin from serving content on this
page. If we want to allow it this fix needs to change.

Change-Id: I6c26584f46c8049fe3786018d9a09c1612e6a1c2
Fix stream-events documentation

Some attributes contained in the events were not described, for a few
others the name was given in a wrong case.

Change-Id: I3b6b1f400a1b040ca9acfd57b20eef9d2d92aaa5
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Add missing documentation about hook configuration

Add documentation of hook config for `change-restored`, `ref-updated`
and `cla-signed` hooks.

Also fix a couple of minor formatting issues.

Change-Id: I9904f5ddf40002db2f85600dd089be2f3052594f
Merge "Fix stream-events documentation"
Highlight unreviewed changes in dashboard by using change messages

Highlighting unreviewed changes in class ChangeTable2 is not
implemented, we now add it.

The change will be counted as unreviewed in these cases:
  1. For the current patchset, the reviewer doesn't publish
     any change message.
  2. For the current patchset, the reviewer has published a
     change message, but later on the change owner also published
     a change message.

Change-Id: I6bc6391f456d9faeab7f1212b9c0463e7514cc05
Merge "Highlight unreviewed changes in dashboard by using change messages"
Merge "Add missing documentation about hook configuration"
Merge "Add an exponentially rolling garbage collection script"