Merge changes from topic 'no-changes-made'
* changes: Remove "no changes made" error case ApprovalCopier: Respect ChangeKind.NO_CHANGE in more cases
This commit is contained in:
@@ -256,10 +256,11 @@ applies if the patch set is a merge commit.
|
|||||||
|
|
||||||
If true, all scores for the label are copied forward when a new
|
If true, all scores for the label are copied forward when a new
|
||||||
patch set is uploaded that is a new merge commit which only
|
patch set is uploaded that is a new merge commit which only
|
||||||
differs from the previous patch set in its first parent. The
|
differs from the previous patch set in its first parent, or has
|
||||||
first parent would be the parent of the merge commit that is part
|
identical parents. The first parent would be the parent of the merge
|
||||||
of the change's target branch, whereas the other parent(s) refer to
|
commit that is part of the change's target branch, whereas the other
|
||||||
the feature branch(es) to be merged.
|
parent(s) refer to the feature branch(es) to be merged.
|
||||||
|
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
|
|
||||||
[[label_copyAllScoresOnTrivialRebase]]
|
[[label_copyAllScoresOnTrivialRebase]]
|
||||||
@@ -269,10 +270,13 @@ If true, all scores for the label are copied forward when a new patch
|
|||||||
set is uploaded that is a trivial rebase. A new patch set is considered
|
set is uploaded that is a trivial rebase. A new patch set is considered
|
||||||
as trivial rebase if the commit message is the same as in the previous
|
as trivial rebase if the commit message is the same as in the previous
|
||||||
patch set and if it has the same code delta as the previous patch set.
|
patch set and if it has the same code delta as the previous patch set.
|
||||||
This is the case if the change was rebased onto a different parent.
|
This is the case if the change was rebased onto a different parent, or
|
||||||
|
if the parent did not change at all.
|
||||||
|
|
||||||
This can be used to enable sticky approvals, reducing turn-around for
|
This can be used to enable sticky approvals, reducing turn-around for
|
||||||
trivial rebases prior to submitting a change.
|
trivial rebases prior to submitting a change.
|
||||||
For the pre-installed Code-Review label this is enabled by default.
|
For the pre-installed Code-Review label this is enabled by default.
|
||||||
|
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
|
|
||||||
[[label_copyAllScoresIfNoCodeChange]]
|
[[label_copyAllScoresIfNoCodeChange]]
|
||||||
@@ -286,6 +290,7 @@ approvals on labels that only depend on the code, reducing turn-around
|
|||||||
if only the commit message is changed prior to submitting a change.
|
if only the commit message is changed prior to submitting a change.
|
||||||
For the Verified label that is installed by the link:pgm-init.html[init]
|
For the Verified label that is installed by the link:pgm-init.html[init]
|
||||||
site program this is enabled by default.
|
site program this is enabled by default.
|
||||||
|
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
|
|
||||||
[[label_copyAllScoresIfNoChange]]
|
[[label_copyAllScoresIfNoChange]]
|
||||||
@@ -297,7 +302,9 @@ message as the previous patch set. This means that only the patch
|
|||||||
set SHA1 is different. This can be used to enable sticky
|
set SHA1 is different. This can be used to enable sticky
|
||||||
approvals, reducing turn-around for this special case.
|
approvals, reducing turn-around for this special case.
|
||||||
It is recommended to leave this enabled for both Verified and
|
It is recommended to leave this enabled for both Verified and
|
||||||
Code-Review labels. Defaults to true.
|
Code-Review labels.
|
||||||
|
|
||||||
|
Defaults to true.
|
||||||
|
|
||||||
[[label_canOverride]]
|
[[label_canOverride]]
|
||||||
=== `label.Label-Name.canOverride`
|
=== `label.Label-Name.canOverride`
|
||||||
|
@@ -20,7 +20,6 @@ occurring and what can be done to solve it.
|
|||||||
* link:error-missing-changeid.html[missing Change-Id in commit message footer]
|
* link:error-missing-changeid.html[missing Change-Id in commit message footer]
|
||||||
* link:error-missing-subject.html[missing subject; Change-Id must be in commit message footer]
|
* link:error-missing-subject.html[missing subject; Change-Id must be in commit message footer]
|
||||||
* link:error-multiple-changeid-lines.html[multiple Change-Id lines in commit message footer]
|
* link:error-multiple-changeid-lines.html[multiple Change-Id lines in commit message footer]
|
||||||
* link:error-no-changes-made.html[no changes made]
|
|
||||||
* link:error-no-common-ancestry.html[no common ancestry]
|
* link:error-no-common-ancestry.html[no common ancestry]
|
||||||
* link:error-no-new-changes.html[no new changes]
|
* link:error-no-new-changes.html[no new changes]
|
||||||
* link:error-non-fast-forward.html[non-fast forward]
|
* link:error-non-fast-forward.html[non-fast forward]
|
||||||
|
@@ -1,23 +0,0 @@
|
|||||||
= no changes made
|
|
||||||
|
|
||||||
With this error message Gerrit rejects to push a commit as a new
|
|
||||||
patch set for a change, if the pushed commit is identical to the
|
|
||||||
current patch set of this change.
|
|
||||||
|
|
||||||
A pushed commit is considered to be identical to the current patch
|
|
||||||
set if
|
|
||||||
|
|
||||||
- the files in the commit,
|
|
||||||
- the commit message,
|
|
||||||
- the author of the commit and
|
|
||||||
- the parents of the commit
|
|
||||||
|
|
||||||
are all identical.
|
|
||||||
|
|
||||||
|
|
||||||
GERRIT
|
|
||||||
------
|
|
||||||
Part of link:error-messages.html[Gerrit Error Messages]
|
|
||||||
|
|
||||||
SEARCHBOX
|
|
||||||
---------
|
|
@@ -133,6 +133,40 @@ public class LabelTypeIT extends AbstractDaemonTest {
|
|||||||
assertApproval(patchSet, 0);
|
assertApproval(patchSet, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void copyAllScoresIfNoCodeChangeAppliesToNoChange() throws Exception {
|
||||||
|
codeReview.setCopyAllScoresIfNoCodeChange(true);
|
||||||
|
codeReview.setCopyAllScoresIfNoChange(false);
|
||||||
|
saveLabelConfig();
|
||||||
|
|
||||||
|
PushOneCommit.Result patchSet = readyPatchSetForNoChangeRebase();
|
||||||
|
rebase(patchSet);
|
||||||
|
assertApproval(patchSet, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void copyAllScoresOnTrivialRebaseAppliesToNoChange() throws Exception {
|
||||||
|
codeReview.setCopyAllScoresOnTrivialRebase(true);
|
||||||
|
codeReview.setCopyAllScoresIfNoChange(false);
|
||||||
|
saveLabelConfig();
|
||||||
|
|
||||||
|
PushOneCommit.Result patchSet = readyPatchSetForNoChangeRebase();
|
||||||
|
rebase(patchSet);
|
||||||
|
assertApproval(patchSet, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void copyAllScoresOnMergeFirstParentUpdateAppliesToNoChange()
|
||||||
|
throws Exception {
|
||||||
|
codeReview.setCopyAllScoresOnMergeFirstParentUpdate(true);
|
||||||
|
codeReview.setCopyAllScoresIfNoChange(false);
|
||||||
|
saveLabelConfig();
|
||||||
|
|
||||||
|
PushOneCommit.Result patchSet = readyPatchSetForNoChangeRebase();
|
||||||
|
rebase(patchSet);
|
||||||
|
assertApproval(patchSet, 1);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void copyAllScoresIfNoChange() throws Exception {
|
public void copyAllScoresIfNoChange() throws Exception {
|
||||||
PushOneCommit.Result patchSet = readyPatchSetForNoChangeRebase();
|
PushOneCommit.Result patchSet = readyPatchSetForNoChangeRebase();
|
||||||
|
@@ -16,10 +16,6 @@ package com.google.gerrit.server;
|
|||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static com.google.gerrit.server.change.ChangeKind.MERGE_FIRST_PARENT_UPDATE;
|
|
||||||
import static com.google.gerrit.server.change.ChangeKind.NO_CHANGE;
|
|
||||||
import static com.google.gerrit.server.change.ChangeKind.NO_CODE_CHANGE;
|
|
||||||
import static com.google.gerrit.server.change.ChangeKind.TRIVIAL_REBASE;
|
|
||||||
|
|
||||||
import com.google.common.collect.HashBasedTable;
|
import com.google.common.collect.HashBasedTable;
|
||||||
import com.google.common.collect.ListMultimap;
|
import com.google.common.collect.ListMultimap;
|
||||||
@@ -173,10 +169,22 @@ public class ApprovalCopier {
|
|||||||
// may not be psId.get() - 1).
|
// may not be psId.get() - 1).
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return (type.isCopyAllScoresOnMergeFirstParentUpdate() && kind == MERGE_FIRST_PARENT_UPDATE)
|
switch (kind) {
|
||||||
|| (type.isCopyAllScoresOnTrivialRebase() && kind == TRIVIAL_REBASE)
|
case MERGE_FIRST_PARENT_UPDATE:
|
||||||
|| (type.isCopyAllScoresIfNoCodeChange() && kind == NO_CODE_CHANGE)
|
return type.isCopyAllScoresOnMergeFirstParentUpdate();
|
||||||
|| (type.isCopyAllScoresIfNoChange() && kind == NO_CHANGE);
|
case NO_CODE_CHANGE:
|
||||||
|
return type.isCopyAllScoresIfNoCodeChange();
|
||||||
|
case TRIVIAL_REBASE:
|
||||||
|
return type.isCopyAllScoresOnTrivialRebase();
|
||||||
|
case NO_CHANGE:
|
||||||
|
return type.isCopyAllScoresIfNoChange()
|
||||||
|
|| type.isCopyAllScoresOnTrivialRebase()
|
||||||
|
|| type.isCopyAllScoresOnMergeFirstParentUpdate()
|
||||||
|
|| type.isCopyAllScoresIfNoCodeChange();
|
||||||
|
case REWORK:
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PatchSetApproval copy(PatchSetApproval src, PatchSet.Id psId) {
|
private static PatchSetApproval copy(PatchSetApproval src, PatchSet.Id psId) {
|
||||||
|
@@ -2073,8 +2073,6 @@ public class ReceiveCommits {
|
|||||||
"(W) No changes between prior commit %s and new commit %s",
|
"(W) No changes between prior commit %s and new commit %s",
|
||||||
reader.abbreviate(priorCommit).name(),
|
reader.abbreviate(priorCommit).name(),
|
||||||
reader.abbreviate(newCommit).name()));
|
reader.abbreviate(newCommit).name()));
|
||||||
reject(inputCommand, "no changes made");
|
|
||||||
return false;
|
|
||||||
} else {
|
} else {
|
||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
msg.append("(W) ");
|
msg.append("(W) ");
|
||||||
|
Reference in New Issue
Block a user