|  | = Gerrit Code Review - Commit Validation | 
|  |  | 
|  | Gerrit supports link:dev-plugins.html[plugin-based] validation of | 
|  | commits. | 
|  |  | 
|  | [[new-commit-validation]] | 
|  | == New commit validation | 
|  |  | 
|  |  | 
|  | Plugins implementing the `CommitValidationListener` interface can | 
|  | perform additional validation checks against new commits. | 
|  |  | 
|  | If the commit fails the validation, the plugin can either provide a | 
|  | message that will be sent back to the git client, or throw an exception | 
|  | which will cause the commit to be rejected. | 
|  |  | 
|  | Validation applies to both commits uploaded via `git push`, and new | 
|  | commits generated via Gerrit's Web UI features such as the rebase, revert | 
|  | and cherry-pick buttons. | 
|  |  | 
|  | Out of the box, Gerrit includes a plugin that checks the length of the | 
|  | subject and body lines of commit messages on uploaded commits. | 
|  |  | 
|  | [[pre-merge-validation]] | 
|  | == Pre-merge validation | 
|  |  | 
|  |  | 
|  | Plugins implementing the `MergeValidationListener` interface can | 
|  | perform additional validation checks against commits before they | 
|  | are merged to the git repository. | 
|  |  | 
|  | If the commit fails the validation, the plugin can throw an exception | 
|  | which will cause the merge to fail. | 
|  |  | 
|  | [[pre-upload-validation]] | 
|  | == Pre-upload validation | 
|  |  | 
|  |  | 
|  | Plugins implementing the `UploadValidationListener` interface can | 
|  | perform additional validation checks before any upload operations | 
|  | (clone, fetch, pull). The validation is executed right before Gerrit | 
|  | begins to send a pack back to the git client. | 
|  |  | 
|  | If upload fails the validation, the plugin can throw an exception | 
|  | which will cause the upload to fail and the exception's message text | 
|  | will be reported to the git client. | 
|  |  | 
|  | [[new-project-validation]] | 
|  | == New project validation | 
|  |  | 
|  |  | 
|  | Plugins implementing the `ProjectCreationValidationListener` interface | 
|  | can perform additional validation on project creation based on the | 
|  | input arguments. | 
|  |  | 
|  | E.g. a plugin could use this to enforce a certain name scheme for | 
|  | project names. | 
|  |  | 
|  | [[new-group-validation]] | 
|  | == New group validation | 
|  |  | 
|  |  | 
|  | Plugins implementing the `GroupCreationValidationListener` interface | 
|  | can perform additional validation on group creation based on the | 
|  | input arguments. | 
|  |  | 
|  | E.g. a plugin could use this to enforce a certain name scheme for | 
|  | group names. | 
|  |  | 
|  |  | 
|  | GERRIT | 
|  | ------ | 
|  | Part of link:index.html[Gerrit Code Review] | 
|  |  | 
|  |  | 
|  | SEARCHBOX | 
|  | --------- |