Improve reject message if Change-Id is in subject
Some users that are new to Git and Gerrit manage to create commits without subject and message, but with a Change-Id footer. This happens mainly from EGit where the Change-Id footer is inserted automatically and users just confirm the commit dialog without typing any subject or message. This results in a commit message that looks like this: " Change-Id: I4bcf4f0bd8ed8da41ce53efd7298b80cec492d64 " Pushing this change for review if Change-Id is required results in the following error message: "remote: ERROR: missing Change-Id in commit message footer remote: Suggestion for commit message: remote: remote: Change-Id: I4bcf4f0bd8ed8da41ce53efd7298b80cec492d64" This confuses the users since a) they have a Change-Id in the commit message and b) the suggested commit message looks like the existing commit message. Handle this special case and provide a specific error message: "missing subject, Change-Id must be in commit message footer" Change-Id: I4bcf4f0bd8ed8da41ce53efd7298b80cec492d64 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
parent
d5db8c0109
commit
4fc2a52980
|
@ -18,6 +18,7 @@ occurring and what can be done to solve it.
|
|||
* link:error-invalid-changeid-line.html[invalid Change-Id line format in commit message footer]
|
||||
* link:error-invalid-committer.html[invalid committer]
|
||||
* 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-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]
|
||||
|
|
|
@ -10,7 +10,6 @@ This error may happen for different reasons:
|
|||
. missing Change-Id in the commit message
|
||||
. Change-Id is contained in the commit message but not in the last
|
||||
paragraph
|
||||
. Change-Id is the only line in the commit message
|
||||
|
||||
You can see the commit messages for existing commits in the history
|
||||
by doing a link:http://www.kernel.org/pub/software/scm/git/docs/git-log.html[git log].
|
||||
|
@ -49,19 +48,6 @@ last paragraph you have to update the commit message and move the
|
|||
Change-ID into the last paragraph. How to update the commit message
|
||||
is explained link:error-push-fails-due-to-commit-message.html[here].
|
||||
|
||||
== Change-Id is the only line in the commit message
|
||||
|
||||
Gerrit does not parse the subject of a commit message for the
|
||||
Change-Id even if this is the only and last paragraph of the commit
|
||||
message.
|
||||
|
||||
If the Change-Id is the only line in the commit message you must update
|
||||
the commit message and insert a subject as the first line in the commit
|
||||
message. The Change-Id must be in the last paragraph of the commit
|
||||
message, i.e. separated from the subject by a blank line. How to update
|
||||
the commit message is explained
|
||||
link:error-push-fails-due-to-commit-message.html[here].
|
||||
|
||||
|
||||
GERRIT
|
||||
------
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
= missing subject; Change-Id must be in commit message footer
|
||||
|
||||
With this error message Gerrit rejects to push a commit to a project
|
||||
which is configured to always require a Change-Id in the commit
|
||||
message if the commit message of the pushed commit does not contain
|
||||
a subject and a message, but only a Change-Id.
|
||||
|
||||
This error happens if the Change-Id is the only line in the commit
|
||||
message.
|
||||
|
||||
You can see the commit messages for existing commits in the history
|
||||
by doing a link:http://www.kernel.org/pub/software/scm/git/docs/git-log.html[git log].
|
||||
|
||||
== Change-Id is the only line in the commit message
|
||||
|
||||
Gerrit does not parse the subject of a commit message for the
|
||||
Change-Id even if this is the only and last paragraph of the commit
|
||||
message.
|
||||
|
||||
If the Change-Id is the only line in the commit message you must update
|
||||
the commit message and insert a subject as the first line in the commit
|
||||
message. The Change-Id must be in the last paragraph of the commit
|
||||
message, i.e. separated from the subject by a blank line. How to update
|
||||
the commit message is explained
|
||||
link:error-push-fails-due-to-commit-message.html[here].
|
||||
|
||||
|
||||
GERRIT
|
||||
------
|
||||
Part of link:error-messages.html[Gerrit Error Messages]
|
||||
|
||||
SEARCHBOX
|
||||
---------
|
|
@ -186,10 +186,19 @@ public class CommitValidators {
|
|||
|
||||
if (idList.isEmpty()) {
|
||||
if (projectControl.getProjectState().isRequireChangeID()) {
|
||||
String errMsg = "missing Change-Id in commit message footer";
|
||||
messages.add(getFixedCommitMsgWithChangeId(
|
||||
errMsg, receiveEvent.commit));
|
||||
throw new CommitValidationException(errMsg, messages);
|
||||
String shortMsg = receiveEvent.commit.getShortMessage();
|
||||
String changeIdPrefix = CHANGE_ID.getName() + ":";
|
||||
if (shortMsg.startsWith(changeIdPrefix)
|
||||
&& shortMsg.substring(changeIdPrefix.length()).trim()
|
||||
.matches("^I[0-9a-f]{8,}.*$")) {
|
||||
throw new CommitValidationException(
|
||||
"missing subject; Change-Id must be in commit message footer");
|
||||
} else {
|
||||
String errMsg = "missing Change-Id in commit message footer";
|
||||
messages.add(getFixedCommitMsgWithChangeId(
|
||||
errMsg, receiveEvent.commit));
|
||||
throw new CommitValidationException(errMsg, messages);
|
||||
}
|
||||
}
|
||||
} else if (idList.size() > 1) {
|
||||
throw new CommitValidationException(
|
||||
|
|
Loading…
Reference in New Issue