# 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
---
github:
  description: "Hop Orchestration Platform"
  homepage: https://hop.apache.org/
  labels:
    - hop
    - java
    - streaming
    - pipelines
    - apache
  features:
    # Enable issues management
    issues: false
    # Enable projects for project management boards
    projects: false
    # Enable wiki for documentation
    wiki: false

  enabled_merge_buttons:
    squash: true
    merge: true
    rebase: false

  notifications:
    commits: commits@hop.apache.org
    jira_options: link label worklog

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