# 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/git+-+.asf.yaml+features

github:
  description: "Fineract Credit Scorecard - A credit scoring module for Apache Fineract (https://github.com/apache/fineract)"
  homepage: https://fineract.apache.org/
  features:
    # Enable issues management
    issues: true
    # Enable projects for project management boards
    projects: true
    # Enable wiki for documentation
    wiki: false

  enabled_merge_buttons:
    squash: true
    merge: false
    rebase: true

  protected_branches:
    develop:
      required_status_checks:
        # strict means "Require branches to be up to date before merging".
        strict: true
