# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# https://cwiki.apache.org/confluence/display/INFRA/.asf.yaml+features+for+git+repositories
---

notifications:
  commits: commits@hop.apache.org
  issues: issues@hop.apache.org
  pullrequests_status: issues@hop.apache.org
  pullrequests_comment: issues@hop.apache.org

github:
  description: "Hop Orchestration Platform"
  homepage: https://hop.apache.org/
  labels:
    - hop
    - java
    - etl
    - orchestration
    - data-integration
    - streaming
    - pipeline
    - workflow
    - apache
  features:
    # Enable issues management
    issues: true
    # Enable projects for project management boards
    projects: true
    # Enable wiki for documentation
    wiki: false
  collaborators:
    - karta020500

  enabled_merge_buttons:
    squash: true
    merge: true
    rebase: false

  # Attempt to make the auto-generated github emails more easily readable in email clients.
  custom_subjects:
    new_pr: "[PR] {title} ({repository})"
    close_pr: "Re: [PR] {title} ({repository})"
    comment_pr: "Re: [PR] {title} ({repository})"
    diffcomment: "Re: [PR] {title} ({repository})"
    merge_pr: "Re: [PR] {title} ({repository})"
    new_issue: "[I] {title} ({repository})"
    comment_issue: "Re: [I] {title} ({repository})"
    close_issue: "Re: [I] {title} ({repository})"
    catchall: "[GH] {title} ({repository})"
    new_discussion: "[D] {title} ({repository})"
    edit_discussion: "Re: [D] {title} ({repository})"
    close_discussion: "Re: [D] {title} ({repository})"
    close_discussion_with_comment: "Re: [D] {title} ({repository})"
    reopen_discussion: "Re: [D] {title} ({repository})"
    new_comment_discussion: "Re: [D] {title} ({repository})"
    edit_comment_discussion: "Re: [D] {title} ({repository})"
    delete_comment_discussion: "Re: [D] {title} ({repository})"

  #remove ~ when enabling the protection
  protected_branches: ~
#    master:
#      required_pull_request_reviews:
#        required_approving_review_count: 1