# 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.

# This file controls the integration of InLong project with ASF infrastructure. Refer to
# https://cwiki.apache.org/confluence/display/INFRA/.asf.yaml+features+for+git+repositories for
# details. Be careful when changing the contents of this file since it may affect many developers
# of the project and make sure to discuss the changes with dev@ before committing.

github:
  description: "Apache InLong - a one-stop integration framework for massive data"
  homepage: https://inlong.apache.org/
  labels:
    - inlong
    - one-stop-service
    - massive-data-integration
    - framework
    - data-streaming
    - event-streaming
  features:
    # Enable wiki for documentation
    wiki: true
    # Enable issues management
    issues: true
    # Enable projects for project management boards
    projects: true
  enabled_merge_buttons:
    # enable squash button:
    squash:  true
    # disable merge button:
    merge:   false
    # disable rebase button:
    rebase:  false
  # enable the dependabot_alerts
  dependabot_alerts: true
  # disable the dependabot_updates
  dependabot_updates: false

notifications:
  commits:              commits@inlong.apache.org
  issues:               dev@inlong.apache.org
  pullrequests_status:  commits@inlong.apache.org
  pullrequests_comment: commits@inlong.apache.org
  issues_status:        dev@inlong.apache.org
  issues_comment:       commits@inlong.apache.org
