# "version" is the configuration version, currently "1".
version: 1

# "merge" defines how and when pull requests are merged. If the section is
# missing, bulldozer will consider all pull requests and use default settings.
merge:
  # "trigger" defines the set of pull requests considered by bulldozer. If
  # the section is missing, bulldozer considers all pull requests not excluded
  # by the ignore conditions.
  trigger:
    # Pull requests with any of these labels (case-insensitive) are added to
    # the trigger.
    labels: ["status5-mergeready", "status6-bulldozer"]

    # Pull requests where the body or any comment contains any of these
    # substrings are added to the trigger.
    #comment_substrings: ["==MERGE_WHEN_READY=="]

    # Pull requests where any comment matches one of these exact strings are
    # added to the trigger.
    #comments: ["Please merge this pull request!"]

    # Pull requests where the body contains any of these substrings are added
    # to the trigger.
    #pr_body_substrings: ["==MERGE_WHEN_READY=="]

    # Pull requests targeting any of these branches are added to the trigger.
    #branches: ["develop"]

    # Pull requests targeting branches matching any of these regular expressions are added to the trigger.
    #branch_patterns: ["feature/.*"]

  # "ignore" defines the set of pull request ignored by bulldozer. If the
  # section is missing, bulldozer considers all pull requests. It takes the
  # same keys as the "trigger" section.
  ignore:
    labels: ["status0-blocked", "status1-donotmerge", "status2-onice"]

  # "method" defines the merge method. The available options are "merge",
  # "rebase", "squash", and "ff-only".
  method: squash

  # Allows the merge method that is used when auto-merging a PR to be different based on the
  # target branch. The keys of the hash are the target branch name, and the values are the merge method that
  # will be used for PRs targeting that branch. The valid values are the same as for the "method" key.
  # Note: If the target branch does not match any of the specified keys, the "method" key is used instead.
  branch_method:
    develop: squash
    unstable: squash

  # "options" defines additional options for the individual merge methods.
  #options:
  # "squash" options are only used when the merge method is "squash"
  #squash:
  # "title" defines how the title of the commit message is created when
  # generating a squash commit. The options are "pull_request_title",
  # "first_commit_title", and "github_default_title". The default is
  # "pull_request_title".
  #title: "pull_request_title"

  # "body" defines how the body of the commit message is created when
  # generating a squash commit. The options are "pull_request_body",
  # "summarize_commits", and "empty_body". The default is "empty_body".
  #body: "empty_body"

  # If "body" is "pull_request_body", then the commit message will be the
  # part of the pull request body surrounded by "message_delimiter"
  # strings. This is disabled (empty string) by default.
  #message_delimiter: ==COMMIT_MSG==

  # "required_statuses" is a list of additional status contexts that must pass
  # before bulldozer can merge a pull request. This is useful if you want to
  # require extra testing for automated merges, but not for manual merges.
  #required_statuses:
  #- "ci/circleci: ete-tests"

  # If true, bulldozer will delete branches after their pull requests merge.
  delete_after_merge: true

  # If true, bulldozer will merge pull requests with no required checks. This
  # helps to protect against merging branches which inadvertently do not have
  # required status checks.
  allow_merge_with_no_checks: false

# "update" defines how and when to update pull request branches. Unlike with
# merges, if this section is missing, bulldozer will not update any pull requests.
update:
  # "trigger" defines the set of pull requests that should be updated by
  # bulldozer. It accepts the same keys as the trigger in the "merge" block.
  trigger:
    labels: ["status3-needsreview", "status4-needschanges", "status9-workinprogress"]

  # "ignore" defines the set of pull requests that should not be updated by
  # bulldozer. It accepts the same keys as the ignore in the "merge" block.
  ignore:
    labels: ["status5-mergeready", "status6-bulldozer"]

  # If true, bulldozer will ignore updating draft pull requests, unless they
  # explicitly match a configured trigger condition.
  ignore_drafts: true
