From 0c3730b2822853f5945516265ccb61b261d9dad7 Mon Sep 17 00:00:00 2001 From: Sven Selberg Date: Thu, 24 Sep 2015 10:04:32 +0200 Subject: [PATCH 1/6] Remove --recheck-mergeable option from reindex documentation 0916cc3605583c418e396f697ae054263a9dd384 - Replace background mergeability checks with reindexing Removed the --recheck-mergeable option. Change-Id: I11787191a13615b84f0f055bf68a299267097755 --- Documentation/pgm-reindex.txt | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Documentation/pgm-reindex.txt b/Documentation/pgm-reindex.txt index b1116d345e..e1d8e8b04d 100644 --- a/Documentation/pgm-reindex.txt +++ b/Documentation/pgm-reindex.txt @@ -15,15 +15,6 @@ Rebuilds the secondary index. --threads:: Number of threads to use for indexing. ---recheck-mergeable:: - Recheck the mergeable flag on all open changes. For each open change, - look up for which commit the mergeability check was last done and if - this commit is different from the HEAD commit of the change's destination - branch, recompute the mergeability flag of the change by checking if the - commit of the current patch set can be merged into the destination branch. - Because this operation is computationally expensive, it is not enabled - by default. - --schema-version:: Schema version to reindex; default is most recent version. From c4e85f0ae3c402fd7467ad2b50a98392e9a6cfc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Ar=C3=A8s?= Date: Fri, 25 Sep 2015 14:56:06 -0400 Subject: [PATCH 2/6] Fix clone URL in quick-install documentation Bug: Issue 3573 Change-Id: Iecd8817cec119aa1c74c4953f68f9e57fccf19c1 --- Documentation/install-quick.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/install-quick.txt b/Documentation/install-quick.txt index 6138a28a34..f4c12a990e 100644 --- a/Documentation/install-quick.txt +++ b/Documentation/install-quick.txt @@ -163,7 +163,7 @@ This will create a repository that you can clone to work with. Download a local clone of the repository and move into it ---- - user@host:~$ git clone ssh://user@host:29418/demo-project + user@host:~$ git clone ssh://user@localhost:29418/demo-project Cloning into demo-project... remote: Counting objects: 2, done remote: Finding sources: 100% (2/2) From 1f5af647d83da50ce4bf90e0d3c058e68b7be720 Mon Sep 17 00:00:00 2001 From: Hector Oswaldo Caballero Date: Fri, 25 Sep 2015 10:17:37 -0400 Subject: [PATCH 3/6] SystemLog: fix duplicated log lines after reloading a plugin Every time a plugin using 'SystemLog.createAsyncAppender' was reloaded, repeated log messages were added to the log file. So, e.g., the first time the plugin was reloaded the log messages were duplicated, the next reload caused the log messages to be written 3 times and so on. Plugins affected so far include Replication, delete-project and Importer. The problem was an appender being added to the plugin logger at each reload. A mechanism was previously added to remove an existing appender when reloading a plugin to avoid this problem, but it relies in the appender's name to be able to identify and remove an existing appender. The appender's name, however, was never set in the 'createAsyncAppender' method. In that way, when the plugin was reloaded, the old appender was never removed and a new one was added, explaining the multiplication of lines in the log output. Fix this by setting the appender's name. Hence, allow the appender to be correctly identified and removed when the plugin is reloaded. Change-Id: I1118aa69416374a6ff31644ad499655146244124 --- .../src/main/java/com/google/gerrit/server/util/SystemLog.java | 1 + 1 file changed, 1 insertion(+) 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 cf7f11f15f..f885e782e6 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 @@ -72,6 +72,7 @@ public class SystemLog { public AsyncAppender createAsyncAppender(String name, Layout layout) { AsyncAppender async = new AsyncAppender(); + async.setName(name); async.setBlocking(true); async.setBufferSize(config.getInt("core", "asyncLoggingBufferSize", 64)); async.setLocationInfo(false); From a709dc1271232c8d9787701b9685359e886eca23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C5=A1a=20=C5=BDivkov?= Date: Mon, 28 Sep 2015 16:13:19 +0200 Subject: [PATCH 4/6] Add "final" to the public static PLC_ORDER. Without final this could be changed by external classes. This was reported by a Fortify code scan at SAP. Change-Id: Iab765489d83f86187972831fdc34298c2a777a31 --- .../main/java/com/google/gerrit/server/notedb/ChangeNotes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java index 8cb72e93ef..21981ab735 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java @@ -76,7 +76,7 @@ public class ChangeNotes extends AbstractChangeNotes { } }); - public static Comparator PLC_ORDER = + public static final Comparator PLC_ORDER = new Comparator() { @Override public int compare(PatchLineComment c1, PatchLineComment c2) { From 5eb53d7ffd1c589f1f401beed3c0a85d2a04b2bd Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Wed, 18 Feb 2015 13:50:18 +0100 Subject: [PATCH 5/6] Insert Change-Id into access right changes When modifications of access rights are saved for review, a new change is created. Now this change has a Change-Id in the commit message, so that it's easier to manually rework the change and push further patch sets. Bug: issue 2817 Change-Id: I0a6399d731644bdc28147cfd8527e3b692c953da Signed-off-by: Edwin Kempin (cherry picked from commit 8d17f7e5e7eb4ec74c6a0702f05f51f8ce24ca26) --- .../httpd/rpc/project/ReviewProjectAccess.java | 12 +++++++++++- .../com/google/gerrit/server/git/MetaDataUpdate.java | 9 +++++++++ .../google/gerrit/server/git/VersionedMetaData.java | 9 +++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ReviewProjectAccess.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ReviewProjectAccess.java index 9437bbe907..af6c0dabde 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ReviewProjectAccess.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ReviewProjectAccess.java @@ -14,6 +14,7 @@ package com.google.gerrit.httpd.rpc.project; +import com.google.gerrit.common.FooterConstants; import com.google.gerrit.common.Nullable; import com.google.gerrit.common.TimeUtil; import com.google.gerrit.common.data.AccessSection; @@ -100,6 +101,7 @@ public class ReviewProjectAccess extends ProjectAccessHandler { protected Change.Id updateProjectConfig(ProjectControl ctl, ProjectConfig config, MetaDataUpdate md, boolean parentProjectUpdate) throws IOException, OrmException { + md.setInsertChangeId(true); Change.Id changeId = new Change.Id(db.nextChangeId()); RevCommit commit = config.commitToNewRef(md, new PatchSet.Id(changeId, @@ -109,7 +111,7 @@ public class ReviewProjectAccess extends ProjectAccessHandler { } Change change = new Change( - new Change.Key("I" + commit.name()), + getChangeId(commit), changeId, user.getAccountId(), new Branch.NameKey( @@ -133,6 +135,14 @@ public class ReviewProjectAccess extends ProjectAccessHandler { return changeId; } + private static Change.Key getChangeId(RevCommit commit) { + List idList = commit.getFooterLines(FooterConstants.CHANGE_ID); + Change.Key changeKey = !idList.isEmpty() + ? new Change.Key(idList.get(idList.size() - 1).trim()) + : new Change.Key("I" + commit.name()); + return changeKey; + } + private void addProjectOwnersAsReviewers(ChangeResource rsrc) { final String projectOwners = groupBackend.get(SystemGroupBackend.PROJECT_OWNERS).getName(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java index c71c94fda9..840b167638 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java @@ -148,6 +148,7 @@ public class MetaDataUpdate { private final BatchRefUpdate batch; private final CommitBuilder commit; private boolean allowEmpty; + private boolean insertChangeId; @AssistedInject public MetaDataUpdate(GitReferenceUpdated gitRefUpdated, @@ -180,6 +181,10 @@ public class MetaDataUpdate { this.allowEmpty = allowEmpty; } + public void setInsertChangeId(boolean insertChangeId) { + this.insertChangeId = insertChangeId; + } + /** @return batch in which to run the update, or {@code null} for no batch. */ BatchRefUpdate getBatch() { return batch; @@ -202,6 +207,10 @@ public class MetaDataUpdate { return allowEmpty; } + boolean insertChangeId() { + return insertChangeId; + } + public CommitBuilder getCommitBuilder() { return commit; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java index b905f67c87..37df726726 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java @@ -43,6 +43,7 @@ import org.eclipse.jgit.revwalk.RevTree; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.transport.ReceiveCommand; import org.eclipse.jgit.treewalk.TreeWalk; +import org.eclipse.jgit.util.ChangeIdUtil; import org.eclipse.jgit.util.RawParseUtils; import java.io.BufferedReader; @@ -271,6 +272,14 @@ public abstract class VersionedMetaData { commit.addParentId(src); } + if (update.insertChangeId()) { + ObjectId id = + ChangeIdUtil.computeChangeId(res, getRevision(), + commit.getAuthor(), commit.getCommitter(), + commit.getMessage()); + commit.setMessage(ChangeIdUtil.insertId(commit.getMessage(), id)); + } + src = inserter.insert(commit); srcTree = res; } From 318953fdcd414a6bd60e1264bc1f09e4f92f05bc Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Wed, 9 Sep 2015 09:37:54 +0900 Subject: [PATCH 6/6] Allow to push a tag that points to a non-commit object This was fixed in 2.11.1 with change I013c75db9 but was then inadvertently reverted by change If4a2375db which was included in 2.11.2 and 2.11.3. Redo the original fix. Bug: Issue 3328 Change-Id: I85e5e1afc65b1408acd0754f6adbdb6742928aaf --- .../java/com/google/gerrit/server/git/ReceiveCommits.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index 957f28f8b7..16b316fb96 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -2382,7 +2382,11 @@ public class ReceiveCommits { walk.sort(RevSort.NONE); try { Set existing = Sets.newHashSet(); - walk.markStart(walk.parseCommit(cmd.getNewId())); + RevObject parsedObject = walk.parseAny(cmd.getNewId()); + if (!(parsedObject instanceof RevCommit)) { + return; + } + walk.markStart((RevCommit)parsedObject); markHeadsAsUninteresting(walk, existing, cmd.getRefName()); RevCommit c;