Merge Message Templates

File Names

Possible file names for PR (Pull Request) default merge message templates:

  • .forgejo/default_merge_message/MERGE_TEMPLATE.md
  • .forgejo/default_merge_message/REBASE_TEMPLATE.md
  • .forgejo/default_merge_message/REBASE-MERGE_TEMPLATE.md
  • .forgejo/default_merge_message/SQUASH_TEMPLATE.md
  • .forgejo/default_merge_message/MANUALLY-MERGED_TEMPLATE.md
  • .forgejo/default_merge_message/REBASE-UPDATE-ONLY_TEMPLATE.md

Note: .gitea as the root directory is also recognized and kept only for compatibility reasons.

If Forgejo cannot find the file in the repository, it will search the CustomPath for a folder named default_merge_message which may contain site-wide templates.

Title/Body separation

The first line of the template creates the title, the rest makes the body of the message. Without a template, the default texts are:

  • Title : Merge pull request '[PR title]' ([PR reference]) from [head branch] into [base branch].
  • Body : Reviewed-on: [PR url].

You can customize the title and body of the default message following these rules:

  • To replace each of those sections the first line of the template is used to replace the title and other lines the body.
  • For the title, leading and trailing whitespace is trimmed
  • For the body, trailing whitespace is trimmed from each line
  • If only the title is meant to be changed a single-line template can be used.
  • To keep the default title but change the default body the template needs to start with a newline \n character.
  • To remove the default title (make it empty) any white-space character can be inserted in the first line of the template, as trailing white spaces are trimmed.

Examples

Replace the default title and keep the default body:

Merge Title

Replace the default title and make the default body empty:

Merge Title\n

Keep the default title and replace the default body:

\n
Merge Body

The space in the first line makes the default title empty and replace the default body:

 \n
Merge body

Variables

You can use the following variables enclosed in ${} inside these templates, which follow os.Expand syntax:

  • BaseRepoOwnerName: Base repository owner name of this pull request
  • BaseRepoName: Base repository name of this pull request
  • BaseBranch: Base repository target branch name of this pull request
  • HeadRepoOwnerName: Head repository owner name of this pull request
  • HeadRepoName: Head repository name of this pull request
  • HeadBranch: Head repository branch name of this pull request
  • PullRequestTitle: Pull request’s title
  • PullRequestDescription: Pull request’s description
  • PullRequestPosterName: Pull request’s poster name
  • PullRequestIndex: Pull request’s index number
  • PullRequestReference: Pull request’s reference character with index number, i.e., #1, !2
  • ClosingIssues: A string containing all issues that will be closed by this pull request, i.e., close #1, close #2
  • ReviewedOn: A string containing Reviewed-on: <link> with the link to the pull request
  • ReviewedBy: Lines containing Reviewed-by: <username> <<email>> with the names and emails of the reviewers

Rebase

When rebasing without a merge commit, REBASE_TEMPLATE.md modifies the message of the last commit. The following additional variables are available in this template:

  • CommitTitle: Commit’s title
  • CommitBody: Commit’s body text