| Gerrit Code Review - Mail Templates | 
 | =================================== | 
 |  | 
 | Gerrit uses velocity templates for the bulk of the standard mails it sends out. | 
 | There are builtin default templates which are used if they are not overridden. | 
 | These defaults are also provided as examples so that administrators may copy | 
 | them and easily modify them to tweak their contents. | 
 |  | 
 |  | 
 | Template Locations and Extensions: | 
 | ---------------------------------- | 
 |  | 
 | The default example templates reside under:  `'$site_path'/etc/mail` and are | 
 | terminated with the double extension `.vm.example`. Modifying these example | 
 | files will have no effect on the behavior of Gerrit.  However, copying an | 
 | example template to an equivalently named file without the `.example` extension | 
 | and modifying it will allow an administrator to customize the template. | 
 |  | 
 |  | 
 | Supported Mail Templates: | 
 | ------------------------- | 
 |  | 
 | Each mail that Gerrit sends out is controlled by at least one template.  These | 
 | are listed below.  Change emails are influenced by two additional templates, | 
 | one to set the subject line, and one to set the footer which gets appended to | 
 | all the change emails (see `ChangeSubject.vm` and `ChangeFooter.vm` below.) | 
 |  | 
 | Abandoned.vm | 
 | ~~~~~~~~~~~~ | 
 |  | 
 | The `Abandoned.vm` template will determine the contents of the email related | 
 | to a change being abandoned.  It is a `ChangeEmail`: see `ChangeSubject.vm` and | 
 | `ChangeFooter.vm`. | 
 |  | 
 | ChangeFooter.vm | 
 | ~~~~~~~~~~~~~~~ | 
 |  | 
 | The `ChangeFooter.vm` template will determine the contents of the footer | 
 | text that will be appended to emails related to changes (all `ChangeEmail`s). | 
 |  | 
 | ChangeSubject.vm | 
 | ~~~~~~~~~~~~~~~~ | 
 |  | 
 | The `ChangeSubject.vm` template will determine the contents of the email | 
 | subject line for ALL emails related to changes. | 
 |  | 
 | Comment.vm | 
 | ~~~~~~~~~~ | 
 |  | 
 | The `Comment.vm` template will determine the contents of the email related to | 
 | a user submitting comments on changes.  It is a `ChangeEmail`: see | 
 | `ChangeSubject.vm`, `ChangeFooter.vm` and `CommentFooter.vm`. | 
 |  | 
 | CommentFooter.vm | 
 | ~~~~~~~~~~~~~~~~ | 
 |  | 
 | The `CommentFooter.vm` template will determine the contents of the footer | 
 | text that will be appended to emails related to a user submitting comments on | 
 | changes.  See `ChangeSubject.vm`, `Comment.vm` and `ChangeFooter.vm`. | 
 |  | 
 | CommitMessageEdited.vm | 
 | ~~~~~~~~~~~~~~~~~~~~~~ | 
 |  | 
 | The `CommitMessageEdited.vm` template will determine the contents of the email | 
 | related to a user editing the commit message through the Gerrit UI.  It is a | 
 | `ChangeEmail`: see `ChangeSubject.vm` and `ChangeFooter.vm`. | 
 |  | 
 | Footer.vm | 
 | ~~~~~~~~~ | 
 |  | 
 | The `Footer.vm` template will determine the contents of the footer text | 
 | appended to the end of all outgoing emails after the ChangeFooter and | 
 | CommentFooter. | 
 |  | 
 | Merged.vm | 
 | ~~~~~~~~~ | 
 |  | 
 | The `Merged.vm` template will determine the contents of the email related to | 
 | a change successfully merged to the head.  It is a `ChangeEmail`: see | 
 | `ChangeSubject.vm` and `ChangeFooter.vm`. | 
 |  | 
 | MergeFail.vm | 
 | ~~~~~~~~~~~~ | 
 |  | 
 | The `MergeFail.vm` template will determine the contents of the email related | 
 | to a failure upon attempting to merge a change to the head.  It is a | 
 | `ChangeEmail`: see `ChangeSubject.vm` and `ChangeFooter.vm`. | 
 |  | 
 | NewChange.vm | 
 | ~~~~~~~~~~~~ | 
 |  | 
 | The `NewChange.vm` template will determine the contents of the email related | 
 | to a user submitting a new change for review. It is a `ChangeEmail`: see | 
 | `ChangeSubject.vm` and `ChangeFooter.vm`. | 
 |  | 
 | RebasedPatchSet.vm | 
 | ~~~~~~~~~~~~~~~~~~ | 
 |  | 
 | The `RebasedPatchSet.vm` template will determine the contents of the email | 
 | related to a user rebasing a patchset for a change through the Gerrit UI. | 
 | It is a `ChangeEmail`: see `ChangeSubject.vm` and `ChangeFooter.vm`. | 
 |  | 
 | RegisterNewEmail.vm | 
 | ~~~~~~~~~~~~~~~~~~~ | 
 |  | 
 | The `RegisterNewEmail.vm` template will determine the contents of the email | 
 | related to registering new email accounts. | 
 |  | 
 | ReplacePatchSet.vm | 
 | ~~~~~~~~~~~~~~~~~~ | 
 |  | 
 | The `ReplacePatchSet.vm` template will determine the contents of the email | 
 | related to a user submitting a new patchset for a change.  It is a | 
 | `ChangeEmail`: see `ChangeSubject.vm` and `ChangeFooter.vm`. | 
 |  | 
 | Restored.vm | 
 | ~~~~~~~~~~~ | 
 |  | 
 | The `Restored.vm` template will determine the contents of the email related | 
 | to a change being restored.  It is a `ChangeEmail`: see `ChangeSubject.vm` and | 
 | `ChangeFooter.vm`. | 
 |  | 
 | Reverted.vm | 
 | ~~~~~~~~~~~ | 
 |  | 
 | The `Reverted.vm` template will determine the contents of the email related | 
 | to a change being reverted.  It is a `ChangeEmail`: see `ChangeSubject.vm` and | 
 | `ChangeFooter.vm`. | 
 |  | 
 |  | 
 | Mail Variables and Methods | 
 | -------------------------- | 
 |  | 
 | Mail templates can access and display objects currently made available to them | 
 | via the velocity context.  While the base objects are documented here, it is | 
 | possible to call public methods on these objects from templates.  Those methods | 
 | are not documented here since they could change with every release.  As these | 
 | templates are meant to be modified only by a qualified sysadmin, it is accepted | 
 | that writing templates for Gerrit emails is likely to require some basic | 
 | knowledge of the class structure to be useful.  Browsing the source code might | 
 | be necessary for anything more than a minor formatting change. | 
 |  | 
 | Warning | 
 | ~~~~~~~ | 
 |  | 
 | Be aware that modifying templates can cause them to fail to parse and therefore | 
 | not send out the actual email, or worse, calling methods on the available | 
 | objects could have internal side effects which would adversely affect the | 
 | health of your Gerrit server and/or data. | 
 |  | 
 | All OutgoingEmails | 
 | ~~~~~~~~~~~~~~~~~~ | 
 |  | 
 | All outgoing emails have the following variables available to them: | 
 |  | 
 | $email:: | 
 | + | 
 | A reference to the class constructing the current `OutgoingEmail`.  With this | 
 | reference it is possible to call any public method on the OutgoingEmail class | 
 | or the current child class inherited from it. | 
 |  | 
 | $messageClass:: | 
 | + | 
 | A String containing the messageClass. | 
 |  | 
 | $StringUtils:: | 
 | + | 
 | A reference to the Apache `StringUtils` class.  This can be very useful for | 
 | formatting strings. | 
 |  | 
 | Change Emails | 
 | ~~~~~~~~~~~~~ | 
 |  | 
 | All change related emails have the following additional variables available to them: | 
 |  | 
 | $change:: | 
 | + | 
 | A reference to the current `Change` object. | 
 |  | 
 | $changeId:: | 
 | + | 
 | Id of the current change (a `Change.Key`). | 
 |  | 
 | $coverLetter:: | 
 | + | 
 | The text of the `ChangeMessage`. | 
 |  | 
 | $branch:: | 
 | + | 
 | A reference to the branch of this change (a `Branch.NameKey`). | 
 |  | 
 | $fromName:: | 
 | + | 
 | The name of the from user. | 
 |  | 
 | $projectName:: | 
 | + | 
 | The name of this change's project. | 
 |  | 
 | $patchSet:: | 
 | + | 
 | A reference to the current `PatchSet`. | 
 |  | 
 | $patchSetInfo:: | 
 | + | 
 | A reference to the current `PatchSetInfo`. | 
 |  | 
 |  | 
 | See Also | 
 | -------- | 
 |  | 
 | * link:http://velocity.apache.org/[velocity] | 
 |  | 
 | GERRIT | 
 | ------ | 
 | Part of link:index.html[Gerrit Code Review] |